openapi: 3.2.0 info: title: Soda Cloud API v4 Datasources API 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: Data Sources description: Soda Cloud API Datasource Endpoints paths: /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: - Data Sources 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: - Data Sources /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: - Data Sources /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: - Data Sources /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: - Data Sources 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: - Data Sources /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: - Data Sources 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: - Data Sources /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: - Data Sources 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: - Data Sources 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: - Data Sources /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: - Data Sources 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: - Data Sources /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: - Data Sources /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: - Data Sources /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: - Data Sources /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: - Data Sources 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: - Data Sources components: schemas: FailedRowSamplesDTO: type: object properties: enabled: type: boolean sampleSize: type: integer format: int32 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 ErrorResponse: type: object properties: code: type: string message: type: string 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 PublicApiCreateDatasourceRequestDTO: type: object properties: configurationFileContents: type: string label: type: string runnerId: type: string required: - configurationFileContents PublicApiDeleteDatasourceResponse: type: object properties: message: type: string PublicApiUpdateDatasourceResponse: type: object properties: datasource: type: object $ref: '#/components/schemas/PublicApiDatasourceDTO' PublicApiUpdateDatasourceRequestDTO: type: object properties: configurationFileContents: type: string label: type: string runnerId: type: string DatasourceResponsibilityContentRequestDTO: type: object properties: roleId: type: string type: type: object $ref: '#/components/schemas/ResponsibilityTypeDTO' userGroupId: type: string userId: type: string required: - roleId - type 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 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 PublicApiTestConnectionStateDTO: type: string enum: - queued - processing - completed - failed - cancelled ResponsibilityTypeDTO: type: string enum: - user - userGroup FailedRowsCollectionStrategyTypeDTO: type: string enum: - useDefaultMaxRowCount - absolute - percentage 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 PublicApiDatasourceDiagnosticsWarehouseResponse_ActionButtonDTO: type: object properties: enabled: type: boolean title: type: string url: type: string PublicApiDeleteDatasourceRoleResponse: type: object properties: message: type: string required: - message PublicApiGetDatasourceResponse: type: object properties: datasource: type: object $ref: '#/components/schemas/PublicApiDatasourceDTO' PublicApiOnboardingStateDTO: type: string enum: - queued - processing - completed - failed - cancelled PublicApiTestConnectionRequestDTO: type: object properties: configurationFileContents: type: string runnerId: type: string required: - configurationFileContents - runnerId PublicApiCreateDatasourceResponse: type: object properties: datasource: type: object $ref: '#/components/schemas/PublicApiDatasourceDTO' discoveryScanId: type: string PublicApiDatasourceDiagnosticsWarehouseResponse_ScanAndResultsConfigurationDTO: type: object properties: enabled: type: boolean 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 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 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 PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO_ScanAndResultsConfigurationRequestDTO: type: object properties: enabled: type: boolean ThresholdConditionDTO: type: string enum: - greaterThan - lessThan 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 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 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 PublicApiOnboardDatasetsRequestDTO: type: object properties: discoveredDatasetIds: type: array items: type: string required: - discoveredDatasetIds PublicApiCreateDatasourceRoleResponse: type: object properties: datasourceRole: type: object $ref: '#/components/schemas/DatasourceRoleContentDTO' required: - datasourceRole 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 PublicApiUpdateDatasourceResponsibilitiesRequestDTO: type: object properties: responsibilities: type: array items: type: object $ref: '#/components/schemas/DatasourceResponsibilityContentRequestDTO' required: - responsibilities PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO_ActionButtonRequestDTO: type: object properties: enabled: type: boolean title: type: string url: type: string 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 PublicApiDatasourceRoleRequestDTO: type: object properties: createDatasets: type: boolean deleteDatasource: type: boolean manageDatasourceSettings: type: boolean managePermissions: type: boolean name: type: string viewDatasource: type: boolean required: - name 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 PublicApiUpdateDatasourceRoleResponse: type: object properties: datasourceRole: type: object $ref: '#/components/schemas/DatasourceRoleContentDTO' required: - datasourceRole securitySchemes: basicAuthApiKey: scheme: basic type: http cookieToken: in: cookie name: token type: apiKey