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/ Atoms = Foundations, Molecules = Components, Organisms = Patterns, Templates = Templates, Pages / Screens = Features ---- - -## 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": [