openapi: 3.0.3 info: title: PostHog actions external_data_sources API version: 1.0.0 description: '' tags: - name: external_data_sources paths: /api/environments/{environment_id}/external_data_sources/: get: operationId: environments_external_data_sources_list description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedExternalDataSourceSerializersList' description: '' deprecated: true x-explicit-tags: - data_warehouse post: operationId: environments_external_data_sources_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceCreate' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceCreate' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' description: '' deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/: get: operationId: environments_external_data_sources_retrieve description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' description: '' deprecated: true x-explicit-tags: - data_warehouse put: operationId: environments_external_data_sources_update description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' description: '' deprecated: true x-explicit-tags: - data_warehouse patch: operationId: environments_external_data_sources_partial_update description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' description: '' deprecated: true x-explicit-tags: - data_warehouse delete: operationId: environments_external_data_sources_destroy description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:write responses: '204': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/bulk_update_schemas/: patch: operationId: environments_external_data_sources_bulk_update_schemas_partial_update description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalDataSourceBulkUpdateSchemas' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalDataSourceBulkUpdateSchemas' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalDataSourceBulkUpdateSchemas' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedExternalDataSchemaList' description: '' deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/create_webhook/: post: operationId: environments_external_data_sources_create_webhook_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/delete_webhook/: post: operationId: environments_external_data_sources_delete_webhook_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/jobs/: get: operationId: environments_external_data_sources_jobs_retrieve description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/refresh_schemas/: post: operationId: environments_external_data_sources_refresh_schemas_create description: Fetch current schema/table list from the source and create any new ExternalDataSchema rows (no data sync). parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/reload/: post: operationId: environments_external_data_sources_reload_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/revenue_analytics_config/: patch: operationId: environments_external_data_sources_revenue_analytics_config_partial_update description: Update the revenue analytics configuration and return the full external data source. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/update_webhook_inputs/: post: operationId: environments_external_data_sources_update_webhook_inputs_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/{id}/webhook_info/: get: operationId: environments_external_data_sources_webhook_info_retrieve description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/check_cdc_prerequisites/: post: operationId: environments_external_data_sources_check_cdc_prerequisites_create description: 'Validate CDC prerequisites against a live Postgres connection. Used by the source wizard to surface ✅/❌ checks before source creation, and by the self-managed setup popup to verify user-created publications.' parameters: - $ref: '#/components/parameters/EnvironmentIdPath' tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': content: application/json: schema: type: object properties: valid: type: boolean errors: type: array items: type: string description: Whether the Postgres database satisfies CDC prerequisites. '400': description: Invalid config, disallowed host, or connection failure. deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/connections/: get: operationId: environments_external_data_sources_connections_list description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedExternalDataSourceConnectionOptionList' description: '' deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/database_schema/: post: operationId: environments_external_data_sources_database_schema_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/DatabaseSchemaRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DatabaseSchemaRequest' multipart/form-data: schema: $ref: '#/components/schemas/DatabaseSchemaRequest' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/source_prefix/: post: operationId: environments_external_data_sources_source_prefix_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/environments/{environment_id}/external_data_sources/wizard/: get: operationId: environments_external_data_sources_wizard_retrieve description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/EnvironmentIdPath' tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': description: No response body deprecated: true x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/: get: operationId: external_data_sources_list description: Create, Read, Update and Delete External data Sources. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - $ref: '#/components/parameters/ProjectIdPath' - name: search required: false in: query description: A search term. schema: type: string tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedExternalDataSourceSerializersList' description: '' x-explicit-tags: - data_warehouse post: operationId: external_data_sources_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceCreate' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceCreate' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' description: '' x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/: get: operationId: external_data_sources_retrieve description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' description: '' x-explicit-tags: - data_warehouse put: operationId: external_data_sources_update description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' description: '' x-explicit-tags: - data_warehouse patch: operationId: external_data_sources_partial_update description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' description: '' x-explicit-tags: - data_warehouse delete: operationId: external_data_sources_destroy description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:write responses: '204': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/bulk_update_schemas/: patch: operationId: external_data_sources_bulk_update_schemas_partial_update description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - $ref: '#/components/parameters/ProjectIdPath' - name: search required: false in: query description: A search term. schema: type: string tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalDataSourceBulkUpdateSchemas' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalDataSourceBulkUpdateSchemas' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalDataSourceBulkUpdateSchemas' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedExternalDataSchemaList' description: '' x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/create_webhook/: post: operationId: external_data_sources_create_webhook_create description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/delete_webhook/: post: operationId: external_data_sources_delete_webhook_create description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/jobs/: get: operationId: external_data_sources_jobs_retrieve description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/refresh_schemas/: post: operationId: external_data_sources_refresh_schemas_create description: Fetch current schema/table list from the source and create any new ExternalDataSchema rows (no data sync). parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/reload/: post: operationId: external_data_sources_reload_create description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/revenue_analytics_config/: patch: operationId: external_data_sources_revenue_analytics_config_partial_update description: Update the revenue analytics configuration and return the full external data source. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalDataSourceSerializers' security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/update_webhook_inputs/: post: operationId: external_data_sources_update_webhook_inputs_create description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/{id}/webhook_info/: get: operationId: external_data_sources_webhook_info_retrieve description: Create, Read, Update and Delete External data Sources. parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this external data source. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/check_cdc_prerequisites/: post: operationId: external_data_sources_check_cdc_prerequisites_create description: 'Validate CDC prerequisites against a live Postgres connection. Used by the source wizard to surface ✅/❌ checks before source creation, and by the self-managed setup popup to verify user-created publications.' parameters: - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': content: application/json: schema: type: object properties: valid: type: boolean errors: type: array items: type: string description: Whether the Postgres database satisfies CDC prerequisites. '400': description: Invalid config, disallowed host, or connection failure. x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/connections/: get: operationId: external_data_sources_connections_list description: Create, Read, Update and Delete External data Sources. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - $ref: '#/components/parameters/ProjectIdPath' - name: search required: false in: query description: A search term. schema: type: string tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedExternalDataSourceConnectionOptionList' description: '' x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/database_schema/: post: operationId: external_data_sources_database_schema_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/DatabaseSchemaRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DatabaseSchemaRequest' multipart/form-data: schema: $ref: '#/components/schemas/DatabaseSchemaRequest' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/source_prefix/: post: operationId: external_data_sources_source_prefix_create description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' multipart/form-data: schema: $ref: '#/components/schemas/ExternalDataSourceSerializers' required: true security: - PersonalAPIKeyAuth: - external_data_source:write responses: '200': description: No response body x-explicit-tags: - data_warehouse /api/projects/{project_id}/external_data_sources/wizard/: get: operationId: external_data_sources_wizard_retrieve description: Create, Read, Update and Delete External data Sources. parameters: - $ref: '#/components/parameters/ProjectIdPath' tags: - external_data_sources security: - PersonalAPIKeyAuth: - external_data_source:read responses: '200': description: No response body x-explicit-tags: - data_warehouse components: schemas: SyncFrequencyEnum: enum: - never - 1min - 5min - 15min - 30min - 1hour - 6hour - 12hour - 24hour - 7day - 30day type: string description: '* `never` - never * `1min` - 1min * `5min` - 5min * `15min` - 15min * `30min` - 30min * `1hour` - 1hour * `6hour` - 6hour * `12hour` - 12hour * `24hour` - 24hour * `7day` - 7day * `30day` - 30day' PatchedExternalDataSourceBulkUpdateSchemas: type: object properties: schemas: type: array items: $ref: '#/components/schemas/ExternalDataSourceBulkUpdateSchema' description: Schema updates to apply in a single batch. ExternalDataSourceCreate: type: object properties: source_type: allOf: - $ref: '#/components/schemas/ExternalDataSourceTypeEnum' description: 'The source type (e.g. ''Postgres'', ''Stripe''). * `Ashby` - Ashby * `Supabase` - Supabase * `CustomerIO` - CustomerIO * `Github` - Github * `Stripe` - Stripe * `Hubspot` - Hubspot * `Postgres` - Postgres * `Zendesk` - Zendesk * `Snowflake` - Snowflake * `Salesforce` - Salesforce * `MySQL` - MySQL * `MongoDB` - MongoDB * `MSSQL` - MSSQL * `Vitally` - Vitally * `BigQuery` - BigQuery * `Chargebee` - Chargebee * `Clerk` - Clerk * `GoogleAds` - GoogleAds * `TemporalIO` - TemporalIO * `DoIt` - DoIt * `GoogleSheets` - GoogleSheets * `MetaAds` - MetaAds * `Klaviyo` - Klaviyo * `Mailchimp` - Mailchimp * `Braze` - Braze * `Mailjet` - Mailjet * `Redshift` - Redshift * `Polar` - Polar * `RevenueCat` - RevenueCat * `LinkedinAds` - LinkedinAds * `RedditAds` - RedditAds * `TikTokAds` - TikTokAds * `BingAds` - BingAds * `Shopify` - Shopify * `Attio` - Attio * `SnapchatAds` - SnapchatAds * `Linear` - Linear * `Intercom` - Intercom * `Amplitude` - Amplitude * `Mixpanel` - Mixpanel * `Jira` - Jira * `ActiveCampaign` - ActiveCampaign * `Marketo` - Marketo * `Adjust` - Adjust * `AppsFlyer` - AppsFlyer * `Freshdesk` - Freshdesk * `GoogleAnalytics` - GoogleAnalytics * `Pipedrive` - Pipedrive * `SendGrid` - SendGrid * `Slack` - Slack * `PagerDuty` - PagerDuty * `Asana` - Asana * `Notion` - Notion * `Airtable` - Airtable * `Greenhouse` - Greenhouse * `BambooHR` - BambooHR * `Lever` - Lever * `GitLab` - GitLab * `Datadog` - Datadog * `Sentry` - Sentry * `Pendo` - Pendo * `FullStory` - FullStory * `AmazonAds` - AmazonAds * `PinterestAds` - PinterestAds * `AppleSearchAds` - AppleSearchAds * `QuickBooks` - QuickBooks * `Xero` - Xero * `NetSuite` - NetSuite * `WooCommerce` - WooCommerce * `BigCommerce` - BigCommerce * `PayPal` - PayPal * `Square` - Square * `Zoom` - Zoom * `Trello` - Trello * `Monday` - Monday * `ClickUp` - ClickUp * `Confluence` - Confluence * `Recurly` - Recurly * `SalesLoft` - SalesLoft * `Outreach` - Outreach * `Gong` - Gong * `Calendly` - Calendly * `Typeform` - Typeform * `Iterable` - Iterable * `ZohoCRM` - ZohoCRM * `Close` - Close * `Oracle` - Oracle * `DynamoDB` - DynamoDB * `Elasticsearch` - Elasticsearch * `Kafka` - Kafka * `LaunchDarkly` - LaunchDarkly * `Braintree` - Braintree * `Recharge` - Recharge * `HelpScout` - HelpScout * `Gorgias` - Gorgias * `Instagram` - Instagram * `YouTubeAnalytics` - YouTubeAnalytics * `FacebookPages` - FacebookPages * `TwitterAds` - TwitterAds * `Workday` - Workday * `ServiceNow` - ServiceNow * `Pardot` - Pardot * `Copper` - Copper * `Front` - Front * `ChartMogul` - ChartMogul * `Zuora` - Zuora * `Paddle` - Paddle * `CircleCI` - CircleCI * `CockroachDB` - CockroachDB * `Firebase` - Firebase * `AzureBlob` - AzureBlob * `GoogleDrive` - GoogleDrive * `OneDrive` - OneDrive * `SharePoint` - SharePoint * `Box` - Box * `SFTP` - SFTP * `MicrosoftTeams` - MicrosoftTeams * `Aircall` - Aircall * `Webflow` - Webflow * `Okta` - Okta * `Auth0` - Auth0 * `Productboard` - Productboard * `Smartsheet` - Smartsheet * `Wrike` - Wrike * `Plaid` - Plaid * `SurveyMonkey` - SurveyMonkey * `Eventbrite` - Eventbrite * `RingCentral` - RingCentral * `Twilio` - Twilio * `Freshsales` - Freshsales * `Shortcut` - Shortcut * `ConvertKit` - ConvertKit * `Drip` - Drip * `CampaignMonitor` - CampaignMonitor * `MailerLite` - MailerLite * `Omnisend` - Omnisend * `Brevo` - Brevo * `Postmark` - Postmark * `Granola` - Granola * `BuildBetter` - BuildBetter * `Convex` - Convex * `ClickHouse` - ClickHouse * `Plain` - Plain * `Resend` - Resend' payload: type: object additionalProperties: true description: Connection credentials and a 'schemas' array. Keys depend on source_type. prefix: type: string nullable: true description: Table name prefix in HogQL. maxLength: 100 description: type: string nullable: true description: Human-readable description. maxLength: 400 access_method: allOf: - $ref: '#/components/schemas/AccessMethodEnum' default: warehouse description: 'Connection mode: ''warehouse'' (import) or ''direct'' (live query). * `warehouse` - warehouse * `direct` - direct' created_via: allOf: - $ref: '#/components/schemas/CreatedViaEnum' default: api description: 'Where the request came from * `web` - web * `api` - api * `mcp` - mcp' required: - payload - source_type NullEnum: enum: - null ExternalDataSourceRevenueAnalyticsConfig: type: object properties: enabled: type: boolean include_invoiceless_charges: type: boolean CreatedViaEnum: enum: - web - api - mcp type: string description: '* `web` - web * `api` - api * `mcp` - mcp' IncrementalFieldTypeEnum: enum: - integer - numeric - datetime - date - timestamp - objectid type: string description: '* `integer` - integer * `numeric` - numeric * `datetime` - datetime * `date` - date * `timestamp` - timestamp * `objectid` - objectid' EngineEnum: enum: - duckdb - postgres type: string description: '* `duckdb` - duckdb * `postgres` - postgres' PaginatedExternalDataSchemaList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/ExternalDataSchema' PaginatedExternalDataSourceSerializersList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/ExternalDataSourceSerializers' PaginatedExternalDataSourceConnectionOptionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/ExternalDataSourceConnectionOption' ExternalDataSourceTypeEnum: enum: - Ashby - Supabase - CustomerIO - Github - Stripe - Hubspot - Postgres - Zendesk - Snowflake - Salesforce - MySQL - MongoDB - MSSQL - Vitally - BigQuery - Chargebee - Clerk - GoogleAds - TemporalIO - DoIt - GoogleSheets - MetaAds - Klaviyo - Mailchimp - Braze - Mailjet - Redshift - Polar - RevenueCat - LinkedinAds - RedditAds - TikTokAds - BingAds - Shopify - Attio - SnapchatAds - Linear - Intercom - Amplitude - Mixpanel - Jira - ActiveCampaign - Marketo - Adjust - AppsFlyer - Freshdesk - GoogleAnalytics - Pipedrive - SendGrid - Slack - PagerDuty - Asana - Notion - Airtable - Greenhouse - BambooHR - Lever - GitLab - Datadog - Sentry - Pendo - FullStory - AmazonAds - PinterestAds - AppleSearchAds - QuickBooks - Xero - NetSuite - WooCommerce - BigCommerce - PayPal - Square - Zoom - Trello - Monday - ClickUp - Confluence - Recurly - SalesLoft - Outreach - Gong - Calendly - Typeform - Iterable - ZohoCRM - Close - Oracle - DynamoDB - Elasticsearch - Kafka - LaunchDarkly - Braintree - Recharge - HelpScout - Gorgias - Instagram - YouTubeAnalytics - FacebookPages - TwitterAds - Workday - ServiceNow - Pardot - Copper - Front - ChartMogul - Zuora - Paddle - CircleCI - CockroachDB - Firebase - AzureBlob - GoogleDrive - OneDrive - SharePoint - Box - SFTP - MicrosoftTeams - Aircall - Webflow - Okta - Auth0 - Productboard - Smartsheet - Wrike - Plaid - SurveyMonkey - Eventbrite - RingCentral - Twilio - Freshsales - Shortcut - ConvertKit - Drip - CampaignMonitor - MailerLite - Omnisend - Brevo - Postmark - Granola - BuildBetter - Convex - ClickHouse - Plain - Resend type: string description: '* `Ashby` - Ashby * `Supabase` - Supabase * `CustomerIO` - CustomerIO * `Github` - Github * `Stripe` - Stripe * `Hubspot` - Hubspot * `Postgres` - Postgres * `Zendesk` - Zendesk * `Snowflake` - Snowflake * `Salesforce` - Salesforce * `MySQL` - MySQL * `MongoDB` - MongoDB * `MSSQL` - MSSQL * `Vitally` - Vitally * `BigQuery` - BigQuery * `Chargebee` - Chargebee * `Clerk` - Clerk * `GoogleAds` - GoogleAds * `TemporalIO` - TemporalIO * `DoIt` - DoIt * `GoogleSheets` - GoogleSheets * `MetaAds` - MetaAds * `Klaviyo` - Klaviyo * `Mailchimp` - Mailchimp * `Braze` - Braze * `Mailjet` - Mailjet * `Redshift` - Redshift * `Polar` - Polar * `RevenueCat` - RevenueCat * `LinkedinAds` - LinkedinAds * `RedditAds` - RedditAds * `TikTokAds` - TikTokAds * `BingAds` - BingAds * `Shopify` - Shopify * `Attio` - Attio * `SnapchatAds` - SnapchatAds * `Linear` - Linear * `Intercom` - Intercom * `Amplitude` - Amplitude * `Mixpanel` - Mixpanel * `Jira` - Jira * `ActiveCampaign` - ActiveCampaign * `Marketo` - Marketo * `Adjust` - Adjust * `AppsFlyer` - AppsFlyer * `Freshdesk` - Freshdesk * `GoogleAnalytics` - GoogleAnalytics * `Pipedrive` - Pipedrive * `SendGrid` - SendGrid * `Slack` - Slack * `PagerDuty` - PagerDuty * `Asana` - Asana * `Notion` - Notion * `Airtable` - Airtable * `Greenhouse` - Greenhouse * `BambooHR` - BambooHR * `Lever` - Lever * `GitLab` - GitLab * `Datadog` - Datadog * `Sentry` - Sentry * `Pendo` - Pendo * `FullStory` - FullStory * `AmazonAds` - AmazonAds * `PinterestAds` - PinterestAds * `AppleSearchAds` - AppleSearchAds * `QuickBooks` - QuickBooks * `Xero` - Xero * `NetSuite` - NetSuite * `WooCommerce` - WooCommerce * `BigCommerce` - BigCommerce * `PayPal` - PayPal * `Square` - Square * `Zoom` - Zoom * `Trello` - Trello * `Monday` - Monday * `ClickUp` - ClickUp * `Confluence` - Confluence * `Recurly` - Recurly * `SalesLoft` - SalesLoft * `Outreach` - Outreach * `Gong` - Gong * `Calendly` - Calendly * `Typeform` - Typeform * `Iterable` - Iterable * `ZohoCRM` - ZohoCRM * `Close` - Close * `Oracle` - Oracle * `DynamoDB` - DynamoDB * `Elasticsearch` - Elasticsearch * `Kafka` - Kafka * `LaunchDarkly` - LaunchDarkly * `Braintree` - Braintree * `Recharge` - Recharge * `HelpScout` - HelpScout * `Gorgias` - Gorgias * `Instagram` - Instagram * `YouTubeAnalytics` - YouTubeAnalytics * `FacebookPages` - FacebookPages * `TwitterAds` - TwitterAds * `Workday` - Workday * `ServiceNow` - ServiceNow * `Pardot` - Pardot * `Copper` - Copper * `Front` - Front * `ChartMogul` - ChartMogul * `Zuora` - Zuora * `Paddle` - Paddle * `CircleCI` - CircleCI * `CockroachDB` - CockroachDB * `Firebase` - Firebase * `AzureBlob` - AzureBlob * `GoogleDrive` - GoogleDrive * `OneDrive` - OneDrive * `SharePoint` - SharePoint * `Box` - Box * `SFTP` - SFTP * `MicrosoftTeams` - MicrosoftTeams * `Aircall` - Aircall * `Webflow` - Webflow * `Okta` - Okta * `Auth0` - Auth0 * `Productboard` - Productboard * `Smartsheet` - Smartsheet * `Wrike` - Wrike * `Plaid` - Plaid * `SurveyMonkey` - SurveyMonkey * `Eventbrite` - Eventbrite * `RingCentral` - RingCentral * `Twilio` - Twilio * `Freshsales` - Freshsales * `Shortcut` - Shortcut * `ConvertKit` - ConvertKit * `Drip` - Drip * `CampaignMonitor` - CampaignMonitor * `MailerLite` - MailerLite * `Omnisend` - Omnisend * `Brevo` - Brevo * `Postmark` - Postmark * `Granola` - Granola * `BuildBetter` - BuildBetter * `Convex` - Convex * `ClickHouse` - ClickHouse * `Plain` - Plain * `Resend` - Resend' ExternalDataSourceBulkUpdateSchema: type: object properties: id: type: string format: uuid description: Schema identifier to update. should_sync: type: boolean description: Whether the schema should be queryable/synced. sync_type: nullable: true description: 'Requested sync mode for the schema. * `full_refresh` - full_refresh * `incremental` - incremental * `append` - append * `webhook` - webhook * `cdc` - cdc' oneOf: - $ref: '#/components/schemas/SyncTypeEnum' - $ref: '#/components/schemas/NullEnum' incremental_field: type: string nullable: true description: Incremental cursor field for incremental or append syncs. incremental_field_type: type: string nullable: true description: Type of the incremental cursor field. sync_frequency: type: string nullable: true description: Human-readable sync frequency value. sync_time_of_day: type: string format: time nullable: true description: UTC anchor time for scheduled syncs. cdc_table_mode: nullable: true description: 'How CDC-backed tables should be exposed. * `consolidated` - consolidated * `cdc_only` - cdc_only * `both` - both' oneOf: - $ref: '#/components/schemas/CdcTableModeEnum' - $ref: '#/components/schemas/NullEnum' required: - id DatabaseSchemaRequest: type: object description: 'Validate credentials and preview available tables from a remote database. The request body contains source_type plus flat source-specific credential fields (e.g. host, port, database, user, password, schema for Postgres). The credential fields vary per source_type and are validated dynamically by the source registry.' properties: source_type: allOf: - $ref: '#/components/schemas/ExternalDataSourceTypeEnum' description: 'The source type to validate against. * `Ashby` - Ashby * `Supabase` - Supabase * `CustomerIO` - CustomerIO * `Github` - Github * `Stripe` - Stripe * `Hubspot` - Hubspot * `Postgres` - Postgres * `Zendesk` - Zendesk * `Snowflake` - Snowflake * `Salesforce` - Salesforce * `MySQL` - MySQL * `MongoDB` - MongoDB * `MSSQL` - MSSQL * `Vitally` - Vitally * `BigQuery` - BigQuery * `Chargebee` - Chargebee * `Clerk` - Clerk * `GoogleAds` - GoogleAds * `TemporalIO` - TemporalIO * `DoIt` - DoIt * `GoogleSheets` - GoogleSheets * `MetaAds` - MetaAds * `Klaviyo` - Klaviyo * `Mailchimp` - Mailchimp * `Braze` - Braze * `Mailjet` - Mailjet * `Redshift` - Redshift * `Polar` - Polar * `RevenueCat` - RevenueCat * `LinkedinAds` - LinkedinAds * `RedditAds` - RedditAds * `TikTokAds` - TikTokAds * `BingAds` - BingAds * `Shopify` - Shopify * `Attio` - Attio * `SnapchatAds` - SnapchatAds * `Linear` - Linear * `Intercom` - Intercom * `Amplitude` - Amplitude * `Mixpanel` - Mixpanel * `Jira` - Jira * `ActiveCampaign` - ActiveCampaign * `Marketo` - Marketo * `Adjust` - Adjust * `AppsFlyer` - AppsFlyer * `Freshdesk` - Freshdesk * `GoogleAnalytics` - GoogleAnalytics * `Pipedrive` - Pipedrive * `SendGrid` - SendGrid * `Slack` - Slack * `PagerDuty` - PagerDuty * `Asana` - Asana * `Notion` - Notion * `Airtable` - Airtable * `Greenhouse` - Greenhouse * `BambooHR` - BambooHR * `Lever` - Lever * `GitLab` - GitLab * `Datadog` - Datadog * `Sentry` - Sentry * `Pendo` - Pendo * `FullStory` - FullStory * `AmazonAds` - AmazonAds * `PinterestAds` - PinterestAds * `AppleSearchAds` - AppleSearchAds * `QuickBooks` - QuickBooks * `Xero` - Xero * `NetSuite` - NetSuite * `WooCommerce` - WooCommerce * `BigCommerce` - BigCommerce * `PayPal` - PayPal * `Square` - Square * `Zoom` - Zoom * `Trello` - Trello * `Monday` - Monday * `ClickUp` - ClickUp * `Confluence` - Confluence * `Recurly` - Recurly * `SalesLoft` - SalesLoft * `Outreach` - Outreach * `Gong` - Gong * `Calendly` - Calendly * `Typeform` - Typeform * `Iterable` - Iterable * `ZohoCRM` - ZohoCRM * `Close` - Close * `Oracle` - Oracle * `DynamoDB` - DynamoDB * `Elasticsearch` - Elasticsearch * `Kafka` - Kafka * `LaunchDarkly` - LaunchDarkly * `Braintree` - Braintree * `Recharge` - Recharge * `HelpScout` - HelpScout * `Gorgias` - Gorgias * `Instagram` - Instagram * `YouTubeAnalytics` - YouTubeAnalytics * `FacebookPages` - FacebookPages * `TwitterAds` - TwitterAds * `Workday` - Workday * `ServiceNow` - ServiceNow * `Pardot` - Pardot * `Copper` - Copper * `Front` - Front * `ChartMogul` - ChartMogul * `Zuora` - Zuora * `Paddle` - Paddle * `CircleCI` - CircleCI * `CockroachDB` - CockroachDB * `Firebase` - Firebase * `AzureBlob` - AzureBlob * `GoogleDrive` - GoogleDrive * `OneDrive` - OneDrive * `SharePoint` - SharePoint * `Box` - Box * `SFTP` - SFTP * `MicrosoftTeams` - MicrosoftTeams * `Aircall` - Aircall * `Webflow` - Webflow * `Okta` - Okta * `Auth0` - Auth0 * `Productboard` - Productboard * `Smartsheet` - Smartsheet * `Wrike` - Wrike * `Plaid` - Plaid * `SurveyMonkey` - SurveyMonkey * `Eventbrite` - Eventbrite * `RingCentral` - RingCentral * `Twilio` - Twilio * `Freshsales` - Freshsales * `Shortcut` - Shortcut * `ConvertKit` - ConvertKit * `Drip` - Drip * `CampaignMonitor` - CampaignMonitor * `MailerLite` - MailerLite * `Omnisend` - Omnisend * `Brevo` - Brevo * `Postmark` - Postmark * `Granola` - Granola * `BuildBetter` - BuildBetter * `Convex` - Convex * `ClickHouse` - ClickHouse * `Plain` - Plain * `Resend` - Resend' required: - source_type ExternalDataSchema: type: object properties: id: type: string format: uuid readOnly: true name: type: string readOnly: true label: type: string readOnly: true nullable: true table: type: object additionalProperties: true nullable: true readOnly: true should_sync: type: boolean last_synced_at: type: string format: date-time readOnly: true nullable: true latest_error: type: string readOnly: true nullable: true description: The latest error that occurred when syncing this schema. incremental: type: boolean readOnly: true status: type: string nullable: true readOnly: true sync_type: nullable: true description: 'Sync strategy: incremental, full_refresh, append, or cdc. * `full_refresh` - full_refresh * `incremental` - incremental * `append` - append * `webhook` - webhook * `cdc` - cdc' oneOf: - $ref: '#/components/schemas/SyncTypeEnum' - $ref: '#/components/schemas/NullEnum' incremental_field: type: string nullable: true description: Column name used to track sync progress. incremental_field_type: nullable: true description: 'Data type of the incremental field. * `integer` - integer * `numeric` - numeric * `datetime` - datetime * `date` - date * `timestamp` - timestamp * `objectid` - objectid' oneOf: - $ref: '#/components/schemas/IncrementalFieldTypeEnum' - $ref: '#/components/schemas/NullEnum' sync_frequency: nullable: true description: 'How often to sync. * `never` - never * `1min` - 1min * `5min` - 5min * `15min` - 15min * `30min` - 30min * `1hour` - 1hour * `6hour` - 6hour * `12hour` - 12hour * `24hour` - 24hour * `7day` - 7day * `30day` - 30day' oneOf: - $ref: '#/components/schemas/SyncFrequencyEnum' - $ref: '#/components/schemas/NullEnum' sync_time_of_day: type: string format: time nullable: true description: UTC time of day to run the sync (HH:MM:SS). description: type: string readOnly: true nullable: true primary_key_columns: type: array items: type: string nullable: true description: Column names for primary key deduplication. cdc_table_mode: nullable: true description: 'For CDC syncs: consolidated, cdc_only, or both. * `consolidated` - consolidated * `cdc_only` - cdc_only * `both` - both' oneOf: - $ref: '#/components/schemas/CdcTableModeEnum' - $ref: '#/components/schemas/NullEnum' required: - description - id - incremental - label - last_synced_at - latest_error - name - status - table CdcTableModeEnum: enum: - consolidated - cdc_only - both type: string description: '* `consolidated` - consolidated * `cdc_only` - cdc_only * `both` - both' ExternalDataSourceSerializers: type: object description: Mixin for serializers to add user access control fields properties: id: type: string format: uuid readOnly: true created_at: type: string format: date-time readOnly: true created_by: type: string nullable: true readOnly: true created_via: allOf: - $ref: '#/components/schemas/CreatedViaEnum' description: 'How this source was created. Defaults to `api` on create when omitted. `web` for the in-app UI, `api` for direct API callers, `mcp` for agent/MCP tool calls. Ignored on update. * `web` - web * `api` - api * `mcp` - mcp' status: type: string readOnly: true client_secret: type: string writeOnly: true account_id: type: string writeOnly: true source_type: allOf: - $ref: '#/components/schemas/ExternalDataSourceTypeEnum' readOnly: true latest_error: type: string nullable: true readOnly: true prefix: type: string nullable: true maxLength: 100 description: type: string nullable: true maxLength: 400 access_method: allOf: - $ref: '#/components/schemas/AccessMethodEnum' readOnly: true engine: readOnly: true nullable: true description: 'Backend engine detected for the direct connection. * `duckdb` - duckdb * `postgres` - postgres' oneOf: - $ref: '#/components/schemas/EngineEnum' - $ref: '#/components/schemas/NullEnum' last_run_at: type: string nullable: true readOnly: true schemas: type: array items: type: object additionalProperties: true readOnly: true job_inputs: nullable: true revenue_analytics_config: allOf: - $ref: '#/components/schemas/ExternalDataSourceRevenueAnalyticsConfig' readOnly: true user_access_level: type: string nullable: true readOnly: true description: The effective access level the user has for this object supports_webhooks: type: boolean readOnly: true required: - access_method - account_id - client_secret - created_at - created_by - engine - id - last_run_at - latest_error - revenue_analytics_config - schemas - source_type - status - supports_webhooks - user_access_level PatchedExternalDataSourceSerializers: type: object description: Mixin for serializers to add user access control fields properties: id: type: string format: uuid readOnly: true created_at: type: string format: date-time readOnly: true created_by: type: string nullable: true readOnly: true created_via: allOf: - $ref: '#/components/schemas/CreatedViaEnum' description: 'How this source was created. Defaults to `api` on create when omitted. `web` for the in-app UI, `api` for direct API callers, `mcp` for agent/MCP tool calls. Ignored on update. * `web` - web * `api` - api * `mcp` - mcp' status: type: string readOnly: true client_secret: type: string writeOnly: true account_id: type: string writeOnly: true source_type: allOf: - $ref: '#/components/schemas/ExternalDataSourceTypeEnum' readOnly: true latest_error: type: string nullable: true readOnly: true prefix: type: string nullable: true maxLength: 100 description: type: string nullable: true maxLength: 400 access_method: allOf: - $ref: '#/components/schemas/AccessMethodEnum' readOnly: true engine: readOnly: true nullable: true description: 'Backend engine detected for the direct connection. * `duckdb` - duckdb * `postgres` - postgres' oneOf: - $ref: '#/components/schemas/EngineEnum' - $ref: '#/components/schemas/NullEnum' last_run_at: type: string nullable: true readOnly: true schemas: type: array items: type: object additionalProperties: true readOnly: true job_inputs: nullable: true revenue_analytics_config: allOf: - $ref: '#/components/schemas/ExternalDataSourceRevenueAnalyticsConfig' readOnly: true user_access_level: type: string nullable: true readOnly: true description: The effective access level the user has for this object supports_webhooks: type: boolean readOnly: true SyncTypeEnum: enum: - full_refresh - incremental - append - webhook - cdc type: string description: '* `full_refresh` - full_refresh * `incremental` - incremental * `append` - append * `webhook` - webhook * `cdc` - cdc' AccessMethodEnum: enum: - warehouse - direct type: string description: '* `warehouse` - warehouse * `direct` - direct' ExternalDataSourceConnectionOption: type: object properties: id: type: string format: uuid readOnly: true prefix: type: string readOnly: true nullable: true engine: readOnly: true nullable: true description: 'Backend engine detected for the direct connection. * `duckdb` - duckdb * `postgres` - postgres' oneOf: - $ref: '#/components/schemas/EngineEnum' - $ref: '#/components/schemas/NullEnum' required: - engine - id - prefix parameters: EnvironmentIdPath: in: path name: environment_id required: true schema: type: string description: Deprecated. Use /api/projects/{project_id}/ instead. ProjectIdPath: in: path name: project_id required: true schema: type: string description: Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/. securitySchemes: PersonalAPIKeyAuth: type: http scheme: bearer x-tagGroups: - name: All endpoints tags: - LLM Analytics - actions - activity_log - activity_logs - advanced_activity_logs - alerts - annotations - approval_policies - batch_exports - cdp - change_requests - code - code-invites - cohorts - comments - conversations - core - customer_analytics - customer_journeys - customer_profile_configs - dashboard_templates - dashboards - data_color_themes - data_modeling_jobs - data_warehouse - dataset_items - datasets - desktop_recordings - domains - early_access_feature - early_access_features - elements - endpoints - environments - error_tracking - evaluation_runs - evaluations - event_definitions - event_filter - event_schemas - events - experiment_holdouts - experiment_saved_metrics - experiments - exports - external_data_schemas - external_data_sources - feature_flags - file_system - file_system_shortcut - flag_value - groups - groups_types - health_issues - heatmap_screenshots - heatmaps - hog_flows - hog_function_templates - hog_functions - insight_variables - insights - integrations - invites - js-snippet - legal_documents - lineage - live_debugger_breakpoints - llm_analytics - llm_prompts - llm_skills - logs - managed_viewsets - max - max_tools - mcp_server_installations - mcp_servers - mcp_store - mcp_tools - members - notebooks - oauth_applications - object_media_previews - organizations - persisted_folder - persons - platform_features - plugin_configs - product_analytics - product_tours - project_secret_api_keys - projects - property_definitions - proxy_records - public_hog_function_templates - query - replay - reverse_proxy - role_external_references - roles - sandbox-environments - sandbox_environments - saved - schema_property_groups - sdk_doctor - session_group_summaries - session_recording_playlists - session_recordings - session_summaries - sessions - signals - subscriptions - surveys - taggers - task-automations - task-runs - task_automations - tasks - uploaded_media - user_home_settings - user_interviews - users - visual_review - warehouse_dag - warehouse_model_paths - warehouse_saved_queries - warehouse_saved_query_folders - warehouse_tables - warehouse_view_link - warehouse_view_links - web_analytics - web_experiments - web_vitals - welcome - workflows