Soda Datasources API
The Datasources surface of the Soda Cloud v4 API — 18 operation(s) across 11 path(s).
The Datasources surface of the Soda Cloud v4 API — 18 operation(s) across 11 path(s).
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/soda-data-datasources-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
# 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 — Datasources
version: v1
description: The Datasources surface of the Soda Cloud v4 public REST API — 18 operation(s). Harvested
verbatim from the OpenAPI documents Soda publishes 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: Datasources
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:
- 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/ErrorRe
# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/soda-data/refs/heads/main/openapi/soda-data-datasources-api-openapi.yml