diff --git a/docs/developer_docs/api.mdx b/docs/developer_docs/api.mdx
index 6793408388c..64f1b28b885 100644
--- a/docs/developer_docs/api.mdx
+++ b/docs/developer_docs/api.mdx
@@ -59,7 +59,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
#### Core Resources
-Dashboards (26 endpoints) — Create, read, update, and delete dashboards.
+Dashboards (28 endpoints) — Create, read, update, and delete dashboards.
| Method | Endpoint | Description |
|--------|----------|-------------|
@@ -68,23 +68,25 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| `POST` | [Create a new dashboard](/developer-docs/api/create-a-new-dashboard) | `/api/v1/dashboard/` |
| `GET` | [Get metadata information about this API resource (dashboard--info)](/developer-docs/api/get-metadata-information-about-this-api-resource-dashboard-info) | `/api/v1/dashboard/_info` |
| `GET` | [Get a dashboard detail information](/developer-docs/api/get-a-dashboard-detail-information) | `/api/v1/dashboard/{id_or_slug}` |
-| `GET` | [Get a dashboard's chart definitions.](/developer-docs/api/get-a-dashboard-s-chart-definitions) | `/api/v1/dashboard/{id_or_slug}/charts` |
+| `GET` | [Get a dashboard's chart definitions.](/developer-docs/api/get-a-dashboards-chart-definitions) | `/api/v1/dashboard/{id_or_slug}/charts` |
| `POST` | [Create a copy of an existing dashboard](/developer-docs/api/create-a-copy-of-an-existing-dashboard) | `/api/v1/dashboard/{id_or_slug}/copy/` |
-| `GET` | [Get dashboard's datasets](/developer-docs/api/get-dashboard-s-datasets) | `/api/v1/dashboard/{id_or_slug}/datasets` |
-| `DELETE` | [Delete a dashboard's embedded configuration](/developer-docs/api/delete-a-dashboard-s-embedded-configuration) | `/api/v1/dashboard/{id_or_slug}/embedded` |
-| `GET` | [Get the dashboard's embedded configuration](/developer-docs/api/get-the-dashboard-s-embedded-configuration) | `/api/v1/dashboard/{id_or_slug}/embedded` |
-| `POST` | [Set a dashboard's embedded configuration](/developer-docs/api/set-a-dashboard-s-embedded-configuration) | `/api/v1/dashboard/{id_or_slug}/embedded` |
+| `GET` | [Get dashboard's datasets](/developer-docs/api/get-dashboards-datasets) | `/api/v1/dashboard/{id_or_slug}/datasets` |
+| `DELETE` | [Delete a dashboard's embedded configuration](/developer-docs/api/delete-a-dashboards-embedded-configuration) | `/api/v1/dashboard/{id_or_slug}/embedded` |
+| `GET` | [Get the dashboard's embedded configuration](/developer-docs/api/get-the-dashboards-embedded-configuration) | `/api/v1/dashboard/{id_or_slug}/embedded` |
+| `POST` | [Set a dashboard's embedded configuration](/developer-docs/api/set-a-dashboards-embedded-configuration) | `/api/v1/dashboard/{id_or_slug}/embedded` |
| `PUT` | [Update dashboard by id_or_slug embedded](/developer-docs/api/update-dashboard-by-id-or-slug-embedded) | `/api/v1/dashboard/{id_or_slug}/embedded` |
-| `GET` | [Get dashboard's tabs](/developer-docs/api/get-dashboard-s-tabs) | `/api/v1/dashboard/{id_or_slug}/tabs` |
+| `GET` | [Get dashboard's tabs](/developer-docs/api/get-dashboards-tabs) | `/api/v1/dashboard/{id_or_slug}/tabs` |
| `DELETE` | [Delete a dashboard](/developer-docs/api/delete-a-dashboard) | `/api/v1/dashboard/{pk}` |
| `PUT` | [Update a dashboard](/developer-docs/api/update-a-dashboard) | `/api/v1/dashboard/{pk}` |
| `POST` | [Compute and cache a screenshot (dashboard-pk-cache-dashboard-screenshot)](/developer-docs/api/compute-and-cache-a-screenshot-dashboard-pk-cache-dashboard-screenshot) | `/api/v1/dashboard/{pk}/cache_dashboard_screenshot/` |
+| `PUT` | [Update chart customizations configuration for a dashboard.](/developer-docs/api/update-chart-customizations-configuration-for-a-dashboard) | `/api/v1/dashboard/{pk}/chart_customizations` |
| `PUT` | [Update colors configuration for a dashboard.](/developer-docs/api/update-colors-configuration-for-a-dashboard) | `/api/v1/dashboard/{pk}/colors` |
+| `GET` | [Export dashboard as example bundle](/developer-docs/api/export-dashboard-as-example-bundle) | `/api/v1/dashboard/{pk}/export_as_example/` |
| `DELETE` | [Remove the dashboard from the user favorite list](/developer-docs/api/remove-the-dashboard-from-the-user-favorite-list) | `/api/v1/dashboard/{pk}/favorites/` |
| `POST` | [Mark the dashboard as favorite for the current user](/developer-docs/api/mark-the-dashboard-as-favorite-for-the-current-user) | `/api/v1/dashboard/{pk}/favorites/` |
| `PUT` | [Update native filters configuration for a dashboard.](/developer-docs/api/update-native-filters-configuration-for-a-dashboard) | `/api/v1/dashboard/{pk}/filters` |
| `GET` | [Get a computed screenshot from cache (dashboard-pk-screenshot-digest)](/developer-docs/api/get-a-computed-screenshot-from-cache-dashboard-pk-screenshot-digest) | `/api/v1/dashboard/{pk}/screenshot/{digest}/` |
-| `GET` | [Get dashboard's thumbnail](/developer-docs/api/get-dashboard-s-thumbnail) | `/api/v1/dashboard/{pk}/thumbnail/{digest}/` |
+| `GET` | [Get dashboard's thumbnail](/developer-docs/api/get-dashboards-thumbnail) | `/api/v1/dashboard/{pk}/thumbnail/{digest}/` |
| `GET` | [Download multiple dashboards as YAML files](/developer-docs/api/download-multiple-dashboards-as-yaml-files) | `/api/v1/dashboard/export/` |
| `GET` | [Check favorited dashboards for current user](/developer-docs/api/check-favorited-dashboards-for-current-user) | `/api/v1/dashboard/favorite_status/` |
| `POST` | [Import dashboard(s) with associated charts/datasets/databases](/developer-docs/api/import-dashboard-s-with-associated-charts-datasets-databases) | `/api/v1/dashboard/import/` |
@@ -101,8 +103,8 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| `GET` | [Get a list of charts](/developer-docs/api/get-a-list-of-charts) | `/api/v1/chart/` |
| `POST` | [Create a new chart](/developer-docs/api/create-a-new-chart) | `/api/v1/chart/` |
| `GET` | [Get metadata information about this API resource (chart--info)](/developer-docs/api/get-metadata-information-about-this-api-resource-chart-info) | `/api/v1/chart/_info` |
+| `GET` | [Get a chart detail information](/developer-docs/api/get-a-chart-detail-information) | `/api/v1/chart/{id_or_uuid}` |
| `DELETE` | [Delete a chart](/developer-docs/api/delete-a-chart) | `/api/v1/chart/{pk}` |
-| `GET` | [Get a chart detail information](/developer-docs/api/get-a-chart-detail-information) | `/api/v1/chart/{pk}` |
| `PUT` | [Update a chart](/developer-docs/api/update-a-chart) | `/api/v1/chart/{pk}` |
| `GET` | [Compute and cache a screenshot (chart-pk-cache-screenshot)](/developer-docs/api/compute-and-cache-a-screenshot-chart-pk-cache-screenshot) | `/api/v1/chart/{pk}/cache_screenshot/` |
| `GET` | [Return payload data response for a chart](/developer-docs/api/return-payload-data-response-for-a-chart) | `/api/v1/chart/{pk}/data/` |
@@ -121,7 +123,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-Datasets (18 endpoints) — Manage datasets (tables) used for building charts.
+Datasets (19 endpoints) — Manage datasets (tables) used for building charts.
| Method | Endpoint | Description |
|--------|----------|-------------|
@@ -129,13 +131,14 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| `GET` | [Get a list of datasets](/developer-docs/api/get-a-list-of-datasets) | `/api/v1/dataset/` |
| `POST` | [Create a new dataset](/developer-docs/api/create-a-new-dataset) | `/api/v1/dataset/` |
| `GET` | [Get metadata information about this API resource (dataset--info)](/developer-docs/api/get-metadata-information-about-this-api-resource-dataset-info) | `/api/v1/dataset/_info` |
+| `GET` | [Get a dataset](/developer-docs/api/get-a-dataset) | `/api/v1/dataset/{id_or_uuid}` |
+| `GET` | [Get charts and dashboards count associated to a dataset](/developer-docs/api/get-charts-and-dashboards-count-associated-to-a-dataset) | `/api/v1/dataset/{id_or_uuid}/related_objects` |
| `DELETE` | [Delete a dataset](/developer-docs/api/delete-a-dataset) | `/api/v1/dataset/{pk}` |
-| `GET` | [Get a dataset](/developer-docs/api/get-a-dataset) | `/api/v1/dataset/{pk}` |
| `PUT` | [Update a dataset](/developer-docs/api/update-a-dataset) | `/api/v1/dataset/{pk}` |
| `DELETE` | [Delete a dataset column](/developer-docs/api/delete-a-dataset-column) | `/api/v1/dataset/{pk}/column/{column_id}` |
+| `GET` | [Get dataset drill info](/developer-docs/api/get-dataset-drill-info) | `/api/v1/dataset/{pk}/drill_info/` |
| `DELETE` | [Delete a dataset metric](/developer-docs/api/delete-a-dataset-metric) | `/api/v1/dataset/{pk}/metric/{metric_id}` |
| `PUT` | [Refresh and update columns of a dataset](/developer-docs/api/refresh-and-update-columns-of-a-dataset) | `/api/v1/dataset/{pk}/refresh` |
-| `GET` | [Get charts and dashboards count associated to a dataset](/developer-docs/api/get-charts-and-dashboards-count-associated-to-a-dataset) | `/api/v1/dataset/{pk}/related_objects` |
| `GET` | [Get distinct values from field data (dataset-distinct-column-name)](/developer-docs/api/get-distinct-values-from-field-data-dataset-distinct-column-name) | `/api/v1/dataset/distinct/{column_name}` |
| `POST` | [Duplicate a dataset](/developer-docs/api/duplicate-a-dataset) | `/api/v1/dataset/duplicate` |
| `GET` | [Download multiple datasets as YAML files](/developer-docs/api/download-multiple-datasets-as-yaml-files) | `/api/v1/dataset/export/` |
@@ -147,7 +150,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-Database (31 endpoints) — Manage database connections and metadata.
+Database (30 endpoints) — Manage database connections and metadata.
| Method | Endpoint | Description |
|--------|----------|-------------|
@@ -165,7 +168,6 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| `GET` | [Get all schemas from a database](/developer-docs/api/get-all-schemas-from-a-database) | `/api/v1/database/{pk}/schemas/` |
| `GET` | [Get database select star for table (database-pk-select-star-table-name)](/developer-docs/api/get-database-select-star-for-table-database-pk-select-star-table-name) | `/api/v1/database/{pk}/select_star/{table_name}/` |
| `GET` | [Get database select star for table (database-pk-select-star-table-name-schema-name)](/developer-docs/api/get-database-select-star-for-table-database-pk-select-star-table-name-schema-name) | `/api/v1/database/{pk}/select_star/{table_name}/{schema_name}/` |
-| `DELETE` | [Delete a SSH tunnel](/developer-docs/api/delete-a-ssh-tunnel) | `/api/v1/database/{pk}/ssh_tunnel/` |
| `POST` | [Re-sync all permissions for a database connection](/developer-docs/api/re-sync-all-permissions-for-a-database-connection) | `/api/v1/database/{pk}/sync_permissions/` |
| `GET` | [Get table extra metadata (database-pk-table-extra-table-name-schema-name)](/developer-docs/api/get-table-extra-metadata-database-pk-table-extra-table-name-schema-name) | `/api/v1/database/{pk}/table_extra/{table_name}/{schema_name}/` |
| `GET` | [Get table metadata](/developer-docs/api/get-table-metadata) | `/api/v1/database/{pk}/table_metadata/` |
@@ -177,7 +179,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| `GET` | [Get names of databases currently available](/developer-docs/api/get-names-of-databases-currently-available) | `/api/v1/database/available/` |
| `GET` | [Download database(s) and associated dataset(s) as a zip file](/developer-docs/api/download-database-s-and-associated-dataset-s-as-a-zip-file) | `/api/v1/database/export/` |
| `POST` | [Import database(s) with associated datasets](/developer-docs/api/import-database-s-with-associated-datasets) | `/api/v1/database/import/` |
-| `GET` | [Receive personal access tokens from OAuth2](/developer-docs/api/receive-personal-access-tokens-from-oauth2) | `/api/v1/database/oauth2/` |
+| `GET` | [Receive personal access tokens from OAuth2](/developer-docs/api/receive-personal-access-tokens-from-o-auth-2) | `/api/v1/database/oauth2/` |
| `GET` | [Get related fields data (database-related-column-name)](/developer-docs/api/get-related-fields-data-database-related-column-name) | `/api/v1/database/related/{column_name}` |
| `POST` | [Test a database connection](/developer-docs/api/test-a-database-connection) | `/api/v1/database/test_connection/` |
| `POST` | [Upload a file and returns file metadata](/developer-docs/api/upload-a-file-and-returns-file-metadata) | `/api/v1/database/upload_metadata/` |
@@ -197,13 +199,14 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-SQL Lab (6 endpoints) — Execute SQL queries and manage SQL Lab sessions.
+SQL Lab (7 endpoints) — Execute SQL queries and manage SQL Lab sessions.
| Method | Endpoint | Description |
|--------|----------|-------------|
-| `GET` | [Get the bootstrap data for SqlLab page](/developer-docs/api/get-the-bootstrap-data-for-sqllab-page) | `/api/v1/sqllab/` |
+| `GET` | [Get the bootstrap data for SqlLab page](/developer-docs/api/get-the-bootstrap-data-for-sql-lab-page) | `/api/v1/sqllab/` |
| `POST` | [Estimate the SQL query execution cost](/developer-docs/api/estimate-the-sql-query-execution-cost) | `/api/v1/sqllab/estimate/` |
| `POST` | [Execute a SQL query](/developer-docs/api/execute-a-sql-query) | `/api/v1/sqllab/execute/` |
+| `POST` | [Export SQL query results to CSV with streaming](/developer-docs/api/export-sql-query-results-to-csv-with-streaming) | `/api/v1/sqllab/export_streaming/` |
| `GET` | [Export the SQL query results to a CSV](/developer-docs/api/export-the-sql-query-results-to-a-csv) | `/api/v1/sqllab/export/{client_id}/` |
| `POST` | [Format SQL code](/developer-docs/api/format-sql-code) | `/api/v1/sqllab/format_sql/` |
| `GET` | [Get the result of a SQL query execution](/developer-docs/api/get-the-result-of-a-sql-query-execution) | `/api/v1/sqllab/results/` |
@@ -236,20 +239,21 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-Datasources (1 endpoints) — Query datasource metadata and column values.
+Datasources (2 endpoints) — Query datasource metadata and column values.
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | [Get possible values for a datasource column](/developer-docs/api/get-possible-values-for-a-datasource-column) | `/api/v1/datasource/{datasource_type}/{datasource_id}/column/{column_name}/values/` |
+| `POST` | [Validate a SQL expression against a datasource](/developer-docs/api/validate-a-sql-expression-against-a-datasource) | `/api/v1/datasource/{datasource_type}/{datasource_id}/validate_expression/` |
-Advanced Data Type (2 endpoints) — Endpoints for advanced data type operations and conversions.
+Advanced Data Type (2 endpoints) — Advanced data type operations and conversions.
| Method | Endpoint | Description |
|--------|----------|-------------|
-| `GET` | [Return an AdvancedDataTypeResponse](/developer-docs/api/return-an-advanceddatatyperesponse) | `/api/v1/advanced_data_type/convert` |
+| `GET` | [Return an AdvancedDataTypeResponse](/developer-docs/api/return-an-advanced-data-type-response) | `/api/v1/advanced_data_type/convert` |
| `GET` | [Return a list of available advanced data types](/developer-docs/api/return-a-list-of-available-advanced-data-types) | `/api/v1/advanced_data_type/types` |
@@ -320,32 +324,32 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
#### Sharing & Embedding
-Dashboard Permanent Link (2 endpoints) — Create and retrieve permanent links to dashboard states.
+Dashboard Permanent Link (2 endpoints) — Permanent links to dashboard states.
| Method | Endpoint | Description |
|--------|----------|-------------|
-| `POST` | [Create a new dashboard's permanent link](/developer-docs/api/create-a-new-dashboard-s-permanent-link) | `/api/v1/dashboard/{pk}/permalink` |
-| `GET` | [Get dashboard's permanent link state](/developer-docs/api/get-dashboard-s-permanent-link-state) | `/api/v1/dashboard/permalink/{key}` |
+| `POST` | [Create a new dashboard's permanent link](/developer-docs/api/create-a-new-dashboards-permanent-link) | `/api/v1/dashboard/{pk}/permalink` |
+| `GET` | [Get dashboard's permanent link state](/developer-docs/api/get-dashboards-permanent-link-state) | `/api/v1/dashboard/permalink/{key}` |
-Explore Permanent Link (2 endpoints) — Create and retrieve permanent links to chart explore states.
+Explore Permanent Link (2 endpoints) — Permanent links to chart explore states.
| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | [Create a new permanent link (explore-permalink)](/developer-docs/api/create-a-new-permanent-link-explore-permalink) | `/api/v1/explore/permalink` |
-| `GET` | [Get chart's permanent link state](/developer-docs/api/get-chart-s-permanent-link-state) | `/api/v1/explore/permalink/{key}` |
+| `GET` | [Get chart's permanent link state](/developer-docs/api/get-charts-permanent-link-state) | `/api/v1/explore/permalink/{key}` |
-SQL Lab Permanent Link (2 endpoints) — Create and retrieve permanent links to SQL Lab states.
+SQL Lab Permanent Link (2 endpoints) — Permanent links to SQL Lab states.
| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | [Create a new permanent link (sqllab-permalink)](/developer-docs/api/create-a-new-permanent-link-sqllab-permalink) | `/api/v1/sqllab/permalink` |
-| `GET` | [Get permanent link state for SQLLab editor.](/developer-docs/api/get-permanent-link-state-for-sqllab-editor) | `/api/v1/sqllab/permalink/{key}` |
+| `GET` | [Get permanent link state for SQLLab editor.](/developer-docs/api/get-permanent-link-state-for-sql-lab-editor) | `/api/v1/sqllab/permalink/{key}` |
@@ -363,10 +367,10 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| Method | Endpoint | Description |
|--------|----------|-------------|
-| `POST` | [Create a dashboard's filter state](/developer-docs/api/create-a-dashboard-s-filter-state) | `/api/v1/dashboard/{pk}/filter_state` |
-| `DELETE` | [Delete a dashboard's filter state value](/developer-docs/api/delete-a-dashboard-s-filter-state-value) | `/api/v1/dashboard/{pk}/filter_state/{key}` |
-| `GET` | [Get a dashboard's filter state value](/developer-docs/api/get-a-dashboard-s-filter-state-value) | `/api/v1/dashboard/{pk}/filter_state/{key}` |
-| `PUT` | [Update a dashboard's filter state value](/developer-docs/api/update-a-dashboard-s-filter-state-value) | `/api/v1/dashboard/{pk}/filter_state/{key}` |
+| `POST` | [Create a dashboard's filter state](/developer-docs/api/create-a-dashboards-filter-state) | `/api/v1/dashboard/{pk}/filter_state` |
+| `DELETE` | [Delete a dashboard's filter state value](/developer-docs/api/delete-a-dashboards-filter-state-value) | `/api/v1/dashboard/{pk}/filter_state/{key}` |
+| `GET` | [Get a dashboard's filter state value](/developer-docs/api/get-a-dashboards-filter-state-value) | `/api/v1/dashboard/{pk}/filter_state/{key}` |
+| `PUT` | [Update a dashboard's filter state value](/developer-docs/api/update-a-dashboards-filter-state-value) | `/api/v1/dashboard/{pk}/filter_state/{key}` |
@@ -406,16 +410,17 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
#### Security & Access Control
-Security Roles (10 endpoints) — Manage security roles and their permissions.
+Security Roles (11 endpoints) — Manage security roles and their permissions.
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | [Get security roles](/developer-docs/api/get-security-roles) | `/api/v1/security/roles/` |
| `POST` | [Create security roles](/developer-docs/api/create-security-roles) | `/api/v1/security/roles/` |
-| `GET` | [Get security roles info](/developer-docs/api/get-security-roles-info) | `/api/v1/security/roles/_info` |
+| `GET` | [Get security roles info](/developer-docs/api/get-security-roles-info) | `/api/v1/security/roles/_info` |
| `DELETE` | [Delete security roles by pk](/developer-docs/api/delete-security-roles-by-pk) | `/api/v1/security/roles/{pk}` |
| `GET` | [Get security roles by pk](/developer-docs/api/get-security-roles-by-pk) | `/api/v1/security/roles/{pk}` |
| `PUT` | [Update security roles by pk](/developer-docs/api/update-security-roles-by-pk) | `/api/v1/security/roles/{pk}` |
+| `PUT` | [Update security roles by role_id groups](/developer-docs/api/update-security-roles-by-role-id-groups) | `/api/v1/security/roles/{role_id}/groups` |
| `POST` | [Create security roles by role_id permissions](/developer-docs/api/create-security-roles-by-role-id-permissions) | `/api/v1/security/roles/{role_id}/permissions` |
| `GET` | [Get security roles by role_id permissions](/developer-docs/api/get-security-roles-by-role-id-permissions) | `/api/v1/security/roles/{role_id}/permissions/` |
| `PUT` | [Update security roles by role_id users](/developer-docs/api/update-security-roles-by-role-id-users) | `/api/v1/security/roles/{role_id}/users` |
@@ -430,7 +435,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
|--------|----------|-------------|
| `GET` | [Get security users](/developer-docs/api/get-security-users) | `/api/v1/security/users/` |
| `POST` | [Create security users](/developer-docs/api/create-security-users) | `/api/v1/security/users/` |
-| `GET` | [Get security users info](/developer-docs/api/get-security-users-info) | `/api/v1/security/users/_info` |
+| `GET` | [Get security users info](/developer-docs/api/get-security-users-info) | `/api/v1/security/users/_info` |
| `DELETE` | [Delete security users by pk](/developer-docs/api/delete-security-users-by-pk) | `/api/v1/security/users/{pk}` |
| `GET` | [Get security users by pk](/developer-docs/api/get-security-users-by-pk) | `/api/v1/security/users/{pk}` |
| `PUT` | [Update security users by pk](/developer-docs/api/update-security-users-by-pk) | `/api/v1/security/users/{pk}` |
@@ -443,7 +448,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | [Get security permissions](/developer-docs/api/get-security-permissions) | `/api/v1/security/permissions/` |
-| `GET` | [Get security permissions info](/developer-docs/api/get-security-permissions-info) | `/api/v1/security/permissions/_info` |
+| `GET` | [Get security permissions info](/developer-docs/api/get-security-permissions-info) | `/api/v1/security/permissions/_info` |
| `GET` | [Get security permissions by pk](/developer-docs/api/get-security-permissions-by-pk) | `/api/v1/security/permissions/{pk}` |
@@ -455,7 +460,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
|--------|----------|-------------|
| `GET` | [Get security resources](/developer-docs/api/get-security-resources) | `/api/v1/security/resources/` |
| `POST` | [Create security resources](/developer-docs/api/create-security-resources) | `/api/v1/security/resources/` |
-| `GET` | [Get security resources info](/developer-docs/api/get-security-resources-info) | `/api/v1/security/resources/_info` |
+| `GET` | [Get security resources info](/developer-docs/api/get-security-resources-info) | `/api/v1/security/resources/_info` |
| `DELETE` | [Delete security resources by pk](/developer-docs/api/delete-security-resources-by-pk) | `/api/v1/security/resources/{pk}` |
| `GET` | [Get security resources by pk](/developer-docs/api/get-security-resources-by-pk) | `/api/v1/security/resources/{pk}` |
| `PUT` | [Update security resources by pk](/developer-docs/api/update-security-resources-by-pk) | `/api/v1/security/resources/{pk}` |
@@ -463,13 +468,13 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-Security Permissions on Resources (View Menus) (6 endpoints) — Manage permission-resource mappings.
+Security Permissions on Resources (View Menus) (6 endpoints) — Permission-resource mappings.
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | [Get security permissions resources](/developer-docs/api/get-security-permissions-resources) | `/api/v1/security/permissions-resources/` |
| `POST` | [Create security permissions resources](/developer-docs/api/create-security-permissions-resources) | `/api/v1/security/permissions-resources/` |
-| `GET` | [Get security permissions resources info](/developer-docs/api/get-security-permissions-resources-info) | `/api/v1/security/permissions-resources/_info` |
+| `GET` | [Get security permissions resources info](/developer-docs/api/get-security-permissions-resources-info) | `/api/v1/security/permissions-resources/_info` |
| `DELETE` | [Delete security permissions resources by pk](/developer-docs/api/delete-security-permissions-resources-by-pk) | `/api/v1/security/permissions-resources/{pk}` |
| `GET` | [Get security permissions resources by pk](/developer-docs/api/get-security-permissions-resources-by-pk) | `/api/v1/security/permissions-resources/{pk}` |
| `PUT` | [Update security permissions resources by pk](/developer-docs/api/update-security-permissions-resources-by-pk) | `/api/v1/security/permissions-resources/{pk}` |
@@ -477,7 +482,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-Row Level Security (8 endpoints) — Manage row-level security rules for data access control.
+Row Level Security (8 endpoints) — Manage row-level security rules for data access.
| Method | Endpoint | Description |
|--------|----------|-------------|
@@ -495,7 +500,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
#### Import/Export & Administration
-Import/export (2 endpoints) — Import and export Superset assets (dashboards, charts, databases).
+Import/export (2 endpoints) — Import and export Superset assets.
| Method | Endpoint | Description |
|--------|----------|-------------|
@@ -528,11 +533,12 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
#### User & System
-Current User (2 endpoints) — Get information about the currently authenticated user.
+Current User (3 endpoints) — Get information about the authenticated user.
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | [Get the user object](/developer-docs/api/get-the-user-object) | `/api/v1/me/` |
+| `PUT` | [Update the current user](/developer-docs/api/update-the-current-user) | `/api/v1/me/` |
| `GET` | [Get the user roles](/developer-docs/api/get-the-user-roles) | `/api/v1/me/roles/` |
@@ -578,7 +584,23 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| Method | Endpoint | Description |
|--------|----------|-------------|
-| `GET` | [Get api by version openapi](/developer-docs/api/get-api-by-version-openapi) | `/api/{version}/_openapi` |
+| `GET` | [Get api by version openapi](/developer-docs/api/get-api-by-version-openapi) | `/api/{version}/_openapi` |
+
+
+
+#### Other
+
+
+Security Groups (6 endpoints) — Endpoints related to Security Groups.
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | [Get security groups](/developer-docs/api/get-security-groups) | `/api/v1/security/groups/` |
+| `POST` | [Create security groups](/developer-docs/api/create-security-groups) | `/api/v1/security/groups/` |
+| `GET` | [Get security groups info](/developer-docs/api/get-security-groups-info) | `/api/v1/security/groups/_info` |
+| `DELETE` | [Delete security groups by pk](/developer-docs/api/delete-security-groups-by-pk) | `/api/v1/security/groups/{pk}` |
+| `GET` | [Get security groups by pk](/developer-docs/api/get-security-groups-by-pk) | `/api/v1/security/groups/{pk}` |
+| `PUT` | [Update security groups by pk](/developer-docs/api/update-security-groups-by-pk) | `/api/v1/security/groups/{pk}` |
@@ -590,7 +612,7 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
| `DELETE` | [Bulk delete themes](/developer-docs/api/bulk-delete-themes) | `/api/v1/theme/` |
| `GET` | [Get a list of themes](/developer-docs/api/get-a-list-of-themes) | `/api/v1/theme/` |
| `POST` | [Create a theme](/developer-docs/api/create-a-theme) | `/api/v1/theme/` |
-| `GET` | [Get metadata information about this API resource (theme-info)](/developer-docs/api/get-metadata-information-about-this-api-resource-theme-info) | `/api/v1/theme/_info` |
+| `GET` | [Get metadata information about this API resource (theme--info)](/developer-docs/api/get-metadata-information-about-this-api-resource-theme-info) | `/api/v1/theme/_info` |
| `DELETE` | [Delete a theme](/developer-docs/api/delete-a-theme) | `/api/v1/theme/{pk}` |
| `GET` | [Get a theme](/developer-docs/api/get-a-theme) | `/api/v1/theme/{pk}` |
| `PUT` | [Update a theme](/developer-docs/api/update-a-theme) | `/api/v1/theme/{pk}` |
@@ -604,6 +626,22 @@ curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
+
+UserRegistrationsRestAPI (8 endpoints) — Endpoints related to UserRegistrationsRestAPI.
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | [Get security user registrations](/developer-docs/api/get-security-user-registrations) | `/api/v1/security/user_registrations/` |
+| `POST` | [Create security user registrations](/developer-docs/api/create-security-user-registrations) | `/api/v1/security/user_registrations/` |
+| `GET` | [Get security user registrations info](/developer-docs/api/get-security-user-registrations-info) | `/api/v1/security/user_registrations/_info` |
+| `DELETE` | [Delete security user registrations by pk](/developer-docs/api/delete-security-user-registrations-by-pk) | `/api/v1/security/user_registrations/{pk}` |
+| `GET` | [Get security user registrations by pk](/developer-docs/api/get-security-user-registrations-by-pk) | `/api/v1/security/user_registrations/{pk}` |
+| `PUT` | [Update security user registrations by pk](/developer-docs/api/update-security-user-registrations-by-pk) | `/api/v1/security/user_registrations/{pk}` |
+| `GET` | [Get distinct values from field data (security-user-registrations-distinct-column-name)](/developer-docs/api/get-distinct-values-from-field-data-security-user-registrations-distinct-column-name) | `/api/v1/security/user_registrations/distinct/{column_name}` |
+| `GET` | [Get related fields data (security-user-registrations-related-column-name)](/developer-docs/api/get-related-fields-data-security-user-registrations-related-column-name) | `/api/v1/security/user_registrations/related/{column_name}` |
+
+
+
---
### Additional Resources
diff --git a/docs/developer_docs/components/design-system/dropdowncontainer.mdx b/docs/developer_docs/components/design-system/dropdowncontainer.mdx
index 205a209a5fd..1d6b5e20772 100644
--- a/docs/developer_docs/components/design-system/dropdowncontainer.mdx
+++ b/docs/developer_docs/components/design-system/dropdowncontainer.mdx
@@ -156,7 +156,7 @@ function SelectFilters() {
## Import
```tsx
-import { DropdownContainer } from '@superset/components';
+import { DropdownContainer } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/design-system/flex.mdx b/docs/developer_docs/components/design-system/flex.mdx
index 6b6d674a859..b74f06c7f4e 100644
--- a/docs/developer_docs/components/design-system/flex.mdx
+++ b/docs/developer_docs/components/design-system/flex.mdx
@@ -186,7 +186,7 @@ function JustifyAlign() {
## Import
```tsx
-import { Flex } from '@superset/components';
+import { Flex } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/design-system/grid.mdx b/docs/developer_docs/components/design-system/grid.mdx
index 6400917f88c..a7fea3d3dc1 100644
--- a/docs/developer_docs/components/design-system/grid.mdx
+++ b/docs/developer_docs/components/design-system/grid.mdx
@@ -181,7 +181,7 @@ function AlignmentDemo() {
## Import
```tsx
-import Grid from '@superset/components';
+import { Grid } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/design-system/layout.mdx b/docs/developer_docs/components/design-system/layout.mdx
index 9fe934308a5..1b0d76e0ad1 100644
--- a/docs/developer_docs/components/design-system/layout.mdx
+++ b/docs/developer_docs/components/design-system/layout.mdx
@@ -128,7 +128,7 @@ function RightSidebar() {
## Import
```tsx
-import { Layout } from '@superset/components';
+import { Layout } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/design-system/metadatabar.mdx b/docs/developer_docs/components/design-system/metadatabar.mdx
index a8064c23a91..2f667cfae4e 100644
--- a/docs/developer_docs/components/design-system/metadatabar.mdx
+++ b/docs/developer_docs/components/design-system/metadatabar.mdx
@@ -163,7 +163,7 @@ function FullMetadata() {
## Import
```tsx
-import MetadataBar from '@superset/components';
+import { MetadataBar } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/design-system/space.mdx b/docs/developer_docs/components/design-system/space.mdx
index cbbef161fbf..264667a9fb0 100644
--- a/docs/developer_docs/components/design-system/space.mdx
+++ b/docs/developer_docs/components/design-system/space.mdx
@@ -157,7 +157,7 @@ function SpaceSizes() {
## Import
```tsx
-import { Space } from '@superset/components';
+import { Space } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/design-system/table.mdx b/docs/developer_docs/components/design-system/table.mdx
index 16451533f44..db0be495173 100644
--- a/docs/developer_docs/components/design-system/table.mdx
+++ b/docs/developer_docs/components/design-system/table.mdx
@@ -300,7 +300,7 @@ function LoadingTable() {
## Import
```tsx
-import { Table } from '@superset/components';
+import { Table } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/index.mdx b/docs/developer_docs/components/index.mdx
index 26cf64e1cdc..270e24163c4 100644
--- a/docs/developer_docs/components/index.mdx
+++ b/docs/developer_docs/components/index.mdx
@@ -23,7 +23,16 @@ sidebar_position: 0
under the License.
-->
-# Superset Design System
+import { ComponentIndex } from '@site/src/components/ui-components';
+import componentData from '@site/static/data/components.json';
+
+# UI Components
+
+
+
+---
+
+## Design System
A design system is a complete set of standards intended to manage design at scale using reusable components and patterns.
@@ -35,19 +44,6 @@ The Superset Design System uses [Atomic Design](https://bradfrost.com/blog/post/
----
-
-## Component Library
-
-Interactive documentation for Superset's UI component library. **53 components** documented across 2 categories.
-
-### [Core Components](./ui/)
-46 components — Buttons, inputs, modals, selects, and other fundamental UI elements.
-
-### [Layout Components](./design-system/)
-7 components — Grid, Layout, Table, Flex, Space, and container components for page structure.
-
-
## Usage
All components are exported from `@superset-ui/core/components`:
diff --git a/docs/developer_docs/components/ui/autocomplete.mdx b/docs/developer_docs/components/ui/autocomplete.mdx
index e0d721a7b9a..789883dbb4c 100644
--- a/docs/developer_docs/components/ui/autocomplete.mdx
+++ b/docs/developer_docs/components/ui/autocomplete.mdx
@@ -204,7 +204,7 @@ function Demo() {
## Import
```tsx
-import { AutoComplete } from '@superset/components';
+import { AutoComplete } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/avatar.mdx b/docs/developer_docs/components/ui/avatar.mdx
index 96c438d3721..b2b7458cd4b 100644
--- a/docs/developer_docs/components/ui/avatar.mdx
+++ b/docs/developer_docs/components/ui/avatar.mdx
@@ -129,7 +129,7 @@ function Demo() {
## Import
```tsx
-import { Avatar } from '@superset/components';
+import { Avatar } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/badge.mdx b/docs/developer_docs/components/ui/badge.mdx
index 5381fb76fb3..69531a428b1 100644
--- a/docs/developer_docs/components/ui/badge.mdx
+++ b/docs/developer_docs/components/ui/badge.mdx
@@ -149,7 +149,7 @@ function ColorGallery() {
## Import
```tsx
-import { Badge } from '@superset/components';
+import { Badge } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/breadcrumb.mdx b/docs/developer_docs/components/ui/breadcrumb.mdx
index 60081b937cf..5591b2e089f 100644
--- a/docs/developer_docs/components/ui/breadcrumb.mdx
+++ b/docs/developer_docs/components/ui/breadcrumb.mdx
@@ -82,7 +82,7 @@ function Demo() {
## Import
```tsx
-import { Breadcrumb } from '@superset/components';
+import { Breadcrumb } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/button.mdx b/docs/developer_docs/components/ui/button.mdx
index d36acbbf680..0b704f4b666 100644
--- a/docs/developer_docs/components/ui/button.mdx
+++ b/docs/developer_docs/components/ui/button.mdx
@@ -43,7 +43,7 @@ The Button component from Superset's UI library.
Button!
@@ -124,14 +124,14 @@ function Demo() {
| Prop | Type | Default | Description |
|------|------|---------|-------------|
-| `buttonStyle` | `string` | `"default"` | The style variant of the button. |
+| `buttonStyle` | `string` | `"primary"` | The style variant of the button. |
| `buttonSize` | `string` | `"default"` | The size of the button. |
| `children` | `string` | `"Button!"` | The button text or content. |
## Import
```tsx
-import { Button } from '@superset/components';
+import { Button } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/buttongroup.mdx b/docs/developer_docs/components/ui/buttongroup.mdx
index 6f35bea6159..233993c4d19 100644
--- a/docs/developer_docs/components/ui/buttongroup.mdx
+++ b/docs/developer_docs/components/ui/buttongroup.mdx
@@ -77,7 +77,7 @@ function Demo() {
## Import
```tsx
-import { ButtonGroup } from '@superset/components';
+import { ButtonGroup } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/cachedlabel.mdx b/docs/developer_docs/components/ui/cachedlabel.mdx
index 65a83d5a7c7..7f115914456 100644
--- a/docs/developer_docs/components/ui/cachedlabel.mdx
+++ b/docs/developer_docs/components/ui/cachedlabel.mdx
@@ -68,7 +68,7 @@ function Demo() {
## Import
```tsx
-import { CachedLabel } from '@superset/components';
+import { CachedLabel } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/card.mdx b/docs/developer_docs/components/ui/card.mdx
index 989706ed940..50bf93dbf6e 100644
--- a/docs/developer_docs/components/ui/card.mdx
+++ b/docs/developer_docs/components/ui/card.mdx
@@ -131,7 +131,7 @@ function CardStates() {
## Import
```tsx
-import { Card } from '@superset/components';
+import { Card } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/checkbox.mdx b/docs/developer_docs/components/ui/checkbox.mdx
index a7b76e5b5ca..13709c36130 100644
--- a/docs/developer_docs/components/ui/checkbox.mdx
+++ b/docs/developer_docs/components/ui/checkbox.mdx
@@ -130,7 +130,7 @@ function SelectAllDemo() {
## Import
```tsx
-import { Checkbox } from '@superset/components';
+import { Checkbox } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/collapse.mdx b/docs/developer_docs/components/ui/collapse.mdx
index 1bfef9f2868..4e35c7b4353 100644
--- a/docs/developer_docs/components/ui/collapse.mdx
+++ b/docs/developer_docs/components/ui/collapse.mdx
@@ -95,7 +95,7 @@ function Demo() {
## Import
```tsx
-import { Collapse } from '@superset/components';
+import { Collapse } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/datepicker.mdx b/docs/developer_docs/components/ui/datepicker.mdx
index 0daebc8058a..4fc45cb6ecb 100644
--- a/docs/developer_docs/components/ui/datepicker.mdx
+++ b/docs/developer_docs/components/ui/datepicker.mdx
@@ -99,7 +99,7 @@ function Demo() {
## Import
```tsx
-import { DatePicker } from '@superset/components';
+import { DatePicker } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/divider.mdx b/docs/developer_docs/components/ui/divider.mdx
index 73bf9aa5b3f..0ea8c54bb6e 100644
--- a/docs/developer_docs/components/ui/divider.mdx
+++ b/docs/developer_docs/components/ui/divider.mdx
@@ -133,7 +133,7 @@ function Demo() {
## Import
```tsx
-import { Divider } from '@superset/components';
+import { Divider } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/editabletitle.mdx b/docs/developer_docs/components/ui/editabletitle.mdx
index d5e3e2a20c5..bea676b0401 100644
--- a/docs/developer_docs/components/ui/editabletitle.mdx
+++ b/docs/developer_docs/components/ui/editabletitle.mdx
@@ -161,7 +161,7 @@ function Demo() {
## Import
```tsx
-import { EditableTitle } from '@superset/components';
+import { EditableTitle } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/emptystate.mdx b/docs/developer_docs/components/ui/emptystate.mdx
index aeb7938f311..b0e8171c16d 100644
--- a/docs/developer_docs/components/ui/emptystate.mdx
+++ b/docs/developer_docs/components/ui/emptystate.mdx
@@ -136,7 +136,7 @@ function Demo() {
## Import
```tsx
-import { EmptyState } from '@superset/components';
+import { EmptyState } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/favestar.mdx b/docs/developer_docs/components/ui/favestar.mdx
index 263659ac4a6..adb610620d8 100644
--- a/docs/developer_docs/components/ui/favestar.mdx
+++ b/docs/developer_docs/components/ui/favestar.mdx
@@ -85,7 +85,7 @@ function Demo() {
## Import
```tsx
-import { FaveStar } from '@superset/components';
+import { FaveStar } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/iconbutton.mdx b/docs/developer_docs/components/ui/iconbutton.mdx
index 387b937e2e7..5cfc6e90f55 100644
--- a/docs/developer_docs/components/ui/iconbutton.mdx
+++ b/docs/developer_docs/components/ui/iconbutton.mdx
@@ -95,7 +95,7 @@ function Demo() {
## Import
```tsx
-import { IconButton } from '@superset/components';
+import { IconButton } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/icons.mdx b/docs/developer_docs/components/ui/icons.mdx
index 97b0b023862..ac90f06c7e7 100644
--- a/docs/developer_docs/components/ui/icons.mdx
+++ b/docs/developer_docs/components/ui/icons.mdx
@@ -241,7 +241,7 @@ function IconWithText() {
## Import
```tsx
-import { Icons } from '@superset/components';
+import { Icons } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/icontooltip.mdx b/docs/developer_docs/components/ui/icontooltip.mdx
index df7e0445e94..4d1fdde8699 100644
--- a/docs/developer_docs/components/ui/icontooltip.mdx
+++ b/docs/developer_docs/components/ui/icontooltip.mdx
@@ -89,7 +89,7 @@ function Demo() {
## Import
```tsx
-import { IconTooltip } from '@superset/components';
+import { IconTooltip } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/infotooltip.mdx b/docs/developer_docs/components/ui/infotooltip.mdx
index 28d0514bdc9..42e6341ea90 100644
--- a/docs/developer_docs/components/ui/infotooltip.mdx
+++ b/docs/developer_docs/components/ui/infotooltip.mdx
@@ -95,7 +95,7 @@ function Demo() {
## Import
```tsx
-import { InfoTooltip } from '@superset/components';
+import { InfoTooltip } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/input.mdx b/docs/developer_docs/components/ui/input.mdx
index 1fa8fd59073..2bc8706fe63 100644
--- a/docs/developer_docs/components/ui/input.mdx
+++ b/docs/developer_docs/components/ui/input.mdx
@@ -151,7 +151,7 @@ function Demo() {
## Import
```tsx
-import { Input } from '@superset/components';
+import { Input } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/label.mdx b/docs/developer_docs/components/ui/label.mdx
index a0c8ee6bd48..816d449770f 100644
--- a/docs/developer_docs/components/ui/label.mdx
+++ b/docs/developer_docs/components/ui/label.mdx
@@ -94,7 +94,7 @@ function Demo() {
## Import
```tsx
-import { Label } from '@superset/components';
+import { Label } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/list.mdx b/docs/developer_docs/components/ui/list.mdx
index 3ff0c30cd2d..06a3b028965 100644
--- a/docs/developer_docs/components/ui/list.mdx
+++ b/docs/developer_docs/components/ui/list.mdx
@@ -106,7 +106,7 @@ function Demo() {
## Import
```tsx
-import { List } from '@superset/components';
+import { List } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/listviewcard.mdx b/docs/developer_docs/components/ui/listviewcard.mdx
index 4d2ea55d81b..63af1c14f34 100644
--- a/docs/developer_docs/components/ui/listviewcard.mdx
+++ b/docs/developer_docs/components/ui/listviewcard.mdx
@@ -121,7 +121,7 @@ function Demo() {
## Import
```tsx
-import { ListViewCard } from '@superset/components';
+import { ListViewCard } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/loading.mdx b/docs/developer_docs/components/ui/loading.mdx
index 4033746d776..0326c19e90a 100644
--- a/docs/developer_docs/components/ui/loading.mdx
+++ b/docs/developer_docs/components/ui/loading.mdx
@@ -176,7 +176,7 @@ function ContextualDemo() {
## Import
```tsx
-import { Loading } from '@superset/components';
+import { Loading } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/menu.mdx b/docs/developer_docs/components/ui/menu.mdx
index 7dd4baac68d..c088eb538c7 100644
--- a/docs/developer_docs/components/ui/menu.mdx
+++ b/docs/developer_docs/components/ui/menu.mdx
@@ -163,7 +163,7 @@ function MenuWithIcons() {
## Import
```tsx
-import { Menu } from '@superset/components';
+import { Menu } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/modal.mdx b/docs/developer_docs/components/ui/modal.mdx
index 67a984dabb2..d1ed9b48234 100644
--- a/docs/developer_docs/components/ui/modal.mdx
+++ b/docs/developer_docs/components/ui/modal.mdx
@@ -196,7 +196,7 @@ function ConfirmationDialogs() {
## Import
```tsx
-import { Modal } from '@superset/components';
+import { Modal } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/modaltrigger.mdx b/docs/developer_docs/components/ui/modaltrigger.mdx
index 1c3eddd84fc..b9f5bd81b7d 100644
--- a/docs/developer_docs/components/ui/modaltrigger.mdx
+++ b/docs/developer_docs/components/ui/modaltrigger.mdx
@@ -181,7 +181,7 @@ function DraggableModal() {
## Import
```tsx
-import { ModalTrigger } from '@superset/components';
+import { ModalTrigger } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/popover.mdx b/docs/developer_docs/components/ui/popover.mdx
index 12f04d65700..0a3ad4b2d10 100644
--- a/docs/developer_docs/components/ui/popover.mdx
+++ b/docs/developer_docs/components/ui/popover.mdx
@@ -188,7 +188,7 @@ function RichPopover() {
## Import
```tsx
-import { Popover } from '@superset/components';
+import { Popover } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/progressbar.mdx b/docs/developer_docs/components/ui/progressbar.mdx
index 7bfd4d17491..4b68653ee11 100644
--- a/docs/developer_docs/components/ui/progressbar.mdx
+++ b/docs/developer_docs/components/ui/progressbar.mdx
@@ -195,7 +195,7 @@ function CustomColors() {
## Import
```tsx
-import { ProgressBar } from '@superset/components';
+import { ProgressBar } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/radio.mdx b/docs/developer_docs/components/ui/radio.mdx
index ee5c2a67bf7..69cdfcf2c06 100644
--- a/docs/developer_docs/components/ui/radio.mdx
+++ b/docs/developer_docs/components/ui/radio.mdx
@@ -126,7 +126,7 @@ function VerticalDemo() {
## Import
```tsx
-import { Radio } from '@superset/components';
+import { Radio } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/safemarkdown.mdx b/docs/developer_docs/components/ui/safemarkdown.mdx
index ab41307b235..8cb741b962c 100644
--- a/docs/developer_docs/components/ui/safemarkdown.mdx
+++ b/docs/developer_docs/components/ui/safemarkdown.mdx
@@ -74,7 +74,7 @@ function Demo() {
## Import
```tsx
-import { SafeMarkdown } from '@superset/components';
+import { SafeMarkdown } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/select.mdx b/docs/developer_docs/components/ui/select.mdx
index f84be6b30b0..262196d4ccc 100644
--- a/docs/developer_docs/components/ui/select.mdx
+++ b/docs/developer_docs/components/ui/select.mdx
@@ -297,7 +297,7 @@ function OneLineDemo() {
## Import
```tsx
-import { Select } from '@superset/components';
+import { Select } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/skeleton.mdx b/docs/developer_docs/components/ui/skeleton.mdx
index 71ea44a41d9..c4c0190babe 100644
--- a/docs/developer_docs/components/ui/skeleton.mdx
+++ b/docs/developer_docs/components/ui/skeleton.mdx
@@ -129,7 +129,7 @@ function Demo() {
## Import
```tsx
-import { Skeleton } from '@superset/components';
+import { Skeleton } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/slider.mdx b/docs/developer_docs/components/ui/slider.mdx
index bbcbbbffc4a..3edeeda4aa2 100644
--- a/docs/developer_docs/components/ui/slider.mdx
+++ b/docs/developer_docs/components/ui/slider.mdx
@@ -242,7 +242,7 @@ function VerticalDemo() {
## Import
```tsx
-import { Slider } from '@superset/components';
+import { Slider } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/steps.mdx b/docs/developer_docs/components/ui/steps.mdx
index bf76e0681c9..7d905a54131 100644
--- a/docs/developer_docs/components/ui/steps.mdx
+++ b/docs/developer_docs/components/ui/steps.mdx
@@ -261,7 +261,7 @@ function DotAndSmall() {
## Import
```tsx
-import { Steps } from '@superset/components';
+import { Steps } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/switch.mdx b/docs/developer_docs/components/ui/switch.mdx
index dc87c617f46..e0408c9b9d8 100644
--- a/docs/developer_docs/components/ui/switch.mdx
+++ b/docs/developer_docs/components/ui/switch.mdx
@@ -182,7 +182,7 @@ function SettingsPanel() {
## Import
```tsx
-import { Switch } from '@superset/components';
+import { Switch } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/tablecollection.mdx b/docs/developer_docs/components/ui/tablecollection.mdx
index 83d7ca23933..049a9cebeca 100644
--- a/docs/developer_docs/components/ui/tablecollection.mdx
+++ b/docs/developer_docs/components/ui/tablecollection.mdx
@@ -52,12 +52,6 @@ function Demo() {
-## Import
-
-```tsx
-import { TableCollection } from '@superset/components';
-```
-
---
:::tip[Improve this page]
diff --git a/docs/developer_docs/components/ui/tableview.mdx b/docs/developer_docs/components/ui/tableview.mdx
index 6904495d91f..b560e0b0249 100644
--- a/docs/developer_docs/components/ui/tableview.mdx
+++ b/docs/developer_docs/components/ui/tableview.mdx
@@ -283,7 +283,7 @@ function SortingDemo() {
## Import
```tsx
-import { TableView } from '@superset/components';
+import { TableView } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/tabs.mdx b/docs/developer_docs/components/ui/tabs.mdx
index aa31a094801..895aa63282b 100644
--- a/docs/developer_docs/components/ui/tabs.mdx
+++ b/docs/developer_docs/components/ui/tabs.mdx
@@ -212,7 +212,7 @@ function IconTabs() {
## Import
```tsx
-import { Tabs } from '@superset/components';
+import { Tabs } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/timer.mdx b/docs/developer_docs/components/ui/timer.mdx
index 1f8123cf60a..2562205e872 100644
--- a/docs/developer_docs/components/ui/timer.mdx
+++ b/docs/developer_docs/components/ui/timer.mdx
@@ -161,7 +161,7 @@ function StartStop() {
## Import
```tsx
-import { Timer } from '@superset/components';
+import { Timer } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/tooltip.mdx b/docs/developer_docs/components/ui/tooltip.mdx
index 6c958d2baa2..72620d7c0cf 100644
--- a/docs/developer_docs/components/ui/tooltip.mdx
+++ b/docs/developer_docs/components/ui/tooltip.mdx
@@ -160,7 +160,7 @@ function Triggers() {
## Import
```tsx
-import { Tooltip } from '@superset/components';
+import { Tooltip } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/tree.mdx b/docs/developer_docs/components/ui/tree.mdx
index 6ea5caf46a8..70bfbb173bd 100644
--- a/docs/developer_docs/components/ui/tree.mdx
+++ b/docs/developer_docs/components/ui/tree.mdx
@@ -257,7 +257,7 @@ function LinesAndIcons() {
## Import
```tsx
-import { Tree } from '@superset/components';
+import { Tree } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/treeselect.mdx b/docs/developer_docs/components/ui/treeselect.mdx
index e9c0e5583ab..9bdb8b61a2f 100644
--- a/docs/developer_docs/components/ui/treeselect.mdx
+++ b/docs/developer_docs/components/ui/treeselect.mdx
@@ -275,7 +275,7 @@ function TreeLinesDemo() {
## Import
```tsx
-import { TreeSelect } from '@superset/components';
+import { TreeSelect } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/typography.mdx b/docs/developer_docs/components/ui/typography.mdx
index 56e7ecbf559..5b441405972 100644
--- a/docs/developer_docs/components/ui/typography.mdx
+++ b/docs/developer_docs/components/ui/typography.mdx
@@ -225,7 +225,7 @@ function TextStyles() {
## Import
```tsx
-import { Typography } from '@superset/components';
+import { Typography } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/unsavedchangesmodal.mdx b/docs/developer_docs/components/ui/unsavedchangesmodal.mdx
index 8c7b855a8fd..5a4ba17618f 100644
--- a/docs/developer_docs/components/ui/unsavedchangesmodal.mdx
+++ b/docs/developer_docs/components/ui/unsavedchangesmodal.mdx
@@ -115,7 +115,7 @@ function CustomTitle() {
## Import
```tsx
-import { UnsavedChangesModal } from '@superset/components';
+import { UnsavedChangesModal } from '@superset-ui/core/components';
```
---
diff --git a/docs/developer_docs/components/ui/upload.mdx b/docs/developer_docs/components/ui/upload.mdx
index d41d2ed2e28..2499f342c6c 100644
--- a/docs/developer_docs/components/ui/upload.mdx
+++ b/docs/developer_docs/components/ui/upload.mdx
@@ -125,7 +125,7 @@ function DragDrop() {
## Import
```tsx
-import { Upload } from '@superset/components';
+import { Upload } from '@superset-ui/core/components';
```
---
diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts
index 898bf3ff1c8..19338b06b96 100644
--- a/docs/docusaurus.config.ts
+++ b/docs/docusaurus.config.ts
@@ -227,35 +227,28 @@ if (!versionsConfig.developer_docs.disabled && !versionsConfig.developer_docs.hi
});
}
-// Docusaurus Faster: Rspack bundler, SWC transpilation, and other build
-// optimizations. Only enabled for local development — CI runners (GitHub
-// Actions, Netlify) have ~8GB RAM and these features push memory usage over
-// the limit. See https://docusaurus.io/blog/releases/3.6#docusaurus-faster
-const isCI = process.env.CI === 'true';
const config: Config = {
- ...(!isCI && {
- future: {
- v4: {
- removeLegacyPostBuildHeadAttribute: true,
- // Disabled: CSS cascade layers change specificity and cause antd
- // styles (from Storybook component pages) to override theme styles
- useCssCascadeLayers: false,
- },
- experimental_faster: {
- swcJsLoader: true,
- swcJsMinimizer: true,
- swcHtmlMinimizer: true,
- lightningCssMinimizer: true,
- rspackBundler: true,
- mdxCrossCompilerCache: true,
- rspackPersistentCache: true,
- // SSG worker threads spawn parallel Node processes, each consuming
- // significant memory. Disabled to keep total usage reasonable.
- ssgWorkerThreads: false,
- },
+ future: {
+ v4: {
+ removeLegacyPostBuildHeadAttribute: true,
+ // Disabled: CSS cascade layers change specificity and cause antd
+ // styles (from Storybook component pages) to override theme styles
+ useCssCascadeLayers: false,
},
- }),
+ faster: {
+ swcJsLoader: false,
+ swcJsMinimizer: true,
+ swcHtmlMinimizer: true,
+ lightningCssMinimizer: true,
+ rspackBundler: true,
+ mdxCrossCompilerCache: true,
+ rspackPersistentCache: true,
+ // SSG worker threads spawn parallel Node processes, each consuming
+ // significant memory. Disabled to keep total usage reasonable.
+ ssgWorkerThreads: false,
+ },
+ },
title: 'Superset',
tagline:
'Apache Superset is a modern data exploration and visualization platform',
diff --git a/docs/scripts/generate-superset-components.mjs b/docs/scripts/generate-superset-components.mjs
index b3de2ba1dad..2244631d7ca 100644
--- a/docs/scripts/generate-superset-components.mjs
+++ b/docs/scripts/generate-superset-components.mjs
@@ -185,6 +185,76 @@ const SKIP_STORIES = [
];
+/**
+ * Collect the set of value names exported from a barrel file, following
+ * `export * from './X'` re-exports one level deep. Used to verify that a
+ * component the docs claim is importable is actually re-exported from the
+ * public package entry point.
+ */
+function collectBarrelExports(barrelPath, visited = new Set()) {
+ const exports = new Set();
+ if (!fs.existsSync(barrelPath) || visited.has(barrelPath)) return exports;
+ visited.add(barrelPath);
+
+ const content = fs.readFileSync(barrelPath, 'utf8');
+
+ for (const m of content.matchAll(/export\s+\{([\s\S]*?)\}(?:\s+from\s+['"][^'"]+['"])?/g)) {
+ for (const part of m[1].split(',')) {
+ const cleaned = part.trim().replace(/^type\s+/, '');
+ if (!cleaned) continue;
+ const asMatch = cleaned.match(/(?:^|\s)as\s+([A-Za-z_]\w*)\s*$/);
+ if (asMatch) {
+ exports.add(asMatch[1]);
+ } else {
+ const plain = cleaned.match(/^([A-Za-z_]\w*)\s*$/);
+ if (plain) exports.add(plain[1]);
+ }
+ }
+ }
+
+ for (const m of content.matchAll(
+ /export\s+(?:const|let|var|function|class)\s+([A-Za-z_]\w*)/g
+ )) {
+ exports.add(m[1]);
+ }
+
+ for (const m of content.matchAll(/export\s+\*\s+from\s+['"]([^'"]+)['"]/g)) {
+ const target = m[1];
+ if (!target.startsWith('.')) continue;
+ const baseDir = path.dirname(barrelPath);
+ const candidates = [
+ path.resolve(baseDir, `${target}.ts`),
+ path.resolve(baseDir, `${target}.tsx`),
+ path.resolve(baseDir, target, 'index.ts'),
+ path.resolve(baseDir, target, 'index.tsx'),
+ ];
+ const resolved = candidates.find(p => fs.existsSync(p));
+ if (resolved) {
+ for (const name of collectBarrelExports(resolved, visited)) {
+ exports.add(name);
+ }
+ }
+ }
+
+ return exports;
+}
+
+const SOURCE_PUBLIC_EXPORTS = new Map();
+function getPublicExports(sourceConfig) {
+ if (SOURCE_PUBLIC_EXPORTS.has(sourceConfig)) {
+ return SOURCE_PUBLIC_EXPORTS.get(sourceConfig);
+ }
+ const sourceDir = path.join(FRONTEND_DIR, sourceConfig.path);
+ const candidates = [
+ path.join(sourceDir, 'index.ts'),
+ path.join(sourceDir, 'index.tsx'),
+ ];
+ const barrel = candidates.find(p => fs.existsSync(p));
+ const result = barrel ? collectBarrelExports(barrel) : null;
+ SOURCE_PUBLIC_EXPORTS.set(sourceConfig, result);
+ return result;
+}
+
/**
* Recursively find all story files in a directory
*/
@@ -1048,6 +1118,28 @@ function generateMDX(component, storyContent) {
// Use resolved import path if available, otherwise fall back to source config
const componentImportPath = resolvedImportPath || sourceConfig.importPrefix;
+ // The displayed import in user docs should reflect the public package path,
+ // not the internal storybook alias.
+ const docImportPath = sourceConfig.importPrefix.startsWith('@superset/')
+ ? sourceConfig.docImportPrefix
+ : componentImportPath;
+
+ // When the source uses the internal storybook alias, the public package
+ // re-exports components as named exports (e.g. `export { default as Foo }`),
+ // so users must use named imports even when the story uses a default import.
+ const useDefaultImport =
+ isDefaultExport && !sourceConfig.importPrefix.startsWith('@superset/');
+
+ // Only render the import snippet if the component is actually re-exported
+ // from the public package barrel; otherwise the snippet would mislead users
+ // copy-pasting it (e.g. TableCollection, which has a story but is not
+ // re-exported from `@superset-ui/core/components`).
+ const publicExports = sourceConfig.importPrefix.startsWith('@superset/')
+ ? getPublicExports(sourceConfig)
+ : null;
+ const isPubliclyExported =
+ !publicExports || publicExports.has(componentName);
+
// Determine component description based on source
const defaultDesc = sourceConfig.category === 'ui'
? `The ${componentName} component from Superset's UI library.`
@@ -1134,13 +1226,13 @@ ${Object.keys(args).length > 0 ? `## Props
|------|------|---------|-------------|
${propsTable}` : ''}
-## Import
+${isPubliclyExported ? `## Import
\`\`\`tsx
-${isDefaultExport ? `import ${componentName} from '${componentImportPath}';` : `import { ${componentName} } from '${componentImportPath}';`}
+${useDefaultImport ? `import ${componentName} from '${docImportPath}';` : `import { ${componentName} } from '${docImportPath}';`}
\`\`\`
----
+---` : '---'}
:::tip[Improve this page]
This documentation is auto-generated from the component's Storybook story.
diff --git a/docs/src/data/databases.json b/docs/src/data/databases.json
index 38914dd7868..a10bf0303e5 100644
--- a/docs/src/data/databases.json
+++ b/docs/src/data/databases.json
@@ -1,13 +1,13 @@
{
- "generated": "2026-02-24T20:28:17.222Z",
+ "generated": "2026-04-25T02:18:43.905Z",
"statistics": {
- "totalDatabases": 72,
- "withDocumentation": 72,
- "withConnectionString": 72,
+ "totalDatabases": 73,
+ "withDocumentation": 73,
+ "withConnectionString": 73,
"withDrivers": 36,
- "withAuthMethods": 4,
- "supportsJoins": 68,
- "supportsSubqueries": 69,
+ "withAuthMethods": 5,
+ "supportsJoins": 69,
+ "supportsSubqueries": 70,
"supportsDynamicSchema": 15,
"supportsCatalog": 9,
"averageScore": 31,
@@ -23,6 +23,7 @@
"Amazon Athena",
"Google BigQuery",
"Databend",
+ "Google Datastore",
"IBM Db2",
"Denodo",
"Dremio",
@@ -177,10 +178,12 @@
],
"Cloud - Google": [
"Google BigQuery",
+ "Google Datastore",
"Google Sheets"
],
"Search & NoSQL": [
"Couchbase",
+ "Google Datastore",
"Amazon DynamoDB",
"Elasticsearch",
"MongoDB",
@@ -751,14 +754,14 @@
"OPEN_SOURCE"
],
"pypi_packages": [
- "clickhouse-connect>=0.6.8"
+ "clickhouse-connect>=0.13.0"
],
"connection_string": "clickhousedb://{username}:{password}@{host}:{port}/{database}",
"default_port": 8123,
"drivers": [
{
"name": "clickhouse-connect (Recommended)",
- "pypi_package": "clickhouse-connect>=0.6.8",
+ "pypi_package": "clickhouse-connect>=0.13.0",
"connection_string": "clickhousedb://{username}:{password}@{host}:{port}/{database}",
"is_recommended": true,
"notes": "Official ClickHouse Python driver with native protocol support."
@@ -781,7 +784,7 @@
"connection_string": "clickhousedb://localhost/default"
}
],
- "install_instructions": "echo \"clickhouse-connect>=0.6.8\" >> ./docker/requirements-local.txt",
+ "install_instructions": "echo \"clickhouse-connect>=0.13.0\" >> ./docker/requirements-local.txt",
"compatible_databases": [
{
"name": "ClickHouse Cloud",
@@ -794,7 +797,7 @@
"HOSTED_OPEN_SOURCE"
],
"pypi_packages": [
- "clickhouse-connect>=0.6.8"
+ "clickhouse-connect>=0.13.0"
],
"connection_string": "clickhousedb://{username}:{password}@{host}:8443/{database}?secure=true",
"parameters": {
@@ -816,7 +819,7 @@
"HOSTED_OPEN_SOURCE"
],
"pypi_packages": [
- "clickhouse-connect>=0.6.8"
+ "clickhouse-connect>=0.13.0"
],
"connection_string": "clickhousedb://{username}:{password}@{host}/{database}?secure=true",
"docs_url": "https://docs.altinity.com/"
@@ -1013,7 +1016,7 @@
"documentation": {
"description": "CrateDB is a distributed SQL database for machine data and IoT workloads.",
"logo": "cratedb.svg",
- "homepage_url": "https://crate.io/",
+ "homepage_url": "https://cratedb.com",
"categories": [
"TIME_SERIES",
"OPEN_SOURCE"
@@ -1296,6 +1299,114 @@
"query_cost_estimation": false,
"sql_validation": false
},
+ "Google Datastore": {
+ "engine": "google_datastore",
+ "engine_name": "Google Datastore",
+ "module": "datastore",
+ "documentation": {
+ "description": "Google Cloud Datastore is a highly scalable NoSQL database for your applications.",
+ "logo": "datastore.png",
+ "homepage_url": "https://cloud.google.com/datastore/",
+ "categories": [
+ "CLOUD_GCP",
+ "SEARCH_NOSQL",
+ "PROPRIETARY"
+ ],
+ "pypi_packages": [
+ "python-datastore-sqlalchemy"
+ ],
+ "connection_string": "datastore://{project_id}/?database={database_id}",
+ "authentication_methods": [
+ {
+ "name": "Service Account JSON",
+ "description": "Upload service account credentials JSON or paste in Secure Extra",
+ "secure_extra": {
+ "credentials_info": {
+ "type": "service_account",
+ "project_id": "...",
+ "private_key_id": "...",
+ "private_key": "...",
+ "client_email": "...",
+ "client_id": "...",
+ "auth_uri": "...",
+ "token_uri": "..."
+ }
+ }
+ }
+ ],
+ "notes": "Create a Service Account via GCP console with access to datastore datasets.",
+ "docs_url": "https://github.com/splasky/Python-datastore-sqlalchemy",
+ "custom_errors": [
+ {
+ "regex_name": "CONNECTION_DATABASE_PERMISSIONS_REGEX",
+ "message_template": "Unable to connect. Verify that the following roles are set on the service account: \"Cloud Datastore Viewer\", \"Cloud Datastore User\", \"Cloud Datastore Creator\"",
+ "error_type": "CONNECTION_DATABASE_PERMISSIONS_ERROR",
+ "category": "Permissions",
+ "description": "Insufficient permissions",
+ "issue_codes": [
+ 1017
+ ]
+ },
+ {
+ "regex_name": "TABLE_DOES_NOT_EXIST_REGEX",
+ "message_template": "The table \"%(table)s\" does not exist. A valid table must be used to run this query.",
+ "error_type": "TABLE_DOES_NOT_EXIST_ERROR",
+ "category": "Query",
+ "description": "Table not found",
+ "issue_codes": [
+ 1003,
+ 1005
+ ]
+ },
+ {
+ "regex_name": "COLUMN_DOES_NOT_EXIST_REGEX",
+ "message_template": "We can't seem to resolve column \"%(column)s\" at line %(location)s.",
+ "error_type": "COLUMN_DOES_NOT_EXIST_ERROR",
+ "category": "Query",
+ "description": "Column not found",
+ "issue_codes": [
+ 1003,
+ 1004
+ ]
+ },
+ {
+ "regex_name": "SCHEMA_DOES_NOT_EXIST_REGEX",
+ "message_template": "The schema \"%(schema)s\" does not exist. A valid schema must be used to run this query.",
+ "error_type": "SCHEMA_DOES_NOT_EXIST_ERROR",
+ "category": "Query",
+ "description": "Schema not found",
+ "issue_codes": [
+ 1003,
+ 1016
+ ]
+ },
+ {
+ "regex_name": "SYNTAX_ERROR_REGEX",
+ "message_template": "Please check your query for syntax errors at or near \"%(syntax_error)s\". Then, try running your query again.",
+ "error_type": "SYNTAX_ERROR",
+ "category": "Query",
+ "description": "SQL syntax error",
+ "issue_codes": [
+ 1030
+ ]
+ }
+ ]
+ },
+ "time_grains": {},
+ "score": 0,
+ "max_score": 0,
+ "joins": true,
+ "subqueries": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
+ "ssh_tunneling": false,
+ "query_cancelation": false,
+ "supports_file_upload": false,
+ "user_impersonation": false,
+ "query_cost_estimation": false,
+ "sql_validation": false
+ },
"IBM Db2": {
"engine": "ibm_db2",
"engine_name": "IBM Db2",
@@ -4754,9 +4865,9 @@
}
},
{
- "name": "IAM Credentials (Serverless)",
- "description": "Use IAM-based credentials for Redshift Serverless",
- "requirements": "IAM role must have redshift-serverless:GetCredentials and redshift-serverless:GetWorkgroup permissions",
+ "name": "IAM Role (Serverless)",
+ "description": "Authenticate using the IAM role attached to the environment (EC2 instance profile, ECS task role, etc.). No credentials needed.",
+ "requirements": "The attached IAM role must have redshift-serverless:GetCredentials and redshift-serverless:GetWorkgroup permissions.",
"connection_string": "redshift+redshift_connector://",
"engine_parameters": {
"connect_args": {
@@ -4768,6 +4879,26 @@
"user": "IAMR:"
}
}
+ },
+ {
+ "name": "IAM Access Key (Serverless)",
+ "description": "Authenticate using explicit AWS access key and secret. Suitable for local development or CI environments without an attached IAM role.",
+ "requirements": "The IAM user must have redshift-serverless:GetCredentials and redshift-serverless:GetWorkgroup permissions.",
+ "connection_string": "redshift+redshift_connector://",
+ "engine_parameters": {
+ "connect_args": {
+ "iam": true,
+ "is_serverless": true,
+ "serverless_acct_id": "",
+ "serverless_work_group": "",
+ "database": "",
+ "host": "",
+ "port": 5439,
+ "region": "",
+ "access_key_id": "",
+ "secret_access_key": ""
+ }
+ }
}
],
"custom_errors": [