From ea61bd360e2b9dc1fe9c4c25b78e22924d201d32 Mon Sep 17 00:00:00 2001 From: Metabase Docs bot Date: Tue, 9 Jun 2026 00:21:25 +0000 Subject: [PATCH] [auto] adding content to release-x.62.x->release-x.62.x --- _data/shared_chrome.json | 12 +- _docs/latest/CONTRIBUTING.md | 2 +- _docs/latest/README.md | 6 +- _docs/latest/actions/basic.md | 2 +- _docs/latest/actions/custom.md | 2 +- _docs/latest/actions/introduction.md | 2 +- _docs/latest/actions/start.md | 2 +- _docs/latest/ai/agent-api.md | 2 +- _docs/latest/ai/customization.md | 2 +- _docs/latest/ai/file-based-development.md | 305 +- _docs/latest/ai/mcp.md | 29 +- _docs/latest/ai/metabot-slack.md | 2 +- _docs/latest/ai/metabot.md | 2 +- _docs/latest/ai/overview.md | 4 +- _docs/latest/ai/privacy.md | 2 +- _docs/latest/ai/settings.md | 2 +- _docs/latest/ai/start.md | 2 +- _docs/latest/ai/system-prompts.md | 2 +- _docs/latest/ai/usage-auditing.md | 2 +- _docs/latest/ai/usage-controls.md | 2 +- _docs/latest/api.html | 2 +- _docs/latest/api.json | 14161 ++++++++++------ .../latest/configuring-metabase/appearance.md | 4 +- _docs/latest/configuring-metabase/caching.md | 2 +- .../configuring-metabase/config-file.md | 2 +- .../configuring-metabase/config-template.md | 8 +- .../configuring-metabase/custom-maps.md | 2 +- .../customizing-jetty-webserver.md | 2 +- _docs/latest/configuring-metabase/email.md | 2 +- .../environment-variables.md | 167 +- _docs/latest/configuring-metabase/fonts.md | 8 +- .../configuring-metabase/localization.md | 2 +- .../configuring-metabase/log-configuration.md | 2 +- .../setting-up-metabase.md | 2 +- _docs/latest/configuring-metabase/settings.md | 26 +- _docs/latest/configuring-metabase/slack.md | 2 +- _docs/latest/configuring-metabase/start.md | 6 +- .../latest/configuring-metabase/timezones.md | 2 +- _docs/latest/configuring-metabase/webhooks.md | 2 +- _docs/latest/dashboards/actions.md | 2 +- _docs/latest/dashboards/filters.md | 22 +- .../dashboards/images/selectable-values.png | Bin 87329 -> 230077 bytes _docs/latest/dashboards/interactive.md | 2 +- _docs/latest/dashboards/introduction.md | 2 +- _docs/latest/dashboards/linked-filters.md | 2 +- _docs/latest/dashboards/multiple-series.md | 2 +- _docs/latest/dashboards/start.md | 2 +- _docs/latest/dashboards/subscriptions.md | 2 +- _docs/latest/data-modeling/editable-tables.md | 2 +- _docs/latest/data-modeling/formatting.md | 2 +- _docs/latest/data-modeling/json-unfolding.md | 2 +- _docs/latest/data-modeling/legacy-metrics.md | 2 +- .../latest/data-modeling/metadata-editing.md | 2 +- _docs/latest/data-modeling/metrics.md | 2 +- .../latest/data-modeling/model-persistence.md | 2 +- _docs/latest/data-modeling/models.md | 2 +- _docs/latest/data-modeling/segments.md | 2 +- _docs/latest/data-modeling/semantic-types.md | 2 +- _docs/latest/data-modeling/start.md | 2 +- .../data-studio/dependencies/diagnostics.md | 2 +- .../latest/data-studio/dependencies/graph.md | 2 +- .../dependencies/replace-data-sources.md | 2 +- _docs/latest/data-studio/library.md | 2 +- _docs/latest/data-studio/managing-tables.md | 2 +- _docs/latest/data-studio/measures.md | 2 +- _docs/latest/data-studio/overview.md | 2 +- _docs/latest/data-studio/segments.md | 2 +- _docs/latest/data-studio/transforms/addons.md | 2 +- .../data-studio/transforms/jobs-and-runs.md | 2 +- .../data-studio/transforms/python-runner.md | 2 +- .../transforms/python-transforms.md | 2 +- .../transforms/query-transforms.md | 2 +- .../transforms/transform-inspector.md | 2 +- .../transforms/transforms-overview.md | 2 +- _docs/latest/databases/connecting.md | 2 +- _docs/latest/databases/connections/athena.md | 2 +- _docs/latest/databases/connections/aws-rds.md | 2 +- .../latest/databases/connections/bigquery.md | 2 +- .../databases/connections/clickhouse.md | 2 +- .../databases/connections/databricks.md | 2 +- _docs/latest/databases/connections/druid.md | 2 +- _docs/latest/databases/connections/mariadb.md | 2 +- _docs/latest/databases/connections/mongodb.md | 2 +- _docs/latest/databases/connections/mysql.md | 2 +- _docs/latest/databases/connections/oracle.md | 2 +- .../databases/connections/postgresql.md | 2 +- _docs/latest/databases/connections/presto.md | 2 +- .../latest/databases/connections/redshift.md | 2 +- .../latest/databases/connections/snowflake.md | 2 +- .../latest/databases/connections/sparksql.md | 2 +- .../databases/connections/sql-server.md | 2 +- _docs/latest/databases/connections/sqlite.md | 2 +- .../latest/databases/connections/starburst.md | 2 +- _docs/latest/databases/connections/vertica.md | 2 +- _docs/latest/databases/danger-zone.md | 2 +- .../databases/encrypting-details-at-rest.md | 2 +- _docs/latest/databases/ssh-tunnel.md | 2 +- _docs/latest/databases/ssl-certificates.md | 2 +- _docs/latest/databases/start.md | 2 +- _docs/latest/databases/sync-scan.md | 2 +- _docs/latest/databases/uploads.md | 2 +- .../databases/users-roles-privileges.md | 2 +- _docs/latest/databases/writable-connection.md | 2 +- .../latest/developers-guide/api-changelog.md | 2 +- _docs/latest/developers-guide/build.md | 2 +- _docs/latest/developers-guide/clojure.md | 2 +- _docs/latest/developers-guide/code-reviews.md | 2 +- .../developers-guide/community-drivers.md | 2 +- .../developers-guide/custom-visualizations.md | 442 + .../developers-guide/dev-branch-docker.md | 2 +- _docs/latest/developers-guide/devenv.md | 2 +- _docs/latest/developers-guide/docs.md | 2 +- .../developers-guide/driver-changelog.md | 73 +- .../latest/developers-guide/drivers/basics.md | 2 +- .../developers-guide/drivers/driver-tests.md | 4 +- .../developers-guide/drivers/multimethods.md | 2 +- .../developers-guide/drivers/plugins.md | 2 +- .../latest/developers-guide/drivers/start.md | 2 +- _docs/latest/developers-guide/e2e-tests.md | 2 +- _docs/latest/developers-guide/emacs.md | 2 +- _docs/latest/developers-guide/frontend.md | 2 +- .../images/custom-viz-dev.png | Bin 0 -> 216588 bytes .../developers-guide/internationalization.md | 2 +- _docs/latest/developers-guide/mage.md | 2 +- .../mbql-library-changelog.md | 2 +- .../security-token-scanner.md | 2 +- _docs/latest/developers-guide/start.md | 6 +- _docs/latest/developers-guide/versioning.md | 2 +- .../developers-guide/visual-studio-code.md | 2 +- _docs/latest/developers-guide/visual-tests.md | 2 +- _docs/latest/documents/introduction.md | 2 +- _docs/latest/documents/start.md | 2 +- _docs/latest/embedding/ai-agent-resources.md | 2 +- _docs/latest/embedding/appearance.md | 2 +- _docs/latest/embedding/authentication.md | 2 +- _docs/latest/embedding/components.md | 2 +- .../snippets/MetabaseBrowserAttributes.md | 2 +- .../snippets/MetabaseDashboardAttributes.md | 29 +- .../snippets/MetabaseMetabotAttributes.md | 2 +- .../snippets/MetabaseQuestionAttributes.md | 3 +- _docs/latest/embedding/eajs/snippets/index.md | 2 +- .../full-app-embedding-quick-start-guide.md | 2 +- _docs/latest/embedding/full-app-embedding.md | 2 +- .../embedding/full-app-ui-components.md | 2 +- _docs/latest/embedding/guest-embedding.md | 7 +- _docs/latest/embedding/introduction.md | 2 +- _docs/latest/embedding/modular-embedding.md | 6 +- _docs/latest/embedding/parameters.md | 185 + _docs/latest/embedding/public-links.md | 2 +- _docs/latest/embedding/sdk/ai-chat.md | 2 +- .../latest/embedding/sdk/api/ButtonProps.html | 2 +- .../latest/embedding/sdk/api/ChartColor.html | 2 +- .../embedding/sdk/api/ChartColorV2.html | 2 +- .../embedding/sdk/api/CollectionBrowser.html | 2 +- .../sdk/api/CollectionBrowserListColumns.html | 2 +- .../sdk/api/CollectionBrowserProps.html | 2 +- .../sdk/api/CreateDashboardModal.html | 2 +- .../sdk/api/CreateDashboardModalProps.html | 2 +- .../sdk/api/CreateDashboardValues.html | 2 +- .../embedding/sdk/api/CreateQuestion.html | 30 +- .../sdk/api/CreateQuestionProps.html | 37 +- .../sdk/api/CustomDashboardCardMenuItem.html | 2 +- .../embedding/sdk/api/DashCardMenuItem.html | 2 +- .../sdk/api/DashboardCardCustomMenuItem.html | 2 +- .../embedding/sdk/api/DashboardCardMenu.html | 2 +- .../api/DashboardCardMenuCustomElement.html | 2 +- .../sdk/api/DrillThroughQuestionProps.html | 20 +- .../embedding/sdk/api/EditableDashboard.html | 30 +- .../sdk/api/EditableDashboardProps.html | 51 +- .../sdk/api/EmbeddingDataPicker.html | 2 +- .../sdk/api/EmbeddingEntityType.html | 2 +- .../sdk/api/EntityTypeFilterKeys.html | 2 +- _docs/latest/embedding/sdk/api/IconName.html | 4 +- .../sdk/api/InitializationStatus.html | 2 +- .../sdk/api/InteractiveDashboard.html | 34 +- .../sdk/api/InteractiveDashboardProps.html | 51 +- .../sdk/api/InteractiveQuestion.html | 28 +- .../InteractiveQuestionBackButtonProps.html | 2 +- ...eractiveQuestionBreakoutDropdownProps.html | 2 +- ...ractiveQuestionChartTypeDropdownProps.html | 2 +- ...ractiveQuestionChartTypeSelectorProps.html | 2 +- .../api/InteractiveQuestionComponents.html | 2 +- ...veQuestionDownloadWidgetDropdownProps.html | 2 +- ...nteractiveQuestionDownloadWidgetProps.html | 2 +- .../InteractiveQuestionEditorButtonProps.html | 2 +- .../api/InteractiveQuestionEditorProps.html | 2 +- ...nteractiveQuestionFilterDropdownProps.html | 2 +- .../api/InteractiveQuestionFilterProps.html | 2 +- .../sdk/api/InteractiveQuestionProps.html | 35 +- ...QuestionQuestionSettingsDropdownProps.html | 2 +- ...eractiveQuestionQuestionSettingsProps.html | 2 +- ...iveQuestionQuestionVisualizationProps.html | 2 +- .../InteractiveQuestionResetButtonProps.html | 2 +- .../InteractiveQuestionSaveButtonProps.html | 2 +- ...eractiveQuestionSaveQuestionFormProps.html | 2 +- ...ractiveQuestionSummarizeDropdownProps.html | 2 +- .../api/InteractiveQuestionTitleProps.html | 2 +- .../latest/embedding/sdk/api/LoginStatus.html | 2 +- .../embedding/sdk/api/MetabaseAuthConfig.html | 2 +- .../sdk/api/MetabaseAuthConfigWithApiKey.html | 2 +- .../sdk/api/MetabaseAuthConfigWithJwt.html | 2 +- .../sdk/api/MetabaseAuthConfigWithSaml.html | 2 +- .../sdk/api/MetabaseClickAction.html | 2 +- .../api/MetabaseClickActionPluginsConfig.html | 2 +- .../embedding/sdk/api/MetabaseCollection.html | 2 +- .../sdk/api/MetabaseCollectionItem.html | 2 +- .../embedding/sdk/api/MetabaseColorKey.html | 2 +- .../embedding/sdk/api/MetabaseColors.html | 2 +- .../sdk/api/MetabaseComponentTheme.html | 2 +- .../embedding/sdk/api/MetabaseDashboard.html | 2 +- .../api/MetabaseDashboardPluginsConfig.html | 2 +- .../sdk/api/MetabaseDataPointObject.html | 2 +- .../sdk/api/MetabaseEmbeddingColorKeyV2.html | 2 +- .../sdk/api/MetabaseEmbeddingTheme.html | 2 +- .../sdk/api/MetabaseEmbeddingThemeV2.html | 2 +- .../sdk/api/MetabaseFetchRequestTokenFn.html | 2 +- .../embedding/sdk/api/MetabaseFontFamily.html | 4 +- .../sdk/api/MetabaseGlobalPluginsConfig.html | 2 +- .../sdk/api/MetabaseIsGuestAuthConfig.html | 2 +- .../sdk/api/MetabasePluginsConfig.html | 2 +- .../embedding/sdk/api/MetabaseProvider.html | 2 +- .../sdk/api/MetabaseProviderProps.html | 2 +- .../embedding/sdk/api/MetabaseQuestion.html | 2 +- .../embedding/sdk/api/MetabaseTheme.html | 2 +- .../sdk/api/MetabaseThemePreset.html | 2 +- .../embedding/sdk/api/MetabaseUser.html | 2 +- .../sdk/api/MetabotAgentChartMessage.html | 2 +- .../sdk/api/MetabotAgentMessage.html | 2 +- .../sdk/api/MetabotAgentTextMessage.html | 2 +- .../embedding/sdk/api/MetabotChartProps.html | 2 +- .../sdk/api/MetabotErrorMessage.html | 2 +- .../embedding/sdk/api/MetabotMessage.html | 2 +- .../embedding/sdk/api/MetabotQuestion.html | 2 +- .../sdk/api/MetabotQuestionProps.html | 2 +- .../sdk/api/MetabotUserTextMessage.html | 2 +- .../sdk/api/ParameterChangePayload.html | 19 + .../sdk/api/ParameterChangeSource.html | 20 + .../embedding/sdk/api/ParameterValues.html | 2 +- .../embedding/sdk/api/ProtectedColorKey.html | 2 +- .../embedding/sdk/api/SdkCollectionId.html | 2 +- .../api/SdkDashboardEntityPublicProps.html | 2 +- .../embedding/sdk/api/SdkDashboardId.html | 2 +- .../sdk/api/SdkDashboardLoadEvent.html | 2 +- .../latest/embedding/sdk/api/SdkEntityId.html | 2 +- .../embedding/sdk/api/SdkEntityToken.html | 2 +- .../embedding/sdk/api/SdkErrorComponent.html | 2 +- .../sdk/api/SdkErrorComponentProps.html | 2 +- .../sdk/api/SdkEventHandlersConfig.html | 2 +- .../sdk/api/SdkQuestionEntityPublicProps.html | 2 +- .../embedding/sdk/api/SdkQuestionId.html | 2 +- .../embedding/sdk/api/SdkQuestionProps.html | 37 +- .../sdk/api/SdkQuestionTitleProps.html | 2 +- _docs/latest/embedding/sdk/api/SdkUserId.html | 2 +- .../sdk/api/SqlParameterChangePayload.html | 18 + .../sdk/api/SqlParameterChangeSource.html | 20 + .../embedding/sdk/api/SqlParameterValues.html | 2 +- .../embedding/sdk/api/StaticDashboard.html | 30 +- .../sdk/api/StaticDashboardProps.html | 38 +- .../embedding/sdk/api/StaticQuestion.html | 27 +- .../sdk/api/StaticQuestionComponents.html | 2 +- .../sdk/api/StaticQuestionProps.html | 33 +- .../embedding/sdk/api/UseMetabotResult.html | 2 +- .../sdk/api/UserBackendJwtResponse.html | 2 +- .../embedding/sdk/api/assets/navigation.js | 2 +- .../latest/embedding/sdk/api/assets/search.js | 2 +- .../sdk/api/defineMetabaseAuthConfig.html | 2 +- _docs/latest/embedding/sdk/api/index.html | 4 +- .../embedding/sdk/api/snippets/ButtonProps.md | 2 +- .../embedding/sdk/api/snippets/ChartColor.md | 2 +- .../sdk/api/snippets/ChartColorV2.md | 2 +- .../sdk/api/snippets/CollectionBrowser.md | 2 +- .../snippets/CollectionBrowserListColumns.md | 2 +- .../api/snippets/CollectionBrowserProps.md | 2 +- .../sdk/api/snippets/CreateDashboardModal.md | 2 +- .../api/snippets/CreateDashboardModalProps.md | 2 +- .../sdk/api/snippets/CreateDashboardValues.md | 2 +- .../sdk/api/snippets/CreateQuestion.md | 2 +- .../sdk/api/snippets/CreateQuestionProps.md | 51 +- .../snippets/CustomDashboardCardMenuItem.md | 2 +- .../sdk/api/snippets/DashCardMenuItem.md | 2 +- .../snippets/DashboardCardCustomMenuItem.md | 2 +- .../sdk/api/snippets/DashboardCardMenu.md | 2 +- .../DashboardCardMenuCustomElement.md | 2 +- .../api/snippets/DrillThroughQuestionProps.md | 45 +- .../sdk/api/snippets/EditableDashboard.md | 2 +- .../api/snippets/EditableDashboardProps.md | 48 +- .../sdk/api/snippets/EmbeddingDataPicker.md | 2 +- .../sdk/api/snippets/EmbeddingEntityType.md | 2 +- .../sdk/api/snippets/EntityTypeFilterKeys.md | 2 +- .../embedding/sdk/api/snippets/IconName.md | 4 +- .../sdk/api/snippets/InitializationStatus.md | 2 +- .../sdk/api/snippets/InteractiveDashboard.md | 10 +- .../api/snippets/InteractiveDashboardProps.md | 48 +- .../sdk/api/snippets/InteractiveQuestion.md | 2 +- .../InteractiveQuestionBackButtonProps.md | 2 +- ...nteractiveQuestionBreakoutDropdownProps.md | 2 +- ...teractiveQuestionChartTypeDropdownProps.md | 2 +- ...teractiveQuestionChartTypeSelectorProps.md | 2 +- .../snippets/InteractiveQuestionComponents.md | 2 +- ...tiveQuestionDownloadWidgetDropdownProps.md | 2 +- .../InteractiveQuestionDownloadWidgetProps.md | 2 +- .../InteractiveQuestionEditorButtonProps.md | 2 +- .../InteractiveQuestionEditorProps.md | 2 +- .../InteractiveQuestionFilterDropdownProps.md | 2 +- .../InteractiveQuestionFilterProps.md | 2 +- .../api/snippets/InteractiveQuestionProps.md | 7 +- ...veQuestionQuestionSettingsDropdownProps.md | 2 +- ...nteractiveQuestionQuestionSettingsProps.md | 2 +- ...ctiveQuestionQuestionVisualizationProps.md | 2 +- .../InteractiveQuestionResetButtonProps.md | 2 +- .../InteractiveQuestionSaveButtonProps.md | 2 +- ...nteractiveQuestionSaveQuestionFormProps.md | 2 +- ...teractiveQuestionSummarizeDropdownProps.md | 2 +- .../snippets/InteractiveQuestionTitleProps.md | 2 +- .../embedding/sdk/api/snippets/LoginStatus.md | 2 +- .../sdk/api/snippets/MetabaseAuthConfig.md | 2 +- .../snippets/MetabaseAuthConfigWithApiKey.md | 2 +- .../api/snippets/MetabaseAuthConfigWithJwt.md | 2 +- .../snippets/MetabaseAuthConfigWithSaml.md | 2 +- .../sdk/api/snippets/MetabaseClickAction.md | 2 +- .../MetabaseClickActionPluginsConfig.md | 2 +- .../sdk/api/snippets/MetabaseCollection.md | 2 +- .../api/snippets/MetabaseCollectionItem.md | 2 +- .../sdk/api/snippets/MetabaseColorKey.md | 2 +- .../sdk/api/snippets/MetabaseColors.md | 2 +- .../api/snippets/MetabaseComponentTheme.md | 2 +- .../sdk/api/snippets/MetabaseDashboard.md | 2 +- .../MetabaseDashboardPluginsConfig.md | 2 +- .../api/snippets/MetabaseDataPointObject.md | 2 +- .../snippets/MetabaseEmbeddingColorKeyV2.md | 2 +- .../api/snippets/MetabaseEmbeddingTheme.md | 2 +- .../api/snippets/MetabaseEmbeddingThemeV2.md | 2 +- .../snippets/MetabaseFetchRequestTokenFn.md | 2 +- .../sdk/api/snippets/MetabaseFontFamily.md | 3 +- .../snippets/MetabaseGlobalPluginsConfig.md | 2 +- .../api/snippets/MetabaseIsGuestAuthConfig.md | 2 +- .../sdk/api/snippets/MetabasePluginsConfig.md | 2 +- .../sdk/api/snippets/MetabaseProvider.md | 2 +- .../sdk/api/snippets/MetabaseProviderProps.md | 2 +- .../sdk/api/snippets/MetabaseQuestion.md | 2 +- .../sdk/api/snippets/MetabaseTheme.md | 2 +- .../sdk/api/snippets/MetabaseThemePreset.md | 2 +- .../sdk/api/snippets/MetabaseUser.md | 2 +- .../api/snippets/MetabotAgentChartMessage.md | 2 +- .../sdk/api/snippets/MetabotAgentMessage.md | 2 +- .../api/snippets/MetabotAgentTextMessage.md | 2 +- .../sdk/api/snippets/MetabotChartProps.md | 2 +- .../sdk/api/snippets/MetabotErrorMessage.md | 2 +- .../sdk/api/snippets/MetabotMessage.md | 2 +- .../sdk/api/snippets/MetabotQuestion.md | 2 +- .../sdk/api/snippets/MetabotQuestionProps.md | 2 +- .../api/snippets/MetabotUserTextMessage.md | 2 +- .../api/snippets/ParameterChangePayload.md | 36 + .../sdk/api/snippets/ParameterChangeSource.md | 22 + .../sdk/api/snippets/ParameterValues.md | 2 +- .../sdk/api/snippets/ProtectedColorKey.md | 2 +- .../sdk/api/snippets/SdkCollectionId.md | 2 +- .../snippets/SdkDashboardEntityPublicProps.md | 2 +- .../sdk/api/snippets/SdkDashboardId.md | 2 +- .../sdk/api/snippets/SdkDashboardLoadEvent.md | 2 +- .../embedding/sdk/api/snippets/SdkEntityId.md | 2 +- .../sdk/api/snippets/SdkEntityToken.md | 2 +- .../sdk/api/snippets/SdkErrorComponent.md | 2 +- .../api/snippets/SdkErrorComponentProps.md | 2 +- .../api/snippets/SdkEventHandlersConfig.md | 2 +- .../snippets/SdkQuestionEntityPublicProps.md | 2 +- .../sdk/api/snippets/SdkQuestionId.md | 2 +- .../sdk/api/snippets/SdkQuestionProps.md | 55 +- .../sdk/api/snippets/SdkQuestionTitleProps.md | 2 +- .../embedding/sdk/api/snippets/SdkUserId.md | 2 +- .../api/snippets/SqlParameterChangePayload.md | 34 + .../api/snippets/SqlParameterChangeSource.md | 25 + .../sdk/api/snippets/SqlParameterValues.md | 2 +- .../sdk/api/snippets/StaticDashboard.md | 2 +- .../sdk/api/snippets/StaticDashboardProps.md | 40 +- .../sdk/api/snippets/StaticQuestion.md | 2 +- .../api/snippets/StaticQuestionComponents.md | 2 +- .../sdk/api/snippets/StaticQuestionProps.md | 6 +- .../sdk/api/snippets/UseMetabotResult.md | 2 +- .../api/snippets/UserBackendJwtResponse.md | 2 +- .../api/snippets/defineMetabaseAuthConfig.md | 2 +- .../embedding/sdk/api/snippets/index.md | 70 +- .../sdk/api/snippets/useApplicationName.md | 2 +- .../sdk/api/snippets/useAvailableFonts.md | 2 +- .../sdk/api/snippets/useCreateDashboardApi.md | 2 +- .../sdk/api/snippets/useCurrentUser.md | 2 +- .../sdk/api/snippets/useMetabaseAuthStatus.md | 2 +- .../embedding/sdk/api/snippets/useMetabot.md | 2 +- .../embedding/sdk/api/useApplicationName.html | 2 +- .../embedding/sdk/api/useAvailableFonts.html | 2 +- .../sdk/api/useCreateDashboardApi.html | 2 +- .../embedding/sdk/api/useCurrentUser.html | 2 +- .../sdk/api/useMetabaseAuthStatus.html | 2 +- .../latest/embedding/sdk/api/useMetabot.html | 2 +- _docs/latest/embedding/sdk/collections.md | 2 +- _docs/latest/embedding/sdk/config.md | 2 +- _docs/latest/embedding/sdk/dashboards.md | 6 +- _docs/latest/embedding/sdk/introduction.md | 2 +- _docs/latest/embedding/sdk/next-js.md | 2 +- _docs/latest/embedding/sdk/plugins.md | 2 +- _docs/latest/embedding/sdk/questions.md | 12 +- _docs/latest/embedding/sdk/quickstart-cli.md | 2 +- .../sdk/quickstart-with-sample-app.md | 2 +- _docs/latest/embedding/sdk/quickstart.md | 2 +- _docs/latest/embedding/sdk/upgrade.md | 2 +- _docs/latest/embedding/sdk/version.md | 2 +- _docs/latest/embedding/securing-embeds.md | 2 +- .../dashboards/controlled-parameters.tsx | 52 + .../dashboards/initial-parameters.tsx | 14 + .../questions/controlled-sql-parameters.tsx | 44 + .../questions/initial-sql-parameters.tsx | 0 _docs/latest/embedding/start.md | 2 +- .../embedding/static-embedding-parameters.md | 2 +- _docs/latest/embedding/static-embedding.md | 2 +- _docs/latest/embedding/tenants.md | 2 +- _docs/latest/embedding/translations.md | 2 +- .../collections.md | 2 +- .../content-verification.md | 2 +- .../data-model-reference.md | 2 +- .../delete-and-restore.md | 2 +- .../events-and-timelines.md | 2 +- .../exploration.md | 2 +- .../exploration-and-organization/history.md | 2 +- .../keyboard-shortcuts.md | 2 +- .../exploration-and-organization/start.md | 2 +- .../exploration-and-organization/uploads.md | 2 +- .../exploration-and-organization/x-rays.md | 4 +- .../accessibility.md | 2 +- .../activating-the-enterprise-edition.md | 2 +- .../backing-up-metabase-application-data.md | 2 +- .../installation-and-operation/commands.md | 15 +- .../configuring-application-database.md | 2 +- .../creating-RDS-database-on-AWS.md | 2 +- .../development-instance.md | 2 +- .../information-collection.md | 2 +- .../installing-metabase.md | 2 +- .../metabase-cli.md | 89 + .../migrating-from-h2.md | 2 +- .../monitoring-metabase.md | 2 +- .../observability-with-prometheus.md | 2 +- .../installation-and-operation/privacy.md | 2 +- .../installation-and-operation/remote-sync.md | 2 +- .../running-metabase-as-service.md | 2 +- .../running-metabase-on-azure.md | 2 +- .../running-metabase-on-docker.md | 2 +- .../running-metabase-on-elastic-beanstalk.md | 2 +- .../running-metabase-on-podman.md | 2 +- .../running-the-metabase-jar-file.md | 2 +- .../security-center.md | 2 +- .../serialization.md | 2 +- .../installation-and-operation/start.md | 10 +- .../supported-browsers.md | 2 +- .../upgrading-metabase.md | 2 +- .../people-and-groups/account-settings.md | 2 +- _docs/latest/people-and-groups/api-keys.md | 2 +- .../authenticating-with-jwt.md | 2 +- .../authenticating-with-oidc.md | 2 +- .../authenticating-with-saml.md | 2 +- .../changing-password-complexity.md | 3 +- .../changing-session-expiration.md | 2 +- .../people-and-groups/google-sign-in.md | 2 +- _docs/latest/people-and-groups/ldap.md | 2 +- _docs/latest/people-and-groups/managing.md | 2 +- .../latest/people-and-groups/oidc-keycloak.md | 2 +- _docs/latest/people-and-groups/saml-auth0.md | 2 +- _docs/latest/people-and-groups/saml-azure.md | 2 +- _docs/latest/people-and-groups/saml-google.md | 2 +- .../latest/people-and-groups/saml-keycloak.md | 2 +- _docs/latest/people-and-groups/saml-okta.md | 2 +- _docs/latest/people-and-groups/start.md | 2 +- .../people-and-groups/user-provisioning.md | 2 +- _docs/latest/permissions/application.md | 2 +- _docs/latest/permissions/collections.md | 2 +- _docs/latest/permissions/data.md | 2 +- _docs/latest/permissions/database-routing.md | 2 +- _docs/latest/permissions/embedding.md | 2 +- _docs/latest/permissions/impersonation.md | 2 +- _docs/latest/permissions/introduction.md | 2 +- .../no-self-service-deprecation.md | 2 +- _docs/latest/permissions/notifications.md | 2 +- .../row-and-column-security-examples.md | 2 +- .../permissions/row-and-column-security.md | 2 +- _docs/latest/permissions/snippets.md | 2 +- _docs/latest/permissions/start.md | 2 +- _docs/latest/questions/alerts.md | 2 +- _docs/latest/questions/exporting-results.md | 2 +- .../images/custom-viz-calendar-heatmap.png | Bin 0 -> 155299 bytes .../questions/images/gondola-line-chart.png | Bin 0 -> 191199 bytes _docs/latest/questions/introduction.md | 2 +- _docs/latest/questions/metrics-explorer.md | 2 +- .../native-editor/basic-sql-parameters.md | 2 +- .../questions/native-editor/field-filters.md | 2 +- .../questions/native-editor/filter-widgets.md | 12 +- .../native-editor/optional-variables.md | 2 +- .../referencing-saved-questions-in-queries.md | 2 +- .../questions/native-editor/snippets.md | 2 +- .../questions/native-editor/sql-parameters.md | 2 +- .../native-editor/table-variables.md | 2 +- .../native-editor/time-grouping-parameters.md | 2 +- .../questions/native-editor/writing-sql.md | 2 +- .../latest/questions/query-builder/editor.md | 2 +- .../query-builder/expressions-list.md | 2 +- .../questions/query-builder/expressions.md | 2 +- .../query-builder/expressions/case.md | 2 +- .../query-builder/expressions/coalesce.md | 2 +- .../query-builder/expressions/concat.md | 2 +- .../expressions/converttimezone.md | 2 +- .../query-builder/expressions/countif.md | 2 +- .../query-builder/expressions/cumulative.md | 2 +- .../query-builder/expressions/datetimeadd.md | 2 +- .../query-builder/expressions/datetimediff.md | 2 +- .../expressions/datetimesubtract.md | 2 +- .../questions/query-builder/expressions/in.md | 2 +- .../query-builder/expressions/isempty.md | 2 +- .../query-builder/expressions/isnull.md | 2 +- .../query-builder/expressions/now.md | 2 +- .../query-builder/expressions/offset.md | 2 +- .../query-builder/expressions/regexextract.md | 2 +- .../query-builder/expressions/substring.md | 2 +- .../query-builder/expressions/sumif.md | 2 +- .../query-builder/expressions/week.md | 2 +- .../latest/questions/query-builder/filters.md | 2 +- _docs/latest/questions/query-builder/join.md | 2 +- .../query-builder/summarizing-and-grouping.md | 2 +- _docs/latest/questions/start.md | 2 +- .../questions/visualizations/box-plot.md | 2 +- .../questions/visualizations/combo-chart.md | 2 +- .../questions/visualizations/country-codes.md | 2 +- .../latest/questions/visualizations/custom.md | 98 + .../latest/questions/visualizations/detail.md | 2 +- .../questions/visualizations/drill-through.md | 2 +- .../latest/questions/visualizations/funnel.md | 2 +- .../latest/questions/visualizations/gauge.md | 2 +- .../line-bar-and-area-charts.md | 2 +- _docs/latest/questions/visualizations/map.md | 2 +- .../questions/visualizations/numbers.md | 2 +- .../visualizations/pie-or-donut-chart.md | 2 +- .../questions/visualizations/pivot-table.md | 2 +- .../questions/visualizations/progress-bar.md | 2 +- .../latest/questions/visualizations/sankey.md | 2 +- .../scatterplot-or-bubble-chart.md | 2 +- .../latest/questions/visualizations/table.md | 2 +- .../questions/visualizations/tooltips.md | 2 +- .../latest/questions/visualizations/trend.md | 2 +- .../visualizations/visualizing-results.md | 7 +- .../visualizations/waterfall-chart.md | 2 +- .../troubleshooting-guide/bigquery-drive.md | 2 +- _docs/latest/troubleshooting-guide/bugs.md | 2 +- .../troubleshooting-guide/cant-log-in.md | 2 +- .../troubleshooting-guide/cant-see-tables.md | 2 +- .../troubleshooting-guide/cant-send-email.md | 2 +- .../cant-view-or-edit.md | 2 +- .../troubleshooting-guide/create-har-file.md | 2 +- .../troubleshooting-guide/data-permissions.md | 2 +- .../troubleshooting-guide/db-connection.md | 2 +- .../troubleshooting-guide/db-performance.md | 2 +- .../troubleshooting-guide/diagnostic-info.md | 2 +- _docs/latest/troubleshooting-guide/docker.md | 2 +- .../troubleshooting-guide/error-message.md | 2 +- _docs/latest/troubleshooting-guide/filters.md | 2 +- _docs/latest/troubleshooting-guide/index.md | 2 +- .../troubleshooting-guide/known-issues.md | 2 +- _docs/latest/troubleshooting-guide/ldap.md | 2 +- .../troubleshooting-guide/linked-filters.md | 2 +- .../troubleshooting-guide/loading-from-h2.md | 2 +- _docs/latest/troubleshooting-guide/models.md | 2 +- .../my-dashboard-is-slow.md | 2 +- .../troubleshooting-guide/notifications.md | 2 +- .../troubleshooting-guide/permissions.md | 2 +- _docs/latest/troubleshooting-guide/proxies.md | 2 +- .../requesting-new-features.md | 2 +- .../row-and-column-security.md | 2 +- _docs/latest/troubleshooting-guide/running.md | 2 +- _docs/latest/troubleshooting-guide/saml.md | 2 +- .../troubleshooting-guide/server-logs.md | 2 +- _docs/latest/troubleshooting-guide/sql.md | 2 +- .../sync-fingerprint-scan.md | 2 +- _docs/latest/troubleshooting-guide/timeout.md | 2 +- .../latest/troubleshooting-guide/timezones.md | 2 +- .../troubleshooting-guide/visualization.md | 2 +- .../usage-and-performance-tools/audit.md | 2 +- .../usage-and-performance-tools/start.md | 2 +- .../usage-and-performance-tools/tools.md | 2 +- .../usage-analytics-reference.md | 9 +- .../usage-analytics.md | 2 +- .../environment-variables.md | 3 +- _docs/v0.62/dashboards/filters.md | 20 +- .../dashboards/images/selectable-values.png | Bin 87329 -> 230077 bytes _docs/v0.62/developers-guide/mage.md | 1 + .../security-token-scanner.md | 1 + .../snippets/MetabaseBrowserAttributes.md | 1 + .../snippets/MetabaseMetabotAttributes.md | 1 + .../embedding/sdk/api/snippets/ButtonProps.md | 1 + .../embedding/sdk/api/snippets/ChartColor.md | 1 + .../sdk/api/snippets/ChartColorV2.md | 1 + .../snippets/CollectionBrowserListColumns.md | 1 + .../sdk/api/snippets/DashboardCardMenu.md | 1 + .../sdk/api/snippets/EmbeddingDataPicker.md | 1 + .../sdk/api/snippets/EmbeddingEntityType.md | 1 + .../sdk/api/snippets/EntityTypeFilterKeys.md | 1 + .../embedding/sdk/api/snippets/IconName.md | 1 + .../sdk/api/snippets/InitializationStatus.md | 1 + .../InteractiveQuestionBackButtonProps.md | 1 + ...nteractiveQuestionBreakoutDropdownProps.md | 1 + ...teractiveQuestionChartTypeDropdownProps.md | 1 + ...teractiveQuestionChartTypeSelectorProps.md | 1 + ...tiveQuestionDownloadWidgetDropdownProps.md | 1 + .../InteractiveQuestionDownloadWidgetProps.md | 1 + .../InteractiveQuestionEditorButtonProps.md | 1 + .../InteractiveQuestionEditorProps.md | 1 + .../InteractiveQuestionFilterDropdownProps.md | 1 + .../InteractiveQuestionFilterProps.md | 1 + ...veQuestionQuestionSettingsDropdownProps.md | 1 + ...nteractiveQuestionQuestionSettingsProps.md | 1 + ...ctiveQuestionQuestionVisualizationProps.md | 1 + .../InteractiveQuestionResetButtonProps.md | 1 + .../InteractiveQuestionSaveButtonProps.md | 1 + ...nteractiveQuestionSaveQuestionFormProps.md | 1 + ...teractiveQuestionSummarizeDropdownProps.md | 1 + .../snippets/InteractiveQuestionTitleProps.md | 1 + .../embedding/sdk/api/snippets/LoginStatus.md | 1 + .../sdk/api/snippets/MetabaseAuthConfig.md | 1 + .../snippets/MetabaseAuthConfigWithApiKey.md | 1 + .../snippets/MetabaseAuthConfigWithSaml.md | 1 + .../sdk/api/snippets/MetabaseClickAction.md | 1 + .../sdk/api/snippets/MetabaseColorKey.md | 1 + .../api/snippets/MetabaseComponentTheme.md | 1 + .../snippets/MetabaseEmbeddingColorKeyV2.md | 1 + .../api/snippets/MetabaseEmbeddingTheme.md | 1 + .../snippets/MetabaseFetchRequestTokenFn.md | 1 + .../sdk/api/snippets/MetabaseFontFamily.md | 1 + .../snippets/MetabaseGlobalPluginsConfig.md | 1 + .../api/snippets/MetabaseIsGuestAuthConfig.md | 1 + .../sdk/api/snippets/MetabaseQuestion.md | 1 + .../sdk/api/snippets/MetabaseThemePreset.md | 1 + .../sdk/api/snippets/MetabotAgentMessage.md | 1 + .../api/snippets/MetabotAgentTextMessage.md | 1 + .../sdk/api/snippets/MetabotChartProps.md | 1 + .../sdk/api/snippets/MetabotErrorMessage.md | 1 + .../sdk/api/snippets/MetabotMessage.md | 1 + .../api/snippets/MetabotUserTextMessage.md | 1 + .../sdk/api/snippets/ParameterChangeSource.md | 1 + .../sdk/api/snippets/ParameterValues.md | 1 + .../sdk/api/snippets/ProtectedColorKey.md | 1 + .../sdk/api/snippets/SdkCollectionId.md | 1 + .../sdk/api/snippets/SdkDashboardId.md | 1 + .../embedding/sdk/api/snippets/SdkEntityId.md | 1 + .../sdk/api/snippets/SdkEntityToken.md | 1 + .../api/snippets/SdkErrorComponentProps.md | 1 + .../sdk/api/snippets/SdkQuestionId.md | 1 + .../sdk/api/snippets/SdkQuestionTitleProps.md | 1 + .../embedding/sdk/api/snippets/SdkUserId.md | 1 + .../api/snippets/SqlParameterChangeSource.md | 1 + .../sdk/api/snippets/SqlParameterValues.md | 1 + .../api/snippets/UserBackendJwtResponse.md | 1 + .../sdk/api/snippets/useApplicationName.md | 1 + .../sdk/api/snippets/useAvailableFonts.md | 1 + .../changing-password-complexity.md | 1 + .../questions/native-editor/filter-widgets.md | 10 +- _site/docs/all.html | 575 +- _site/docs/latest/CONTRIBUTING.html | 123 +- _site/docs/latest/actions/basic.html | 123 +- _site/docs/latest/actions/custom.html | 123 +- _site/docs/latest/actions/introduction.html | 123 +- _site/docs/latest/actions/start.html | 123 +- _site/docs/latest/ai/agent-api.html | 123 +- _site/docs/latest/ai/customization.html | 123 +- .../latest/ai/file-based-development.html | 427 +- _site/docs/latest/ai/mcp.html | 154 +- _site/docs/latest/ai/metabot-slack.html | 123 +- _site/docs/latest/ai/metabot.html | 123 +- _site/docs/latest/ai/overview.html | 125 +- _site/docs/latest/ai/privacy.html | 123 +- _site/docs/latest/ai/settings.html | 123 +- _site/docs/latest/ai/start.html | 123 +- _site/docs/latest/ai/system-prompts.html | 123 +- _site/docs/latest/ai/usage-auditing.html | 123 +- _site/docs/latest/ai/usage-controls.html | 123 +- _site/docs/latest/api.html | 6 + _site/docs/latest/api.json | 14161 ++++++++++------ .../latest/cloud/accounts-and-billing.html | 115 +- _site/docs/latest/cloud/change-region.html | 115 +- .../latest/cloud/cloud-vs-self-hosting.html | 115 +- _site/docs/latest/cloud/custom-domain.html | 115 +- _site/docs/latest/cloud/google-sheets.html | 115 +- .../docs/latest/cloud/how-billing-works.html | 115 +- .../cloud/ip-addresses-to-whitelist.html | 115 +- _site/docs/latest/cloud/limitations.html | 115 +- .../cloud/migrate/cloud-to-self-hosted.html | 115 +- .../latest/cloud/migrate/guide-pre-50.html | 115 +- _site/docs/latest/cloud/migrate/guide.html | 115 +- _site/docs/latest/cloud/migrate/heroku.html | 115 +- _site/docs/latest/cloud/start.html | 115 +- _site/docs/latest/cloud/storage.html | 115 +- .../configuring-metabase/appearance.html | 125 +- .../latest/configuring-metabase/caching.html | 123 +- .../configuring-metabase/config-file.html | 123 +- .../configuring-metabase/config-template.html | 129 +- .../configuring-metabase/custom-maps.html | 123 +- .../customizing-jetty-webserver.html | 123 +- .../latest/configuring-metabase/email.html | 123 +- .../environment-variables.html | 310 +- .../latest/configuring-metabase/fonts.html | 129 +- .../configuring-metabase/localization.html | 123 +- .../log-configuration.html | 123 +- .../setting-up-metabase.html | 123 +- .../latest/configuring-metabase/settings.html | 149 +- .../latest/configuring-metabase/slack.html | 123 +- .../latest/configuring-metabase/start.html | 127 +- .../configuring-metabase/timezones.html | 123 +- .../latest/configuring-metabase/webhooks.html | 123 +- _site/docs/latest/dashboards/actions.html | 123 +- _site/docs/latest/dashboards/filters.html | 149 +- .../dashboards/images/selectable-values.png | Bin 87329 -> 230077 bytes _site/docs/latest/dashboards/interactive.html | 123 +- .../docs/latest/dashboards/introduction.html | 123 +- .../latest/dashboards/linked-filters.html | 123 +- .../latest/dashboards/multiple-series.html | 123 +- _site/docs/latest/dashboards/start.html | 123 +- .../docs/latest/dashboards/subscriptions.html | 123 +- .../latest/data-modeling/editable-tables.html | 123 +- .../docs/latest/data-modeling/formatting.html | 123 +- .../latest/data-modeling/json-unfolding.html | 123 +- .../latest/data-modeling/legacy-metrics.html | 123 +- .../data-modeling/metadata-editing.html | 123 +- _site/docs/latest/data-modeling/metrics.html | 123 +- .../data-modeling/model-persistence.html | 123 +- _site/docs/latest/data-modeling/models.html | 123 +- _site/docs/latest/data-modeling/segments.html | 123 +- .../latest/data-modeling/semantic-types.html | 123 +- _site/docs/latest/data-modeling/start.html | 123 +- .../data-studio/dependencies/diagnostics.html | 123 +- .../data-studio/dependencies/graph.html | 123 +- .../dependencies/replace-data-sources.html | 123 +- _site/docs/latest/data-studio/library.html | 123 +- .../latest/data-studio/managing-tables.html | 123 +- _site/docs/latest/data-studio/measures.html | 123 +- _site/docs/latest/data-studio/overview.html | 123 +- _site/docs/latest/data-studio/segments.html | 123 +- .../latest/data-studio/transforms/addons.html | 123 +- .../data-studio/transforms/jobs-and-runs.html | 123 +- .../data-studio/transforms/python-runner.html | 123 +- .../transforms/python-transforms.html | 123 +- .../transforms/query-transforms.html | 123 +- .../transforms/transform-inspector.html | 123 +- .../transforms/transforms-overview.html | 123 +- _site/docs/latest/databases/connecting.html | 123 +- .../latest/databases/connections/athena.html | 123 +- .../latest/databases/connections/aws-rds.html | 123 +- .../databases/connections/bigquery.html | 123 +- .../databases/connections/clickhouse.html | 123 +- .../databases/connections/databricks.html | 123 +- .../latest/databases/connections/druid.html | 123 +- .../latest/databases/connections/mariadb.html | 123 +- .../latest/databases/connections/mongodb.html | 123 +- .../latest/databases/connections/mysql.html | 123 +- .../latest/databases/connections/oracle.html | 123 +- .../databases/connections/postgresql.html | 123 +- .../latest/databases/connections/presto.html | 123 +- .../databases/connections/redshift.html | 123 +- .../databases/connections/snowflake.html | 123 +- .../databases/connections/sparksql.html | 123 +- .../databases/connections/sql-server.html | 123 +- .../latest/databases/connections/sqlite.html | 123 +- .../databases/connections/starburst.html | 123 +- .../latest/databases/connections/vertica.html | 123 +- _site/docs/latest/databases/danger-zone.html | 123 +- .../databases/encrypting-details-at-rest.html | 123 +- _site/docs/latest/databases/ssh-tunnel.html | 123 +- .../latest/databases/ssl-certificates.html | 123 +- _site/docs/latest/databases/start.html | 123 +- _site/docs/latest/databases/sync-scan.html | 123 +- _site/docs/latest/databases/uploads.html | 123 +- .../databases/users-roles-privileges.html | 123 +- .../latest/databases/writable-connection.html | 123 +- .../developers-guide/api-changelog.html | 123 +- _site/docs/latest/developers-guide/build.html | 123 +- .../docs/latest/developers-guide/clojure.html | 123 +- .../latest/developers-guide/code-reviews.html | 123 +- .../developers-guide/community-drivers.html | 123 +- .../custom-visualizations.html | 7361 ++++++++ .../developers-guide/dev-branch-docker.html | 123 +- .../docs/latest/developers-guide/devenv.html | 123 +- _site/docs/latest/developers-guide/docs.html | 123 +- .../developers-guide/driver-changelog.html | 218 +- .../developers-guide/drivers/basics.html | 123 +- .../drivers/driver-tests.html | 125 +- .../drivers/multimethods.html | 123 +- .../developers-guide/drivers/plugins.html | 123 +- .../developers-guide/drivers/start.html | 123 +- .../latest/developers-guide/e2e-tests.html | 123 +- _site/docs/latest/developers-guide/emacs.html | 123 +- .../latest/developers-guide/frontend.html | 123 +- .../images/custom-viz-dev.png | Bin 0 -> 216588 bytes .../internationalization.html | 123 +- _site/docs/latest/developers-guide/mage.html | 123 +- .../mbql-library-changelog.html | 123 +- .../security-token-scanner.html | 123 +- _site/docs/latest/developers-guide/start.html | 129 +- .../latest/developers-guide/versioning.html | 123 +- .../developers-guide/visual-studio-code.html | 123 +- .../latest/developers-guide/visual-tests.html | 123 +- _site/docs/latest/documents/introduction.html | 123 +- _site/docs/latest/documents/start.html | 123 +- .../latest/embedding/ai-agent-resources.html | 123 +- _site/docs/latest/embedding/appearance.html | 123 +- .../docs/latest/embedding/authentication.html | 123 +- _site/docs/latest/embedding/components.html | 133 +- .../snippets/MetabaseBrowserAttributes.html | 123 +- .../snippets/MetabaseDashboardAttributes.html | 128 +- .../snippets/MetabaseMetabotAttributes.html | 123 +- .../snippets/MetabaseQuestionAttributes.html | 128 +- .../latest/embedding/eajs/snippets/index.html | 123 +- .../full-app-embedding-quick-start-guide.html | 123 +- .../latest/embedding/full-app-embedding.html | 123 +- .../embedding/full-app-ui-components.html | 123 +- .../latest/embedding/guest-embedding.html | 131 +- _site/docs/latest/embedding/introduction.html | 123 +- .../latest/embedding/modular-embedding.html | 127 +- _site/docs/latest/embedding/parameters.html | 6985 ++++++++ _site/docs/latest/embedding/public-links.html | 123 +- _site/docs/latest/embedding/sdk/ai-chat.html | 123 +- .../embedding/sdk/api/CreateQuestion.html | 28 +- .../sdk/api/CreateQuestionProps.html | 35 +- .../sdk/api/DrillThroughQuestionProps.html | 18 +- .../embedding/sdk/api/EditableDashboard.html | 28 +- .../sdk/api/EditableDashboardProps.html | 49 +- .../latest/embedding/sdk/api/IconName.html | 2 +- .../sdk/api/InteractiveDashboard.html | 32 +- .../sdk/api/InteractiveDashboardProps.html | 49 +- .../sdk/api/InteractiveQuestion.html | 26 +- .../sdk/api/InteractiveQuestionProps.html | 33 +- .../embedding/sdk/api/MetabaseFontFamily.html | 2 +- .../sdk/api/ParameterChangePayload.html | 31 + .../sdk/api/ParameterChangeSource.html | 32 + .../embedding/sdk/api/SdkQuestionProps.html | 35 +- .../sdk/api/SqlParameterChangePayload.html | 30 + .../sdk/api/SqlParameterChangeSource.html | 32 + .../embedding/sdk/api/StaticDashboard.html | 28 +- .../sdk/api/StaticDashboardProps.html | 36 +- .../embedding/sdk/api/StaticQuestion.html | 25 +- .../sdk/api/StaticQuestionProps.html | 31 +- .../embedding/sdk/api/assets/navigation.js | 2 +- .../latest/embedding/sdk/api/assets/search.js | 2 +- .../docs/latest/embedding/sdk/api/index.html | 2 +- .../latest/embedding/sdk/collections.html | 123 +- _site/docs/latest/embedding/sdk/config.html | 123 +- .../docs/latest/embedding/sdk/dashboards.html | 163 +- .../latest/embedding/sdk/introduction.html | 123 +- _site/docs/latest/embedding/sdk/next-js.html | 123 +- _site/docs/latest/embedding/sdk/plugins.html | 123 +- .../docs/latest/embedding/sdk/questions.html | 164 +- .../latest/embedding/sdk/quickstart-cli.html | 123 +- .../sdk/quickstart-with-sample-app.html | 131 +- .../docs/latest/embedding/sdk/quickstart.html | 125 +- _site/docs/latest/embedding/sdk/upgrade.html | 123 +- _site/docs/latest/embedding/sdk/version.html | 123 +- .../latest/embedding/securing-embeds.html | 123 +- .../dashboards/controlled-parameters.tsx | 52 + .../dashboards/initial-parameters.tsx | 14 + .../questions/controlled-sql-parameters.tsx | 44 + .../questions/initial-sql-parameters.tsx | 0 _site/docs/latest/embedding/start.html | 123 +- .../static-embedding-parameters.html | 123 +- .../latest/embedding/static-embedding.html | 123 +- _site/docs/latest/embedding/tenants.html | 123 +- _site/docs/latest/embedding/translations.html | 123 +- .../collections.html | 123 +- .../content-verification.html | 123 +- .../data-model-reference.html | 123 +- .../delete-and-restore.html | 123 +- .../events-and-timelines.html | 123 +- .../exploration.html | 123 +- .../exploration-and-organization/history.html | 123 +- .../keyboard-shortcuts.html | 123 +- .../exploration-and-organization/start.html | 123 +- .../exploration-and-organization/uploads.html | 123 +- .../exploration-and-organization/x-rays.html | 125 +- _site/docs/latest/index.html | 137 +- .../accessibility.html | 123 +- .../activating-the-enterprise-edition.html | 125 +- .../backing-up-metabase-application-data.html | 123 +- .../installation-and-operation/commands.html | 143 +- .../configuring-application-database.html | 123 +- .../creating-RDS-database-on-AWS.html | 123 +- .../development-instance.html | 123 +- .../information-collection.html | 123 +- .../installing-metabase.html | 123 +- .../metabase-cli.html | 6757 ++++++++ .../migrating-from-h2.html | 123 +- .../monitoring-metabase.html | 123 +- .../observability-with-prometheus.html | 123 +- .../installation-and-operation/privacy.html | 123 +- .../remote-sync.html | 123 +- .../running-metabase-as-service.html | 123 +- .../running-metabase-on-azure.html | 123 +- .../running-metabase-on-docker.html | 123 +- ...running-metabase-on-elastic-beanstalk.html | 123 +- .../running-metabase-on-podman.html | 123 +- .../running-the-metabase-jar-file.html | 123 +- .../security-center.html | 123 +- .../serialization.html | 123 +- .../installation-and-operation/start.html | 131 +- .../supported-browsers.html | 123 +- .../upgrading-metabase.html | 123 +- _site/docs/latest/llms-embedding-full.txt | 224 +- _site/docs/latest/llms.txt | 97 +- .../people-and-groups/account-settings.html | 123 +- .../latest/people-and-groups/api-keys.html | 123 +- .../authenticating-with-jwt.html | 123 +- .../authenticating-with-oidc.html | 123 +- .../authenticating-with-saml.html | 123 +- .../changing-password-complexity.html | 124 +- .../changing-session-expiration.html | 123 +- .../people-and-groups/google-sign-in.html | 123 +- _site/docs/latest/people-and-groups/ldap.html | 123 +- .../latest/people-and-groups/managing.html | 123 +- .../people-and-groups/oidc-keycloak.html | 123 +- .../latest/people-and-groups/saml-auth0.html | 123 +- .../latest/people-and-groups/saml-azure.html | 123 +- .../latest/people-and-groups/saml-google.html | 123 +- .../people-and-groups/saml-keycloak.html | 123 +- .../latest/people-and-groups/saml-okta.html | 123 +- .../docs/latest/people-and-groups/start.html | 123 +- .../people-and-groups/user-provisioning.html | 123 +- .../docs/latest/permissions/application.html | 123 +- .../docs/latest/permissions/collections.html | 123 +- _site/docs/latest/permissions/data.html | 123 +- .../latest/permissions/database-routing.html | 123 +- _site/docs/latest/permissions/embedding.html | 123 +- .../latest/permissions/impersonation.html | 123 +- .../docs/latest/permissions/introduction.html | 123 +- .../no-self-service-deprecation.html | 123 +- .../latest/permissions/notifications.html | 123 +- .../row-and-column-security-examples.html | 123 +- .../permissions/row-and-column-security.html | 123 +- _site/docs/latest/permissions/snippets.html | 123 +- _site/docs/latest/permissions/start.html | 123 +- _site/docs/latest/questions/alerts.html | 123 +- .../latest/questions/exporting-results.html | 123 +- .../images/custom-viz-calendar-heatmap.png | Bin 0 -> 155299 bytes .../questions/images/gondola-line-chart.png | Bin 0 -> 191199 bytes _site/docs/latest/questions/introduction.html | 123 +- .../latest/questions/metrics-explorer.html | 123 +- .../native-editor/basic-sql-parameters.html | 123 +- .../native-editor/field-filters.html | 123 +- .../native-editor/filter-widgets.html | 133 +- .../native-editor/optional-variables.html | 123 +- ...eferencing-saved-questions-in-queries.html | 123 +- .../questions/native-editor/snippets.html | 123 +- .../native-editor/sql-parameters.html | 123 +- .../native-editor/table-variables.html | 123 +- .../time-grouping-parameters.html | 123 +- .../questions/native-editor/writing-sql.html | 123 +- .../questions/query-builder/editor.html | 123 +- .../query-builder/expressions-list.html | 123 +- .../questions/query-builder/expressions.html | 123 +- .../query-builder/expressions/case.html | 123 +- .../query-builder/expressions/coalesce.html | 123 +- .../query-builder/expressions/concat.html | 123 +- .../expressions/converttimezone.html | 123 +- .../query-builder/expressions/countif.html | 123 +- .../query-builder/expressions/cumulative.html | 123 +- .../expressions/datetimeadd.html | 123 +- .../expressions/datetimediff.html | 123 +- .../expressions/datetimesubtract.html | 123 +- .../query-builder/expressions/in.html | 123 +- .../query-builder/expressions/isempty.html | 123 +- .../query-builder/expressions/isnull.html | 123 +- .../query-builder/expressions/now.html | 123 +- .../query-builder/expressions/offset.html | 123 +- .../expressions/regexextract.html | 123 +- .../query-builder/expressions/substring.html | 123 +- .../query-builder/expressions/sumif.html | 123 +- .../query-builder/expressions/week.html | 123 +- .../questions/query-builder/filters.html | 123 +- .../latest/questions/query-builder/join.html | 123 +- .../summarizing-and-grouping.html | 123 +- _site/docs/latest/questions/start.html | 123 +- .../questions/visualizations/box-plot.html | 123 +- .../questions/visualizations/combo-chart.html | 123 +- .../visualizations/country-codes.html | 123 +- .../questions/visualizations/custom.html | 6800 ++++++++ .../questions/visualizations/detail.html | 123 +- .../visualizations/drill-through.html | 123 +- .../questions/visualizations/funnel.html | 123 +- .../questions/visualizations/gauge.html | 123 +- .../line-bar-and-area-charts.html | 123 +- .../latest/questions/visualizations/map.html | 123 +- .../questions/visualizations/numbers.html | 123 +- .../visualizations/pie-or-donut-chart.html | 123 +- .../questions/visualizations/pivot-table.html | 123 +- .../visualizations/progress-bar.html | 123 +- .../questions/visualizations/sankey.html | 123 +- .../scatterplot-or-bubble-chart.html | 123 +- .../questions/visualizations/table.html | 123 +- .../questions/visualizations/tooltips.html | 123 +- .../questions/visualizations/trend.html | 123 +- .../visualizations/visualizing-results.html | 128 +- .../visualizations/waterfall-chart.html | 123 +- .../troubleshooting-guide/bigquery-drive.html | 123 +- .../latest/troubleshooting-guide/bugs.html | 123 +- .../troubleshooting-guide/cant-log-in.html | 123 +- .../cant-see-tables.html | 123 +- .../cant-send-email.html | 123 +- .../cant-view-or-edit.html | 123 +- .../create-har-file.html | 123 +- .../data-permissions.html | 123 +- .../troubleshooting-guide/db-connection.html | 123 +- .../troubleshooting-guide/db-performance.html | 123 +- .../diagnostic-info.html | 123 +- .../latest/troubleshooting-guide/docker.html | 123 +- .../troubleshooting-guide/error-message.html | 123 +- .../latest/troubleshooting-guide/filters.html | 123 +- .../latest/troubleshooting-guide/index.html | 123 +- .../troubleshooting-guide/known-issues.html | 123 +- .../latest/troubleshooting-guide/ldap.html | 123 +- .../troubleshooting-guide/linked-filters.html | 123 +- .../loading-from-h2.html | 123 +- .../latest/troubleshooting-guide/models.html | 123 +- .../my-dashboard-is-slow.html | 123 +- .../troubleshooting-guide/notifications.html | 123 +- .../troubleshooting-guide/permissions.html | 123 +- .../latest/troubleshooting-guide/proxies.html | 123 +- .../requesting-new-features.html | 123 +- .../row-and-column-security.html | 123 +- .../latest/troubleshooting-guide/running.html | 123 +- .../latest/troubleshooting-guide/saml.html | 123 +- .../troubleshooting-guide/server-logs.html | 123 +- .../latest/troubleshooting-guide/sql.html | 123 +- .../sync-fingerprint-scan.html | 123 +- .../latest/troubleshooting-guide/timeout.html | 123 +- .../troubleshooting-guide/timezones.html | 123 +- .../troubleshooting-guide/visualization.html | 123 +- .../usage-and-performance-tools/audit.html | 123 +- .../usage-and-performance-tools/start.html | 123 +- .../usage-and-performance-tools/tools.html | 123 +- .../usage-analytics-reference.html | 130 +- .../usage-analytics.html | 123 +- _site/docs/latest/util/README.html | 575 +- .../latest/util/resources/introduction.html | 575 +- _site/docs/llms-embedding-full.txt | 224 +- _site/docs/llms.txt | 97 +- _site/docs/v0.62/CONTRIBUTING.html | 105 +- _site/docs/v0.62/actions/basic.html | 105 +- _site/docs/v0.62/actions/custom.html | 105 +- _site/docs/v0.62/actions/introduction.html | 105 +- _site/docs/v0.62/actions/start.html | 105 +- _site/docs/v0.62/ai/agent-api.html | 105 +- _site/docs/v0.62/ai/customization.html | 105 +- .../docs/v0.62/ai/file-based-development.html | 105 +- _site/docs/v0.62/ai/mcp.html | 105 +- _site/docs/v0.62/ai/metabot-slack.html | 105 +- _site/docs/v0.62/ai/metabot.html | 105 +- _site/docs/v0.62/ai/overview.html | 105 +- _site/docs/v0.62/ai/privacy.html | 105 +- _site/docs/v0.62/ai/settings.html | 105 +- _site/docs/v0.62/ai/start.html | 105 +- _site/docs/v0.62/ai/system-prompts.html | 105 +- _site/docs/v0.62/ai/usage-auditing.html | 105 +- _site/docs/v0.62/ai/usage-controls.html | 105 +- _site/docs/v0.62/api.html | 6 + .../configuring-metabase/appearance.html | 105 +- .../v0.62/configuring-metabase/caching.html | 105 +- .../configuring-metabase/config-file.html | 105 +- .../configuring-metabase/config-template.html | 105 +- .../configuring-metabase/custom-maps.html | 105 +- .../customizing-jetty-webserver.html | 105 +- .../v0.62/configuring-metabase/email.html | 105 +- .../environment-variables.html | 108 +- .../v0.62/configuring-metabase/fonts.html | 105 +- .../configuring-metabase/localization.html | 105 +- .../log-configuration.html | 105 +- .../setting-up-metabase.html | 105 +- .../v0.62/configuring-metabase/settings.html | 105 +- .../v0.62/configuring-metabase/slack.html | 105 +- .../v0.62/configuring-metabase/start.html | 105 +- .../v0.62/configuring-metabase/timezones.html | 105 +- .../v0.62/configuring-metabase/webhooks.html | 105 +- _site/docs/v0.62/dashboards/actions.html | 105 +- _site/docs/v0.62/dashboards/filters.html | 131 +- .../dashboards/images/selectable-values.png | Bin 87329 -> 230077 bytes _site/docs/v0.62/dashboards/interactive.html | 105 +- _site/docs/v0.62/dashboards/introduction.html | 105 +- .../docs/v0.62/dashboards/linked-filters.html | 105 +- .../v0.62/dashboards/multiple-series.html | 105 +- _site/docs/v0.62/dashboards/start.html | 105 +- .../docs/v0.62/dashboards/subscriptions.html | 105 +- .../v0.62/data-modeling/editable-tables.html | 105 +- .../docs/v0.62/data-modeling/formatting.html | 105 +- .../v0.62/data-modeling/json-unfolding.html | 105 +- .../v0.62/data-modeling/legacy-metrics.html | 105 +- .../v0.62/data-modeling/metadata-editing.html | 105 +- _site/docs/v0.62/data-modeling/metrics.html | 105 +- .../data-modeling/model-persistence.html | 105 +- _site/docs/v0.62/data-modeling/models.html | 105 +- _site/docs/v0.62/data-modeling/segments.html | 105 +- .../v0.62/data-modeling/semantic-types.html | 105 +- _site/docs/v0.62/data-modeling/start.html | 105 +- .../data-studio/dependencies/diagnostics.html | 105 +- .../v0.62/data-studio/dependencies/graph.html | 105 +- .../dependencies/replace-data-sources.html | 105 +- _site/docs/v0.62/data-studio/library.html | 105 +- .../v0.62/data-studio/managing-tables.html | 105 +- _site/docs/v0.62/data-studio/measures.html | 105 +- _site/docs/v0.62/data-studio/overview.html | 105 +- _site/docs/v0.62/data-studio/segments.html | 105 +- .../v0.62/data-studio/transforms/addons.html | 105 +- .../data-studio/transforms/jobs-and-runs.html | 105 +- .../data-studio/transforms/python-runner.html | 105 +- .../transforms/python-transforms.html | 105 +- .../transforms/query-transforms.html | 105 +- .../transforms/transform-inspector.html | 105 +- .../transforms/transforms-overview.html | 105 +- _site/docs/v0.62/databases/connecting.html | 105 +- .../v0.62/databases/connections/athena.html | 105 +- .../v0.62/databases/connections/aws-rds.html | 105 +- .../v0.62/databases/connections/bigquery.html | 105 +- .../databases/connections/clickhouse.html | 105 +- .../databases/connections/databricks.html | 105 +- .../v0.62/databases/connections/druid.html | 105 +- .../v0.62/databases/connections/mariadb.html | 105 +- .../v0.62/databases/connections/mongodb.html | 105 +- .../v0.62/databases/connections/mysql.html | 105 +- .../v0.62/databases/connections/oracle.html | 105 +- .../databases/connections/postgresql.html | 105 +- .../v0.62/databases/connections/presto.html | 105 +- .../v0.62/databases/connections/redshift.html | 105 +- .../databases/connections/snowflake.html | 105 +- .../v0.62/databases/connections/sparksql.html | 105 +- .../databases/connections/sql-server.html | 105 +- .../v0.62/databases/connections/sqlite.html | 105 +- .../databases/connections/starburst.html | 105 +- .../v0.62/databases/connections/vertica.html | 105 +- _site/docs/v0.62/databases/danger-zone.html | 105 +- .../databases/encrypting-details-at-rest.html | 105 +- _site/docs/v0.62/databases/ssh-tunnel.html | 105 +- .../v0.62/databases/ssl-certificates.html | 105 +- _site/docs/v0.62/databases/start.html | 105 +- _site/docs/v0.62/databases/sync-scan.html | 105 +- _site/docs/v0.62/databases/uploads.html | 105 +- .../databases/users-roles-privileges.html | 105 +- .../v0.62/databases/writable-connection.html | 105 +- .../v0.62/developers-guide/api-changelog.html | 105 +- _site/docs/v0.62/developers-guide/build.html | 105 +- .../docs/v0.62/developers-guide/clojure.html | 105 +- .../v0.62/developers-guide/code-reviews.html | 105 +- .../developers-guide/community-drivers.html | 105 +- .../custom-visualizations.html | 105 +- .../developers-guide/dev-branch-docker.html | 105 +- _site/docs/v0.62/developers-guide/devenv.html | 105 +- _site/docs/v0.62/developers-guide/docs.html | 105 +- .../developers-guide/driver-changelog.html | 105 +- .../developers-guide/drivers/basics.html | 105 +- .../drivers/driver-tests.html | 105 +- .../drivers/multimethods.html | 105 +- .../developers-guide/drivers/plugins.html | 105 +- .../v0.62/developers-guide/drivers/start.html | 105 +- .../v0.62/developers-guide/e2e-tests.html | 105 +- _site/docs/v0.62/developers-guide/emacs.html | 105 +- .../docs/v0.62/developers-guide/frontend.html | 105 +- .../internationalization.html | 105 +- _site/docs/v0.62/developers-guide/mage.html | 575 +- .../mbql-library-changelog.html | 105 +- .../security-token-scanner.html | 575 +- _site/docs/v0.62/developers-guide/start.html | 105 +- .../v0.62/developers-guide/versioning.html | 105 +- .../developers-guide/visual-studio-code.html | 105 +- .../v0.62/developers-guide/visual-tests.html | 105 +- _site/docs/v0.62/documents/introduction.html | 105 +- _site/docs/v0.62/documents/start.html | 105 +- .../v0.62/embedding/ai-agent-resources.html | 105 +- _site/docs/v0.62/embedding/appearance.html | 105 +- .../docs/v0.62/embedding/authentication.html | 105 +- _site/docs/v0.62/embedding/components.html | 105 +- .../snippets/MetabaseBrowserAttributes.html | 575 +- .../snippets/MetabaseDashboardAttributes.html | 105 +- .../snippets/MetabaseMetabotAttributes.html | 575 +- .../snippets/MetabaseQuestionAttributes.html | 105 +- .../v0.62/embedding/eajs/snippets/index.html | 105 +- .../full-app-embedding-quick-start-guide.html | 105 +- .../v0.62/embedding/full-app-embedding.html | 105 +- .../embedding/full-app-ui-components.html | 105 +- .../docs/v0.62/embedding/guest-embedding.html | 105 +- _site/docs/v0.62/embedding/introduction.html | 105 +- .../v0.62/embedding/modular-embedding.html | 105 +- _site/docs/v0.62/embedding/parameters.html | 107 +- _site/docs/v0.62/embedding/public-links.html | 105 +- _site/docs/v0.62/embedding/sdk/ai-chat.html | 105 +- .../docs/v0.62/embedding/sdk/collections.html | 105 +- _site/docs/v0.62/embedding/sdk/config.html | 105 +- .../docs/v0.62/embedding/sdk/dashboards.html | 105 +- .../v0.62/embedding/sdk/introduction.html | 105 +- _site/docs/v0.62/embedding/sdk/next-js.html | 105 +- _site/docs/v0.62/embedding/sdk/plugins.html | 105 +- _site/docs/v0.62/embedding/sdk/questions.html | 105 +- .../v0.62/embedding/sdk/quickstart-cli.html | 105 +- .../sdk/quickstart-with-sample-app.html | 105 +- .../docs/v0.62/embedding/sdk/quickstart.html | 105 +- _site/docs/v0.62/embedding/sdk/upgrade.html | 105 +- _site/docs/v0.62/embedding/sdk/version.html | 105 +- .../docs/v0.62/embedding/securing-embeds.html | 105 +- _site/docs/v0.62/embedding/start.html | 105 +- .../static-embedding-parameters.html | 105 +- .../v0.62/embedding/static-embedding.html | 105 +- _site/docs/v0.62/embedding/tenants.html | 105 +- _site/docs/v0.62/embedding/translations.html | 105 +- .../collections.html | 105 +- .../content-verification.html | 105 +- .../data-model-reference.html | 105 +- .../delete-and-restore.html | 105 +- .../events-and-timelines.html | 105 +- .../exploration.html | 105 +- .../exploration-and-organization/history.html | 105 +- .../keyboard-shortcuts.html | 105 +- .../exploration-and-organization/start.html | 105 +- .../exploration-and-organization/uploads.html | 105 +- .../exploration-and-organization/x-rays.html | 105 +- _site/docs/v0.62/index.html | 105 +- .../accessibility.html | 105 +- .../activating-the-enterprise-edition.html | 107 +- .../backing-up-metabase-application-data.html | 105 +- .../installation-and-operation/commands.html | 105 +- .../configuring-application-database.html | 105 +- .../creating-RDS-database-on-AWS.html | 105 +- .../development-instance.html | 105 +- .../information-collection.html | 105 +- .../installing-metabase.html | 105 +- .../metabase-cli.html | 105 +- .../migrating-from-h2.html | 105 +- .../monitoring-metabase.html | 105 +- .../observability-with-prometheus.html | 105 +- .../installation-and-operation/privacy.html | 105 +- .../remote-sync.html | 105 +- .../running-metabase-as-service.html | 105 +- .../running-metabase-on-azure.html | 105 +- .../running-metabase-on-docker.html | 105 +- ...running-metabase-on-elastic-beanstalk.html | 105 +- .../running-metabase-on-podman.html | 105 +- .../running-the-metabase-jar-file.html | 105 +- .../security-center.html | 105 +- .../serialization.html | 105 +- .../installation-and-operation/start.html | 105 +- .../supported-browsers.html | 105 +- .../upgrading-metabase.html | 105 +- .../people-and-groups/account-settings.html | 105 +- .../v0.62/people-and-groups/api-keys.html | 105 +- .../authenticating-with-jwt.html | 105 +- .../authenticating-with-oidc.html | 105 +- .../authenticating-with-saml.html | 105 +- .../changing-password-complexity.html | 106 +- .../changing-session-expiration.html | 105 +- .../people-and-groups/google-sign-in.html | 105 +- _site/docs/v0.62/people-and-groups/ldap.html | 105 +- .../v0.62/people-and-groups/managing.html | 105 +- .../people-and-groups/oidc-keycloak.html | 105 +- .../v0.62/people-and-groups/saml-auth0.html | 105 +- .../v0.62/people-and-groups/saml-azure.html | 105 +- .../v0.62/people-and-groups/saml-google.html | 105 +- .../people-and-groups/saml-keycloak.html | 105 +- .../v0.62/people-and-groups/saml-okta.html | 105 +- _site/docs/v0.62/people-and-groups/start.html | 105 +- .../people-and-groups/user-provisioning.html | 105 +- _site/docs/v0.62/permissions/application.html | 105 +- _site/docs/v0.62/permissions/collections.html | 105 +- _site/docs/v0.62/permissions/data.html | 105 +- .../v0.62/permissions/database-routing.html | 105 +- _site/docs/v0.62/permissions/embedding.html | 105 +- .../docs/v0.62/permissions/impersonation.html | 105 +- .../docs/v0.62/permissions/introduction.html | 105 +- .../no-self-service-deprecation.html | 105 +- .../docs/v0.62/permissions/notifications.html | 105 +- .../row-and-column-security-examples.html | 105 +- .../permissions/row-and-column-security.html | 105 +- _site/docs/v0.62/permissions/snippets.html | 105 +- _site/docs/v0.62/permissions/start.html | 105 +- _site/docs/v0.62/questions/alerts.html | 105 +- .../v0.62/questions/exporting-results.html | 105 +- _site/docs/v0.62/questions/introduction.html | 105 +- .../v0.62/questions/metrics-explorer.html | 105 +- .../native-editor/basic-sql-parameters.html | 105 +- .../native-editor/field-filters.html | 105 +- .../native-editor/filter-widgets.html | 115 +- .../native-editor/optional-variables.html | 105 +- ...eferencing-saved-questions-in-queries.html | 105 +- .../questions/native-editor/snippets.html | 105 +- .../native-editor/sql-parameters.html | 105 +- .../native-editor/table-variables.html | 105 +- .../time-grouping-parameters.html | 105 +- .../questions/native-editor/writing-sql.html | 105 +- .../v0.62/questions/query-builder/editor.html | 105 +- .../query-builder/expressions-list.html | 105 +- .../questions/query-builder/expressions.html | 105 +- .../query-builder/expressions/case.html | 105 +- .../query-builder/expressions/coalesce.html | 105 +- .../query-builder/expressions/concat.html | 105 +- .../expressions/converttimezone.html | 105 +- .../query-builder/expressions/countif.html | 105 +- .../query-builder/expressions/cumulative.html | 105 +- .../expressions/datetimeadd.html | 105 +- .../expressions/datetimediff.html | 105 +- .../expressions/datetimesubtract.html | 105 +- .../query-builder/expressions/in.html | 105 +- .../query-builder/expressions/isempty.html | 105 +- .../query-builder/expressions/isnull.html | 105 +- .../query-builder/expressions/now.html | 105 +- .../query-builder/expressions/offset.html | 105 +- .../expressions/regexextract.html | 105 +- .../query-builder/expressions/substring.html | 105 +- .../query-builder/expressions/sumif.html | 105 +- .../query-builder/expressions/week.html | 105 +- .../questions/query-builder/filters.html | 105 +- .../v0.62/questions/query-builder/join.html | 105 +- .../summarizing-and-grouping.html | 105 +- _site/docs/v0.62/questions/start.html | 105 +- .../questions/visualizations/box-plot.html | 105 +- .../questions/visualizations/combo-chart.html | 105 +- .../visualizations/country-codes.html | 105 +- .../questions/visualizations/custom.html | 105 +- .../questions/visualizations/detail.html | 105 +- .../visualizations/drill-through.html | 105 +- .../questions/visualizations/funnel.html | 105 +- .../v0.62/questions/visualizations/gauge.html | 105 +- .../line-bar-and-area-charts.html | 105 +- .../v0.62/questions/visualizations/map.html | 105 +- .../questions/visualizations/numbers.html | 105 +- .../visualizations/pie-or-donut-chart.html | 105 +- .../questions/visualizations/pivot-table.html | 105 +- .../visualizations/progress-bar.html | 105 +- .../questions/visualizations/sankey.html | 105 +- .../scatterplot-or-bubble-chart.html | 105 +- .../v0.62/questions/visualizations/table.html | 105 +- .../questions/visualizations/tooltips.html | 105 +- .../v0.62/questions/visualizations/trend.html | 105 +- .../visualizations/visualizing-results.html | 105 +- .../visualizations/waterfall-chart.html | 105 +- .../troubleshooting-guide/bigquery-drive.html | 105 +- .../v0.62/troubleshooting-guide/bugs.html | 105 +- .../troubleshooting-guide/cant-log-in.html | 105 +- .../cant-see-tables.html | 105 +- .../cant-send-email.html | 105 +- .../cant-view-or-edit.html | 105 +- .../create-har-file.html | 105 +- .../data-permissions.html | 105 +- .../troubleshooting-guide/db-connection.html | 105 +- .../troubleshooting-guide/db-performance.html | 105 +- .../diagnostic-info.html | 105 +- .../v0.62/troubleshooting-guide/docker.html | 105 +- .../troubleshooting-guide/error-message.html | 105 +- .../v0.62/troubleshooting-guide/filters.html | 105 +- .../v0.62/troubleshooting-guide/index.html | 105 +- .../troubleshooting-guide/known-issues.html | 105 +- .../v0.62/troubleshooting-guide/ldap.html | 105 +- .../troubleshooting-guide/linked-filters.html | 105 +- .../loading-from-h2.html | 105 +- .../v0.62/troubleshooting-guide/models.html | 105 +- .../my-dashboard-is-slow.html | 105 +- .../troubleshooting-guide/notifications.html | 105 +- .../troubleshooting-guide/permissions.html | 105 +- .../v0.62/troubleshooting-guide/proxies.html | 105 +- .../requesting-new-features.html | 105 +- .../row-and-column-security.html | 105 +- .../v0.62/troubleshooting-guide/running.html | 105 +- .../v0.62/troubleshooting-guide/saml.html | 105 +- .../troubleshooting-guide/server-logs.html | 105 +- .../docs/v0.62/troubleshooting-guide/sql.html | 105 +- .../sync-fingerprint-scan.html | 105 +- .../v0.62/troubleshooting-guide/timeout.html | 105 +- .../troubleshooting-guide/timezones.html | 105 +- .../troubleshooting-guide/visualization.html | 105 +- .../usage-and-performance-tools/audit.html | 105 +- .../usage-and-performance-tools/start.html | 105 +- .../usage-and-performance-tools/tools.html | 105 +- .../usage-analytics-reference.html | 105 +- .../usage-analytics.html | 105 +- .../v0.62/util/resources/introduction.html | 575 +- 1376 files changed, 124048 insertions(+), 18918 deletions(-) create mode 100644 _docs/latest/developers-guide/custom-visualizations.md create mode 100644 _docs/latest/developers-guide/images/custom-viz-dev.png create mode 100644 _docs/latest/embedding/parameters.md create mode 100644 _docs/latest/embedding/sdk/api/ParameterChangePayload.html create mode 100644 _docs/latest/embedding/sdk/api/ParameterChangeSource.html create mode 100644 _docs/latest/embedding/sdk/api/SqlParameterChangePayload.html create mode 100644 _docs/latest/embedding/sdk/api/SqlParameterChangeSource.html create mode 100644 _docs/latest/embedding/sdk/api/snippets/ParameterChangePayload.md create mode 100644 _docs/latest/embedding/sdk/api/snippets/ParameterChangeSource.md create mode 100644 _docs/latest/embedding/sdk/api/snippets/SqlParameterChangePayload.md create mode 100644 _docs/latest/embedding/sdk/api/snippets/SqlParameterChangeSource.md create mode 100644 _docs/latest/embedding/snippets/parameters/dashboards/controlled-parameters.tsx create mode 100644 _docs/latest/embedding/snippets/parameters/dashboards/initial-parameters.tsx create mode 100644 _docs/latest/embedding/snippets/parameters/questions/controlled-sql-parameters.tsx rename _docs/latest/embedding/{sdk/snippets => snippets/parameters}/questions/initial-sql-parameters.tsx (100%) create mode 100644 _docs/latest/installation-and-operation/metabase-cli.md create mode 100644 _docs/latest/questions/images/custom-viz-calendar-heatmap.png create mode 100644 _docs/latest/questions/images/gondola-line-chart.png create mode 100644 _docs/latest/questions/visualizations/custom.md create mode 100644 _site/docs/latest/developers-guide/custom-visualizations.html create mode 100644 _site/docs/latest/developers-guide/images/custom-viz-dev.png create mode 100644 _site/docs/latest/embedding/parameters.html create mode 100644 _site/docs/latest/embedding/sdk/api/ParameterChangePayload.html create mode 100644 _site/docs/latest/embedding/sdk/api/ParameterChangeSource.html create mode 100644 _site/docs/latest/embedding/sdk/api/SqlParameterChangePayload.html create mode 100644 _site/docs/latest/embedding/sdk/api/SqlParameterChangeSource.html create mode 100644 _site/docs/latest/embedding/snippets/parameters/dashboards/controlled-parameters.tsx create mode 100644 _site/docs/latest/embedding/snippets/parameters/dashboards/initial-parameters.tsx create mode 100644 _site/docs/latest/embedding/snippets/parameters/questions/controlled-sql-parameters.tsx rename _site/docs/latest/embedding/{sdk/snippets => snippets/parameters}/questions/initial-sql-parameters.tsx (100%) create mode 100644 _site/docs/latest/installation-and-operation/metabase-cli.html create mode 100644 _site/docs/latest/questions/images/custom-viz-calendar-heatmap.png create mode 100644 _site/docs/latest/questions/images/gondola-line-chart.png create mode 100644 _site/docs/latest/questions/visualizations/custom.html diff --git a/_data/shared_chrome.json b/_data/shared_chrome.json index 762afd5eb6..297a5480b2 100644 --- a/_data/shared_chrome.json +++ b/_data/shared_chrome.json @@ -1,7 +1,7 @@ { "$schema": "https://www.metabase.com/shared/chrome.schema.json", "version": 1, - "generated_at": "2026-06-05T18:12:55+00:00", + "generated_at": "2026-06-08T22:31:41+00:00", "origin": "https://www.metabase.com", "stylesheets": [ { @@ -108,6 +108,14 @@ }, "children": "\n {\n \"@context\": \"https://schema.org\",\n \"@type\": \"Organization\",\n \"url\": \"https://www.metabase.com/\",\n \"sameAs\": [\n \"https://github.com/metabase\",\n \"https://www.linkedin.com/company/metabase/\",\n \"https://x.com/metabase\",\n \"https://www.youtube.com/@metabasedata\"\n ],\n \"logo\": \"https://github.com/metabase/metabase.github.io/blob/master/images/metabase-logo.png?raw=\",\n \"name\": \"Metabase\",\n \"description\": \"Metabase is an open source Business Intelligence and Embedded Analytics tool. Connect to your data stack in 5 minutes to make queries, visualizations, and dashboards easy for everyone—no SQL required\",\n \"email\": \"hello@metabase.com\",\n \"foundingDate\": \"2015-02-01T00:00:00.000Z\",\n \"address\": {\n \"@type\": \"PostalAddress\",\n \"streetAddress\": \"9740 Campo Rd\",\n \"addressLocality\": \"Spring Valley\",\n \"addressCountry\": \"USA\",\n \"addressRegion\": \"CA\",\n \"postalCode\": \"91977\"\n },\n \"knowsAbout\": [\n { \"@type\": \"Thing\", \"name\": \"Business Intelligence\" },\n { \"@type\": \"Thing\", \"name\": \"Embedded Analytics\" },\n { \"@type\": \"Thing\", \"name\": \"Self-service analytics\" },\n { \"@type\": \"Thing\", \"name\": \"Open source Business Intelligence\" }\n ]\n }\n" }, + { + "tag": "script", + "attributes": { + "type": "text/javascript", + "id": "vwoCode" + }, + "children": "\n window._vwo_code ||\n (function () {\n var w=window,\n d=document;\n var account_id=576439,\n version=2.2,\n settings_tolerance=2000,\n hide_element='body',\n hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important';\n /* DO NOT EDIT BELOW THIS LINE */\n var f=0, v;\n if(f=!1,v=d.querySelector('#vwoCode'),cc={},-1\n
\n \n
\n
\n New\n Metabase 61: AI governance - access controls, token limits, Metabot customization, build dashboards with MCP, and more.\n \n Read the announcement\"Chevron\n \n
\n \n
\n\n\n \n\n
\n
\n \n\n \n
\n\n \n\n
\n \n\n \n\n \n\n \n\n
\n Pricing\n
\n
\n \n\n
\n \n Log in\n \n\n Get started\n
\n \n \n \n \n \n
\n
\n
\n
\n \n\n
\n\n \n\n\n\n\n\n \n\n\n\n\n\n \n\n\n\n\n\n \n\n\n\n\n \n Pricing\n \n\n \n Log in\n \n
\n\n
\n\n\n\n\n\n", + "header_html": "\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n
\n \n
\n
\n New\n Metabase 61: AI governance - access controls, token limits, Metabot customization, build dashboards with MCP, and more.\n \n Read the announcement\"Chevron\n \n
\n \n
\n\n\n \n\n
\n
\n \n\n \n
\n\n \n\n
\n \n\n \n\n \n\n \n\n
\n Pricing\n
\n \n\n
\n \n\n
\n \n Log in\n \n\n Get started\n
\n \n \n \n \n \n
\n
\n
\n
\n \n\n
\n\n \n\n\n\n\n\n \n\n\n\n\n\n \n\n\n\n\n\n \n\n\n\n\n \n Pricing\n \n \n\n \n Log in\n \n
\n\n
\n
\n\n\n\n\n\n\n\n", "footer_html": "\n
\n \n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" } diff --git a/_docs/latest/CONTRIBUTING.md b/_docs/latest/CONTRIBUTING.md index 78c73b2af6..c251c81481 100644 --- a/_docs/latest/CONTRIBUTING.md +++ b/_docs/latest/CONTRIBUTING.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: false show_title_breadcrumb: true diff --git a/_docs/latest/README.md b/_docs/latest/README.md index 3f75de3aa7..7ac981a4fb 100644 --- a/_docs/latest/README.md +++ b/_docs/latest/README.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: false show_title_breadcrumb: true @@ -61,7 +61,8 @@ Metabase's reference documentation. - [Development instances](./installation-and-operation/development-instance) - [Serialization](./installation-and-operation/serialization) - [Remote sync](./installation-and-operation/remote-sync) -- [Commands](./installation-and-operation/commands) +- [Metabase CLI](./installation-and-operation/metabase-cli) +- [Metabase JAR commands](./installation-and-operation/commands) - [Supported browsers](./installation-and-operation/supported-browsers) - [Privacy](./installation-and-operation/privacy) - [About the anonymous usage data we collect](./installation-and-operation/information-collection) @@ -106,6 +107,7 @@ Metabase's reference documentation. - [Visualizing data](./questions/visualizations/visualizing-results) - [Box plots](./questions/visualizations/box-plot) - [Combo charts](./questions/visualizations/combo-chart) +- [Custom visualizations](./questions/visualizations/custom) - [Detail](./questions/visualizations/detail) - [Funnel charts](./questions/visualizations/funnel) - [Gauge charts](./questions/visualizations/gauge) diff --git a/_docs/latest/actions/basic.md b/_docs/latest/actions/basic.md index 029e1cef8f..ccd3b62065 100644 --- a/_docs/latest/actions/basic.md +++ b/_docs/latest/actions/basic.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/actions/custom.md b/_docs/latest/actions/custom.md index 5fe6ff4fd7..c5ee06fd62 100644 --- a/_docs/latest/actions/custom.md +++ b/_docs/latest/actions/custom.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/actions/introduction.md b/_docs/latest/actions/introduction.md index 3f55b3500f..8f7c110a8c 100644 --- a/_docs/latest/actions/introduction.md +++ b/_docs/latest/actions/introduction.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/actions/start.md b/_docs/latest/actions/start.md index 6a550c0380..f0e180e0ea 100644 --- a/_docs/latest/actions/start.md +++ b/_docs/latest/actions/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/ai/agent-api.md b/_docs/latest/ai/agent-api.md index 6c04887dcc..61b3f20c16 100644 --- a/_docs/latest/ai/agent-api.md +++ b/_docs/latest/ai/agent-api.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/ai/customization.md b/_docs/latest/ai/customization.md index 1eb3e9e477..8b36dbd33f 100644 --- a/_docs/latest/ai/customization.md +++ b/_docs/latest/ai/customization.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/ai/file-based-development.md b/_docs/latest/ai/file-based-development.md index 669f1d7c9b..432a8b489d 100644 --- a/_docs/latest/ai/file-based-development.md +++ b/_docs/latest/ai/file-based-development.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -9,8 +9,8 @@ source_url: >- https://github.com/metabase/metabase/blob/master/docs/ai/file-based-development.md layout: new-docs summary: >- - Use an agent with skills to create Metabase content on your local machine as - YAML files, then upload the files to your Metabase. + Use a coding agent and the Metabase CLI to create Metabase content, then + version that content as YAML files with Remote Sync. latest: true --- @@ -18,27 +18,29 @@ latest: true {% include plans-blockquote.html feature="Agent-driven development" %} -Metabase content like questions and dashboards can be serialized as YAML files. You can edit those YAML files by hand, sure, but now that we have actual genies, you can just ask them to edit them for you (call it "lamp-rubbing development"). +Now that we have actual genies, you can just ask the genies to create the content for you (call it "lamp-rubbing development"). -Paired with some skills we've developed, you can export your Metabase as YAML files, ask your agent to create new questions and dashboards YAML files, then import that new content into your Metabase. It's a whole new way to work with Metabase. +Give an agent the [Metabase CLI](../installation-and-operation/metabase-cli), and it can create content for you. But since LLMs can be unpredictable, we recommend developing content in a dev instance of Metabase, then using [Remote Sync](../installation-and-operation/remote-sync) to get your changes into production. -## The agent-driven development toolkit - -To develop your Metabase content on your local filesystem, we've put together a set of tools, including a set of agent skills. - -- [**Metabase Representation Format**](https://github.com/metabase/representations): the YAML schema and spec for every Metabase entity (questions, dashboards, collections, transforms, and so on). -- **[Metabase Database Metadata Format](https://github.com/metabase/database-metadata)**: diff-friendly representations of synced databases, their tables, and their fields, as a tree of YAML files. -- **Export and Import** CLI and API endpoints to move serialized content between your local files and Metabase. -- [**Remote Sync**](../installation-and-operation/remote-sync) (Optional): push content from a Read-write Metabase into a git repo, and pull it into a Read-only Metabase in production. +With this set up, a typical workflow using an agent with a development instance of Metabase would be: -## How content moves between files and Metabase +1. Prompt the agent with `/metabase-cli Create a dashboard based on the sales table.` +2. Agent creates questions and a dashboard. +3. View the dashboard in your dev instance. +4. Iterate either in your Metabase or via the agent until you're happy with the dashboard. +5. Use Remote Sync to push your changes to a repo. +6. Create a PR. +7. Merge the changes. +8. Once merged, your production Metabase pulls in the changes via Remote Sync. -You'll need a way to get YAML files out of Metabase to edit and back into Metabase to verify and ship. There are two options: +## The agent-driven development toolkit -- **[Remote Sync](../installation-and-operation/remote-sync)** — push and pull from inside Metabase. Requires a Read-write development instance and a Read-only production instance. -- **Serialization API** — `curl`-based export and import against the `/api/ee/serialization/` endpoints. +To develop your Metabase content with an agent, we've put together a set of tools. -Pick one before you start the [Initial setup](#initial-setup); the setup steps differ slightly (Remote Sync doesn't need a separate API key in production). +- A Metabase instance to use for development. +- [**Metabase CLI**](../installation-and-operation/metabase-cli): a command-line client (`mb`) your agent uses to create content directly in your Metabase. Use the CLI with the [`/metabase-cli` skill](https://github.com/metabase/agent-skills/tree/main/skills/metabase-cli). +- [**Metabase Representation Format**](https://github.com/metabase/representations): the YAML schema and spec for every Metabase entity (questions, dashboards, collections, transforms, and so on). This is the format your content takes once you version it as files. +- [**Remote Sync**](../installation-and-operation/remote-sync): push content from a Read-write Metabase into a git repo, and pull it into a Read-only Metabase in production. ## Initial setup @@ -46,20 +48,19 @@ Some things to put into place to get a workflow going: 1. [Set up a development Metabase](#set-up-a-development-metabase) 2. [Set up a repository to version your YAML files](#set-up-a-repository-to-version-your-yaml-files) -3. [Add agent skills to your repository](#add-agent-skills-to-your-repository) -4. [Download the database metadata](#download-the-database-metadata) +3. [Install and authenticate the Metabase CLI](#install-and-authenticate-the-metabase-cli) +4. [Add the agent skill](#add-the-agent-skill) -Once you have these set up, you can step through one of the example workflows. +Once you have these set up, you can step through the example workflow. ### Set up a development Metabase 1. Set up a Metabase instance to check your work before pushing changes to production. This Metabase should connect to the same data warehouse(s) your production Metabase connects to. A [config file](../configuring-metabase/config-file) will come in handy here. -2. Create an [API key](../people-and-groups/api-keys#create-an-api-key) and assign it to the Admin group. The skills export and import all content and read database metadata, so they need Admin-level access. If you're using the [Serialization API workflow](#how-content-moves-between-files-and-metabase), you'll also need to create an API key in your production Metabase so you can import your files into it. +2. Create an [API key](../people-and-groups/api-keys#create-an-api-key) in this development Metabase and assign it to the Admin group, so the agent can create content and work with Remote Sync. 3. We also recommend turning off the sample content and usage analytics, so they don't pollute the data model. If you're using a [docker compose file](../installation-and-operation/running-metabase-on-docker), add these [environment variables](../configuring-metabase/environment-variables): - ``` MB_LOAD_SAMPLE_CONTENT: "false" MB_INSTALL_ANALYTICS_DATABASE: "false" @@ -67,271 +68,89 @@ MB_INSTALL_ANALYTICS_DATABASE: "false" ### Set up a repository to version your YAML files -1. Initialize a new repo. -2. Add a `.gitignore` file and add `.metabase/` and `.env`. -3. Add the following to your `.env`: - -``` - METABASE_URL={your-metabase-url} - METABASE_API_KEY={your-api-key} -``` - -### Add agent skills to your repository - -You should add the following skills to your agent so it has context it needs. If you commit the skills into `.claude/skills/` in your repo, for example, Claude loads them automatically whenever you run it from that directory. - -- [**`metabase-representation-format` agent skill**](https://github.com/metabase/agent-skills/blob/main/skills/metabase-representation-format/SKILL.md): teaches the agent the representation format and ships the schema checker. -- [**`metabase-database-metadata` agent skill**](https://github.com/metabase/agent-skills/blob/main/skills/metabase-database-metadata/SKILL.md): fetches database metadata from your Metabase into an on-disk YAML tree the agent can read while editing. -- [**`metabase-semantic-checker` agent skill**](https://github.com/metabase/agent-skills/blob/main/skills/metabase-semantic-checker/SKILL.md) (optional): runs Metabase's semantic checker in Docker to catch referential and query errors the schema check doesn't. - -### Download the database metadata - -Invoke the `metabase-database-metadata` skill and ask your agent to fetch the database metadata. The agent will: - -- Check that `.env` exists. If it doesn't, the agent will prompt you to create it. -- Verify that `.env` and `.metabase/` are in `.gitignore`, asking before adding them. -- Fetch `/api/database/metadata` into `.metabase/metadata.json` (raw API response; can be several GB on large warehouses). -- Extract a diff-friendly YAML tree to `.metabase/databases//schemas//tables/.yaml` by running `npx @metabase/database-metadata extract-metadata`. - -The agent can use the YAML extracted to your `.metabase` directory while creating and editing new questions and dashboards in YAML. That way your agent can refer to real column names, field types, and foreign-key relationships without making live API calls (which would be much slower). - -To refresh this database metadata, just ask your agent to re-fetch it. - -## Example workflows - -The workflows below both assume you've completed the [Initial setup](#initial-setup). - -### Example prompts - -Once your repo has the agent skills and a baseline of content, prompt the agent with a structured request: +Create a new git repository for your Metabase content. You'll point Remote Sync at this repo when you configure it, and clone the repo locally to review changes and open pull requests. -``` -Use the metabase-representation-format and metabase-database-metadata skills to create new YAML files in this directory: +### Install and authenticate the Metabase CLI -1. Create a new dashboard called "Support overview" in collections/main/. -2. Add questions showing total ticket volume, open tickets, and average satisfaction rating. -``` - -Or, depending on how capable your model is, try a more open-ended request: +Install the [Metabase CLI](../installation-and-operation/metabase-cli) globally: ``` -Use the metabase-representation-format and metabase-database-metadata skills to analyze our support data. Look at the tickets, customers, and interactions tables, and create a dashboard that gives an overview of our team's support workload. +npm install -g @metabase/cli ``` -The agent will read the representation format spec, check existing files for local conventions, consult `.metabase/databases/` for real column names, and write new YAML. - -## Example workflow with Remote Sync - -### 1. Configure Remote Sync on both instances - -In your development Metabase, configure [Remote Sync in Read-write mode](../installation-and-operation/remote-sync#setting-up-remote-sync) pointed at your repo. In production, configure a second Metabase in Read-only mode pointed at the same repo. - -### 2. Create a branch from the Metabase UI - -Switch branches in Metabase, as the Metabase UI is the source of truth for which branch the development instance pushes to and pulls from. - -In your development Metabase, click the **branch dropdown** at the top and [create a new branch](../installation-and-operation/remote-sync#creating-a-branch) for your work, like `feature/support-dashboard`. - -### 3. Push existing content to seed the repo - -Click the up arrow (**push**) icon to [commit and push](../installation-and-operation/remote-sync#committing-and-pushing-your-changes) your existing synced collections to the branch. +Then authenticate it against your development Metabase: -### 4. Clone the repo locally and check out the branch - -```sh -git clone your-metabase-repo -cd your-metabase-repo -git checkout feature/support-dashboard ``` - -### 5. Ask the agent to edit or create content - -See [Example prompts](#example-prompts) above for prompt patterns to use here. - -### 6. Validate the YAML files - -Run the [schema check](#schema-check) after every batch of edits, and optionally run the [semantic check](#semantic-checker-for-deeper-validation) at the end of the session. See [Validating YAML files](#validating-yaml-files) below. - -If anything fails, the agent should be able to fix the issue if you give it the error. - -### 7. Commit and open a pull request - -```sh -git add -A -git commit -m "Add support-overview dashboard" -git push origin feature/support-dashboard +mb auth login --url your-metabase-url-here ``` -Open a pull request so your team can review the YAML diff. - -### 8. Pull the branch into your development Metabase - -Click the **pull** (down arrow) icon in your development Metabase to load the agent's changes. Verify the dashboard renders correctly and the questions return expected results. +Authenticate with the API key you created in your Metabase instance. -### 9. Merge the PR so production picks up the changes +### Add the agent skill -If you've enabled [auto-sync](../installation-and-operation/remote-sync#pulling-changes-automatically), your production Metabase (in Read-only mode) will pull the new main branch automatically on its next interval. Otherwise, trigger a pull from production manually. +Add the [`/metabase-cli` skill](https://github.com/metabase/agent-skills/tree/main/skills/metabase-cli) to your agent so it knows how to use the CLI to create content directly in your Metabase. -## Example workflow with import and export endpoints +## Example prompts -### 1. Clone the empty repo and create a branch +These examples assume you've completed the [Initial setup](#initial-setup). Run the `/metabase-cli` skill and give the agent a structured request. The agent will run CLI commands to create the content directly in your development Metabase: -```sh -git clone https://github.com/your-org/your-repo.git -cd your-repo -git checkout -b feature/support-dashboard ``` - -### 2. Export existing content to seed the repo - -The agent does better work when the repo already holds your current Metabase content, so it can see real examples of the Representation Format and your collection conventions. Run the [serialization export](../installation-and-operation/serialization#serialization-workflow-example) from inside the clone: - -```sh -curl \ - -H 'X-API-Key: YOUR_API_KEY' \ - -X POST 'https://your-metabase-url/api/ee/serialization/export?data_model=false' \ - -o metabase_data.tgz -tar -xzf metabase_data.tgz -``` - -Set `data_model=false` to keep the export small. The agent should get its metadata from the `metabase-database-metadata` skill instead. For more on export options, see [Serialization](../installation-and-operation/serialization). - -Commit the extracted YAML so you have a baseline to revert to if the agent goes off the rails. - -### 3. Ask the agent to edit or create content - -See [Example prompts](#example-prompts) above for prompt patterns to use here. - -### 4. Validate the YAML files - -Run the [schema check](#schema-check) after every batch of edits, and optionally run the [semantic check](#semantic-checker-for-deeper-validation) at the end of the session. See [Validating YAML files](#validating-yaml-files) below. - -### 5. Commit and open a pull request - -```sh -git add -A -git commit -m "Add support-overview dashboard" -git push origin feature/support-dashboard +/metabase-cli Create a new dashboard called "Support overview". Add questions showing total ticket volume, open tickets, and average satisfaction rating. ``` -Then open open a pull request so your team can review the YAML diff. - -### 6. Import the YAML into your development Metabase - -Re-bundle the YAML and import it: +Or, depending on how capable your model is, try a more open-ended request: -```sh -tar -czf metabase_data.tgz metabase_data -curl -X POST \ - -H 'X-API-Key: YOUR_API_KEY' \ - -F 'file=@metabase_data.tgz' \ - 'https://your-metabase-url/api/ee/serialization/import' \ - -o - ``` - -The `-o -` flag writes the import response to stdout, so you can see whether the import succeeded and check any warnings. You can ask the agent to generate `export.sh` and `import.sh` wrappers so you're running a single command each time. - -Verify the dashboard renders correctly and the questions return expected results. - -### 7. Repeat the import against production - -Once you're confident in the changes, run the same `tar` + `curl` import against your production Metabase, using its API key. - -## Undoing the agent's changes - -If you want to undo the agent's changes, use `git` to revert your YAML files to the last known-good commit before pushing or re-importing. - -If you're using Remote Sync, don't try to fix things by re-pushing from Metabase: Metabase's push only reflects its current state and won't delete any new files the agent created locally. - -## Validating YAML files - -Run both checks locally before pushing. The same checks belong in CI — see [CI example](#ci-example) below. - -### Schema check - -You can run a quick schema check: - -```sh -npx --yes @metabase/representations validate-schema +/metabase-cli Analyze our support data. Look at the tickets, customers, and interactions tables, and build a dashboard that gives an overview of our team's support workload. ``` -The check validates the shape of every YAML file against the Representation Format spec. The `metabase-representation-format` skill should run this check for you automatically after the agent makes any edits. +The agent writes the CLI commands and creates the questions and dashboard for you—just describe what you want. -### Semantic checker for deeper validation +## Example workflow -> The semantic checker is only available in the Pro/Enterprise plans. +### 1. Configure Remote Sync on both Metabase instances -The **semantic checker** catches things like references to tables that don't exist or columns the agent invented. +In your development Metabase, configure [Remote Sync in Read-write mode](../installation-and-operation/remote-sync#setting-up-remote-sync) pointed at your repo. -What it validates beyond schema: +Set up Remote Sync in your production Metabase in Read-only mode pointed at the same repo. -- Cross-entity references: `collection_id`, `dashboard_id`, `parent_id`, snippet names, transform tags, card embeddings. -- MBQL query compilation: `source-table`, field references, joins, segments, measures, expressions. -- Native-query references: tables, columns, and snippets named in SQL. - -If you've installed the `metabase-semantic-checker` skill, just ask the agent to run the semantic checker; the skill picks the right image, passes the right flags, and summarizes the findings. +### 2. Create a branch from the Metabase UI -You can manually run the semantic checker via Docker like so: +Switch branches in Metabase, as the Metabase UI is the source of truth for which branch the development instance pushes to and pulls from. -```sh -docker pull metabase/metabase-enterprise:latest +In your development Metabase, click the **branch dropdown** at the top and [create a new branch](../installation-and-operation/remote-sync#creating-a-branch) for your work, like `feature/support-dashboard`. -docker run --rm \ - -v "$PWD:/workspace" \ - --entrypoint "" \ - -w /app \ - metabase/metabase-enterprise:latest \ - java -jar metabase.jar \ - --mode checker \ - --export /workspace \ - --schema-dir /workspace/.metabase/metadata.json \ - --schema-format concise -``` +### 3. Ask the agent to create content -Match the image tag (`:latest`) to your Metabase build. +Run the `/metabase-cli` skill and prompt the agent to build your questions and dashboards. The agent creates the content directly in your development Metabase. -### CI example +### 4. Verify the content in your development Metabase -You can hook the schema check into GitHub Actions so your team catches problems on the PR, before anyone pulls the changes into Metabase: +Open your development Metabase and confirm the dashboard renders correctly and the questions return expected results. Make any changes you want, either in the UI or via the agent. -```yaml -# .github/workflows/schema-check.yml -name: Schema Check +### 5. If you make any changes in your Metabase, push the new content to the branch -on: - push: - branches: [main] - pull_request: +To commit the work, [push the change from your Metabase](../installation-and-operation/remote-sync#committing-and-pushing-your-changes). If you don't push your changes from your Metabase to your repo, you could lose work the next time you pull changes into that Metabase. -jobs: - schema-check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 +### 6. Open a pull request - - uses: actions/setup-node@v4 - with: - node-version: "20" +Open a pull request so your team can review the YAML diff. They can also use Remote Sync to pull the branch into a development Metabase and see the changes live. - - name: Validate representation YAML files - run: npx --yes @metabase/representations validate-schema -``` +### 7. Merge the PR so production picks up the changes -For the semantic check, add a second workflow that fetches `.metabase/metadata.json` from your Metabase and then runs the Docker command above against the checkout. If you run the semantic check in more than one workflow (for example, a semantic check and per-PR preview environments), you should probably factor the database metadata fetch to run and cache once a day so you don't hit the API on every push. +If you've enabled [auto-sync](../installation-and-operation/remote-sync#pulling-changes-automatically), your production Metabase (in Read-only mode) will pull the new main branch automatically on its next interval. -## Deleting content +## Undoing the agent's changes -Since imports and exports _don't_ delete content, you'll need to delete content in the Metabase application itself, then update the YAML files as well. +Since the agent uses the CLI to create content directly in Metabase, to undo changes, you could either: -1. Delete the content in your production Metabase (in the app's UI). -2. Push (with Remote Sync) or re-export (without) so the change is reflected in the repo. -3. Commit the deletion. That way Metabase won't recreate the deleted items the next time it pulls. +- **Revert to a commit and pull changes**: Revert to a previous commit, and pull that commit into your Metabase. Pulling that commit would overwrite any changes you or the agent had made. +- **Update Metabase and push changes**: Edit or archive the content in your Metabase (either manually or via an agent with the CLI), and push the changes to your repo. You may want to pick this approach if you want to keep some, but not all of the changes made by the AI, or if you've made additional changes via Metabase's handy UI that you want to keep. ## Further reading - [Remote Sync](../installation-and-operation/remote-sync) -- [Serialization](../installation-and-operation/serialization) +- [Metabase CLI](../installation-and-operation/metabase-cli) - [Metabase Representation Format](https://github.com/metabase/representations) -- [Metabase Database Metadata Format](https://github.com/metabase/database-metadata) - [Agent skills](https://github.com/metabase/agent-skills) -- [MCP server](./mcp) — for agents that need live metadata lookups outside the file-based workflow. +- [MCP server](./mcp): for agents that need live metadata lookups outside the file-based workflow. diff --git a/_docs/latest/ai/mcp.md b/_docs/latest/ai/mcp.md index 341b02b593..13e45b66ed 100644 --- a/_docs/latest/ai/mcp.md +++ b/_docs/latest/ai/mcp.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -106,16 +106,25 @@ You don't need to have an [AI provider](settings#choose-ai-provider) configured Some clients (like Claude Desktop) will ask you to approve each tool the first time it's used. The MCP server builds on Metabase's [Agent API](./agent-api), and exposes the following tools. If you're building a custom integration and need full control, use the [Agent API](./agent-api) directly instead. -- **search**: Find tables and metrics using keyword or natural language search. -- **get_table**: Get details about a table, including its fields, related tables, and metrics. -- **get_table_field_values**: Get sample values and statistics for a field in a table. -- **get_metric**: Get details about a metric, including its queryable dimensions. -- **get_metric_field_values**: Get sample values and statistics for a field in a metric. -- **construct_query**: Construct a query against a table or metric. Returns an opaque query string that can be executed with `execute_query`. -- **execute_query**: Execute a previously constructed query and return the results with column metadata, row count, and execution time. +### Discovery and reading + +- **search**: Find tables, metrics, cards, dashboards, and collections using keyword or natural language search. +- **read_resource**: Read one or more Metabase entities by `metabase://` URI. Covers database / schema / table / collection / card / dashboard / metric / transform navigation in a single tool. Up to 5 URIs per call. + +### Query construction and execution + +- **construct_query**: Construct a query against a table or metric. Returns an opaque query handle that can be passed to `execute_query`. - **query**: Query a table or metric and return results. -- **create_question**: Create questions. -- **create_dashboard**: Create dashboards. +- **execute_query**: Execute a previously constructed query and return the results with column metadata, row count, and execution time. +- **execute_sql**: Execute a raw SQL query against a database. Requires native-query permission on the target database. An admin can disable this tool instance-wide via the `mcp-execute-sql-enabled` setting. + +### Writing + +- **create_question**: Save a query as a named question (card). +- **update_question**: Update a saved question. Setting `collection_id` moves the card to another collection. +- **create_dashboard**: Create a new dashboard, optionally populated with saved questions. +- **update_dashboard**: Update a dashboard's metadata (name, description, collection, archived). +- **create_collection**: Create a new collection, optionally nested under a parent collection. ## Use the MCP server with file-based development diff --git a/_docs/latest/ai/metabot-slack.md b/_docs/latest/ai/metabot-slack.md index e83d08371a..4476b25204 100644 --- a/_docs/latest/ai/metabot-slack.md +++ b/_docs/latest/ai/metabot-slack.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/ai/metabot.md b/_docs/latest/ai/metabot.md index 72a7a2cc06..8643bb5d4d 100644 --- a/_docs/latest/ai/metabot.md +++ b/_docs/latest/ai/metabot.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/ai/overview.md b/_docs/latest/ai/overview.md index 844484e23b..f401af837a 100644 --- a/_docs/latest/ai/overview.md +++ b/_docs/latest/ai/overview.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -58,7 +58,7 @@ See [full docs for MCP server](mcp). **Best for: developers creating stuff that other people will use.** -Use a coding agent like Claude Code to understand your database's metadata, generate Metabase content as YAML files locally, verify the schema, then sync and import the generated content into your production Metabase. Sky's the limit on what you can accomplish. +Use a coding agent like Claude Code with the Metabase CLI to create Metabase content directly in a development instance, then version that content as YAML files and pull the changes into your production Metabase. **Controls**: Only admins can sync content to Metabase instances. diff --git a/_docs/latest/ai/privacy.md b/_docs/latest/ai/privacy.md index 473573c3a9..28043408f7 100644 --- a/_docs/latest/ai/privacy.md +++ b/_docs/latest/ai/privacy.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/ai/settings.md b/_docs/latest/ai/settings.md index 9bb3997fa6..c5dc464718 100644 --- a/_docs/latest/ai/settings.md +++ b/_docs/latest/ai/settings.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/ai/start.md b/_docs/latest/ai/start.md index 605b57f26d..5037b0965a 100644 --- a/_docs/latest/ai/start.md +++ b/_docs/latest/ai/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/ai/system-prompts.md b/_docs/latest/ai/system-prompts.md index 0e0d6c4a39..0c84fcf54a 100644 --- a/_docs/latest/ai/system-prompts.md +++ b/_docs/latest/ai/system-prompts.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/ai/usage-auditing.md b/_docs/latest/ai/usage-auditing.md index bc806ea44b..6d7dc0f467 100644 --- a/_docs/latest/ai/usage-auditing.md +++ b/_docs/latest/ai/usage-auditing.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/ai/usage-controls.md b/_docs/latest/ai/usage-controls.md index 3ae7949e82..45a75f568c 100644 --- a/_docs/latest/ai/usage-controls.md +++ b/_docs/latest/ai/usage-controls.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/api.html b/_docs/latest/api.html index a56fa2db0f..1b0c177a3e 100644 --- a/_docs/latest/api.html +++ b/_docs/latest/api.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: false show_title_breadcrumb: true diff --git a/_docs/latest/api.json b/_docs/latest/api.json index 090d1643ea..8a41ad3a1f 100644 --- a/_docs/latest/api.json +++ b/_docs/latest/api.json @@ -43,6 +43,31 @@ } }, "required" : [ "url", "created_at", "sync_started_at", "created_by_id", "db_id" ] + }, { + "type" : "object", + "properties" : { + "created_at" : { + "type" : "integer", + "minimum" : 1 + }, + "created_by_id" : { + "type" : "integer", + "minimum" : 1 + }, + "db_id" : { + "type" : "integer", + "minimum" : 1 + }, + "sync_started_at" : { + "type" : "integer", + "minimum" : 1 + }, + "url" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "url", "created_at", "sync_started_at", "created_by_id", "db_id" ] }, { "type" : "object", "properties" : { @@ -1142,6 +1167,114 @@ "$ref" : "#/components/schemas/metabase-enterprise.action-v2.api.api-action-expression" } ] }, + "metabase-enterprise.data-complexity-score.api.node" : { + "anyOf" : [ { + "type" : "object", + "properties" : { + "error" : { + "type" : "string" + } + }, + "required" : [ "error" ], + "additionalProperties" : false + }, { + "type" : "object", + "properties" : { + "measurement" : { + "type" : "number" + }, + "rating" : { + "oneOf" : [ { + "type" : "string", + "enum" : [ "low", "medium", "high" ] + }, { + "type" : "null" + } ] + }, + "rating_label" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "score" : { + "type" : "integer", + "minimum" : 0 + } + }, + "required" : [ "measurement", "score", "rating", "rating_label" ], + "additionalProperties" : false + }, { + "type" : "object", + "properties" : { + "components" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/components/schemas/metabase-enterprise.data-complexity-score.api.node" + } + }, + "rating" : { + "oneOf" : [ { + "type" : "string", + "enum" : [ "low", "medium", "high" ] + }, { + "type" : "null" + } ] + }, + "rating_label" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "score" : { + "oneOf" : [ { + "type" : "integer", + "minimum" : 0 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "score", "rating", "rating_label", "components" ], + "additionalProperties" : false + } ] + }, + "metabase-enterprise.data-studio.api.table.publish-table-selectors" : { + "type" : "object", + "properties" : { + "collection_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "database_ids" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "schema_ids" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "table_ids" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + } + }, + "required" : [ "collection_id" ] + }, "metabase-enterprise.data-studio.api.table.publish-tables-response" : { "description" : "Schema for /publish-tables endpoint response. Matches frontend PublishTablesResponse type.", "type" : "object", @@ -1869,6 +2002,454 @@ }, "required" : [ "id", "analyzed_entity_type", "analyzed_entity_id", "error_type" ] }, + "metabase-enterprise.erd.impl.erd-edge" : { + "type" : "object", + "properties" : { + "relationship" : { + "type" : "string", + "enum" : [ "one-to-one", "many-to-one" ] + }, + "source_field_id" : { + "type" : "integer" + }, + "source_table_id" : { + "type" : "integer" + }, + "target_field_id" : { + "type" : "integer" + }, + "target_table_id" : { + "type" : "integer" + } + }, + "required" : [ "source_table_id", "source_field_id", "target_table_id", "target_field_id", "relationship" ] + }, + "metabase-enterprise.erd.impl.erd-field" : { + "type" : "object", + "properties" : { + "base_type" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "type" : "integer" + }, + "name" : { + "type" : "string" + }, + "semantic_type" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "fk_target_table_id" : { + "oneOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + }, + "display_name" : { + "type" : "string" + }, + "effective_type" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "database_type" : { + "type" : "string" + }, + "fk_target_field_id" : { + "oneOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "name", "display_name", "database_type" ] + }, + "metabase-enterprise.erd.impl.erd-node" : { + "type" : "object", + "properties" : { + "db_id" : { + "type" : "integer" + }, + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "display_name" : { + "type" : "string" + }, + "fields" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.erd.impl.erd-field" + } + }, + "name" : { + "type" : "string" + }, + "owner" : { + "$ref" : "#/components/schemas/metabase-enterprise.erd.impl.erd-owner" + }, + "schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "table_id" : { + "type" : "integer" + } + }, + "required" : [ "table_id", "name", "display_name", "db_id", "fields" ] + }, + "metabase-enterprise.erd.impl.erd-owner" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "email" : { + "type" : "string" + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "type" : "integer" + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "email" ] + }, { + "type" : "null" + } ] + }, + "metabase-enterprise.erd.impl.erd-request" : { + "type" : "object", + "properties" : { + "database-id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "table-ids" : { + "oneOf" : [ { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, { + "type" : "null" + } ] + } + }, + "required" : [ "database-id" ] + }, + "metabase-enterprise.erd.impl.erd-response" : { + "type" : "object", + "properties" : { + "edges" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.erd.impl.erd-edge" + } + }, + "nodes" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.erd.impl.erd-node" + } + } + }, + "required" : [ "nodes", "edges" ] + }, + "metabase-enterprise.notification-admin.api.bulk-response" : { + "type" : "object", + "properties" : { + "updated" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + } + }, + "required" : [ "updated" ] + }, + "metabase-enterprise.notification-admin.api.channel-entry" : { + "description" : "One channel delivery attempt within a tick.", + "type" : "object", + "properties" : { + "channel_type" : { + "type" : "string" + }, + "error" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "status" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-status" + } + }, + "required" : [ "channel_type", "status", "error" ], + "additionalProperties" : false + }, + "metabase-enterprise.notification-admin.api.detail-response" : { + "type" : "object", + "properties" : { + "last_check" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-summary" + }, { + "type" : "null" + } ] + }, + "payload_type" : { + "type" : "string" + }, + "payload_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "send_history" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.tick-send-entry" + } + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "check_history" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-summary" + } + }, + "last_send" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-summary" + }, { + "type" : "null" + } ] + }, + "updated_at" : { + "type" : "string", + "format" : "date-time" + }, + "created_at" : { + "type" : "string", + "format" : "date-time" + }, + "active" : { + "type" : "boolean" + }, + "creator_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "active", "creator_id", "created_at", "updated_at", "payload_type", "payload_id", "last_check", "last_send", "check_history", "send_history" ] + }, + "metabase-enterprise.notification-admin.api.list-response" : { + "type" : "object", + "properties" : { + "data" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.list-row" + } + }, + "limit" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "offset" : { + "oneOf" : [ { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, { + "type" : "null" + } ] + }, + "total" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + } + }, + "required" : [ "data", "total", "limit", "offset" ] + }, + "metabase-enterprise.notification-admin.api.list-row" : { + "type" : "object", + "properties" : { + "last_check" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-summary" + }, { + "type" : "null" + } ] + }, + "payload_type" : { + "type" : "string" + }, + "payload_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_send" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-summary" + }, { + "type" : "null" + } ] + }, + "updated_at" : { + "type" : "string", + "format" : "date-time" + }, + "created_at" : { + "type" : "string", + "format" : "date-time" + }, + "active" : { + "type" : "boolean" + }, + "creator_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "active", "creator_id", "created_at", "updated_at", "payload_type", "payload_id", "last_check", "last_send" ] + }, + "metabase-enterprise.notification-admin.api.run-status" : { + "type" : "string", + "enum" : [ "failing", "successful" ] + }, + "metabase-enterprise.notification-admin.api.run-summary" : { + "type" : "object", + "properties" : { + "at" : { + "type" : "string", + "format" : "date-time" + }, + "error" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "status" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-status" + } + }, + "required" : [ "at", "error", "status" ], + "additionalProperties" : false + }, + "metabase-enterprise.notification-admin.api.sort-column" : { + "type" : "string", + "enum" : [ "id", "last_send", "last_check", "card_name", "creator_name", "updated_at" ] + }, + "metabase-enterprise.notification-admin.api.sort-direction" : { + "type" : "string", + "enum" : [ "asc", "desc" ] + }, + "metabase-enterprise.notification-admin.api.tick-send-entry" : { + "description" : "One tick's worth of sends, rolled up across all channels that fired in that tick.", + "type" : "object", + "properties" : { + "at" : { + "type" : "string", + "format" : "date-time" + }, + "channels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.channel-entry" + } + }, + "error" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "status" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-status" + } + }, + "required" : [ "at", "status", "error", "channels" ], + "additionalProperties" : false + }, "metabase-enterprise.permission-debug.impl.group-id" : { "type" : "integer" }, @@ -2139,6 +2720,156 @@ }, "required" : [ "min", "fixed" ] }, + "metabase-enterprise.serialization.schema.export-metadata-response" : { + "type" : "object", + "properties" : { + "databases" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.serialization.schema.exported-database" + } + }, + "fields" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.serialization.schema.exported-field" + } + }, + "tables" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.serialization.schema.exported-table" + } + } + } + }, + "metabase-enterprise.serialization.schema.exported-database" : { + "type" : "object", + "properties" : { + "engine" : { + "type" : "string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "name" : { + "type" : "string" + } + }, + "required" : [ "id", "name", "engine" ] + }, + "metabase-enterprise.serialization.schema.exported-field" : { + "type" : "object", + "properties" : { + "base_type" : { + "type" : "string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "coercion_strategy" : { + "type" : "string" + }, + "name" : { + "type" : "string" + }, + "semantic_type" : { + "type" : "string" + }, + "table_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.table" + }, + "nfc_path" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "effective_type" : { + "type" : "string" + }, + "parent_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + }, + "database_type" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "fk_target_field_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + } + }, + "required" : [ "id", "table_id", "name", "base_type" ] + }, + "metabase-enterprise.serialization.schema.exported-table" : { + "type" : "object", + "properties" : { + "db_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "description" : { + "type" : "string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.table" + }, + "name" : { + "type" : "string" + }, + "schema" : { + "type" : "string" + } + }, + "required" : [ "id", "db_id", "name" ] + }, + "metabase-enterprise.serialization.schema.import-status-response" : { + "description" : "Wire shape of `GET /metadata/import/:id`. Timestamps are ISO-8601 strings.\n `:started-at`/`:finished-at`/`:wall-ms` are nil until the relevant lifecycle\n stage is reached; `:error` is nil unless the import failed.", + "type" : "object", + "properties" : { + "enqueued-at" : { + "type" : "string" + }, + "error" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "finished-at" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "type" : "string" + }, + "started-at" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "status" : { + "type" : "string", + "enum" : [ "queued", "running", "ok", "error" ] + }, + "wall-ms" : { + "oneOf" : [ { + "type" : "number" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "status", "enqueued-at", "started-at", "finished-at", "wall-ms", "error" ], + "additionalProperties" : false + }, "metabase-enterprise.support-access-grants.schema.create-grant-request" : { "description" : "Schema for POST /api/ee/support-access-grants request body.", "type" : "object", @@ -3183,6 +3914,11 @@ "required" : [ "unknown" ] } ] }, + "metabase.agent-api.api.card-display" : { + "description" : "Display types accepted by Card. Validates LLM-passed values so a bogus\n value (e.g. `\"potato\"`) gets a 400 rather than persisting junk.", + "type" : "string", + "enum" : [ "table", "bar", "line", "pie", "scatter", "area", "row", "combo", "pivot", "scalar", "smartscalar", "gauge", "progress", "funnel", "map", "waterfall", "sankey" ] + }, "metabase.agent-api.api.column-metadata" : { "description" : "Metadata for a single result column.", "type" : "object", @@ -3206,10 +3942,39 @@ }, "required" : [ "name", "base_type", "display_name" ] }, + "metabase.agent-api.api.construct-query-request" : { + "description" : "Request body for /v2/construct-query and the fresh-query branch of /v2/query.\n A single `:query` key whose value is a JSON object matching\n [[metabase.lib.schema/external-query]] — the canonical portable MBQL 5 wire format. The\n query is fully self-describing: the database is derived from the first stage's\n `source-table:` or `source-card:`, all field references are portable FKs\n (`[, , , ]`), and there is no auxiliary\n `source_entity` / `referenced_entities` envelope. See\n `resources/metabot/prompts/tools/construct_notebook_query.md` for the full format reference\n (including operators, joins, expressions, multi-stage queries, and FK conventions).\n\n Closed map: any extra top-level keys (notably the legacy `source_entity` /\n `referenced_entities` envelope from before the repr migration) are rejected with a 400 so\n callers don't silently send fields the server ignores.\n\n The inner `:query` value is intentionally typed as a plain `:map` at this boundary rather\n than `::lib.schema/external-query`. Reasons:\n\n 1. Deep MBQL-shape validation runs inside the representations pipeline\n (`metabot.tools.construct/execute-representations-query` calls `repr/validate-query`\n after the repair pass), so the boundary check would be redundant.\n\n 2. The strict-tool manifest lint (`assert-optional-fields-nullable!`) walks every map\n reachable from the tool input schema. `::external-query` references `::query`, which\n carries several `:optional` keys (`:lib/metadata`, `:database`, `:settings`, …) that\n are not `[:maybe ...]` — for sound reasons unrelated to this endpoint. Recursing into\n them would force a wide schema change just to satisfy the lint at the agent boundary.", + "type" : "object", + "properties" : { + "prompt" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1, + "maxLength" : 10000 + }, { + "type" : "null" + } ] + }, + "query" : { + "type" : "object", + "properties" : { } + } + }, + "required" : [ "query" ], + "additionalProperties" : false + }, "metabase.agent-api.api.construct-query-response" : { - "description" : "Response containing a base64-encoded MBQL query for use with /v1/execute.", + "description" : "Response containing a base64-encoded MBQL query for use with /v1/execute. The optional\n `:prompt` echoes the request's prompt back so the MCP layer can store it with the\n handle (see `metabase.mcp.tools/make-store-construct-query-result`).", "type" : "object", "properties" : { + "prompt" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + }, "query" : { "type" : "string", "minLength" : 1 @@ -3217,10 +3982,279 @@ }, "required" : [ "query" ] }, - "metabase.agent-api.api.entity-type" : { - "description" : "The type of queryable entity.", - "type" : "string", - "enum" : [ "table", "metric" ] + "metabase.agent-api.api.create-collection-request" : { + "description" : "Request shape for `create_collection`. `:parent_collection_id` is named separately from\n the internal `:parent_id` field to make the LLM-facing API less ambiguous (the caller is\n saying \"put it under this parent\", not echoing back a server-set field).", + "type" : "object", + "properties" : { + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "parent_collection_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "name" ] + }, + "metabase.agent-api.api.create-collection-response" : { + "description" : "Returned by `create_collection`. Exposes the materialized-path `:location` so callers\n can sanity-check nesting without a follow-up read.", + "type" : "object", + "properties" : { + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "location" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "parent_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "name", "parent_id", "location", "description" ] + }, + "metabase.agent-api.api.create-dashboard-request" : { + "type" : "object", + "properties" : { + "collection_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "question_ids" : { + "oneOf" : [ { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, { + "type" : "null" + } ] + } + }, + "required" : [ "name" ] + }, + "metabase.agent-api.api.create-dashboard-response" : { + "type" : "object", + "properties" : { + "collection_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "dashcard_ids" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "id", "name", "collection_id", "description", "dashcard_ids" ] + }, + "metabase.agent-api.api.create-question-request" : { + "type" : "object", + "properties" : { + "collection_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "display" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.agent-api.api.card-display" + }, { + "type" : "null" + } ] + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "query" : { + "type" : "string", + "minLength" : 1 + }, + "visualization_settings" : { + "oneOf" : [ { + "type" : "object", + "properties" : { } + }, { + "type" : "null" + } ] + } + }, + "required" : [ "name", "query" ] + }, + "metabase.agent-api.api.create-question-response" : { + "type" : "object", + "properties" : { + "collection_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "display" : { + "type" : "string" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "id", "name", "display", "collection_id", "description" ] + }, + "metabase.agent-api.api.dashcard-mutation" : { + "description" : "One dashcard mutation. Discriminated on `:action`:\n - `add` : requires `card_id`. Auto-positioned. Optional `display_size`(\"wide\", \"tall\", or \"full\").\n - `remove` : requires `dashcard_id`.\n - `move` : requires `dashcard_id` and `position` (\"top\" or \"bottom\").", + "oneOf" : [ { + "type" : "object", + "properties" : { + "action" : { + "const" : "add" + }, + "card_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "display_size" : { + "oneOf" : [ { + "type" : "string", + "enum" : [ "wide", "tall", "full" ] + }, { + "type" : "null" + } ] + } + }, + "required" : [ "action", "card_id" ] + }, { + "type" : "object", + "properties" : { + "action" : { + "const" : "remove" + }, + "dashcard_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "action", "dashcard_id" ] + }, { + "type" : "object", + "properties" : { + "action" : { + "const" : "move" + }, + "dashcard_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "position" : { + "type" : "string", + "enum" : [ "top", "bottom" ] + } + }, + "required" : [ "action", "dashcard_id", "position" ] + } ] }, "metabase.agent-api.api.execute-query-request" : { "description" : "Request schema for /v1/execute. Accepts a base64-encoded MBQL query.", @@ -3272,240 +4306,24 @@ }, "required" : [ "status" ] }, - "metabase.agent-api.api.field" : { - "description" : "A field from a table or metric. field_id is the real database field ID (integer) for concrete fields,\n or a string alias for expression/aggregation columns.", + "metabase.agent-api.api.execute-sql-request" : { + "description" : "Request shape for /v1/execute-sql. The LLM passes a raw SQL string against a target database.", "type" : "object", "properties" : { - "base_type" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "coercion_strategy" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "name" : { - "type" : "string" - }, - "semantic_type" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "display_name" : { - "type" : "string" - }, - "field_values" : { - "oneOf" : [ { - "type" : "array", - "items" : { } - }, { - "type" : "null" - } ] - }, - "type" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.agent-api.api.field-type" - }, { - "type" : "null" - } ] - }, - "field_id" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.field-id" - }, - "effective_type" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "database_type" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - } - }, - "required" : [ "field_id", "name", "display_name" ] - }, - "metabase.agent-api.api.field-id" : { - "description" : "Field id as accepted by agent_api endpoints — either a real app-DB field id (positive integer)\n or a string alias for expression/aggregation columns.", - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase.lib.schema.id.field" - }, { - "type" : "string" - } ] - }, - "metabase.agent-api.api.field-type" : { - "description" : "A data type for a field derived from Metabase's type hierarchy.", - "type" : "string", - "enum" : [ "boolean", "date", "datetime", "time", "number", "string" ] - }, - "metabase.agent-api.api.field-values" : { - "description" : "Statistics and sample values for a specific field.", - "type" : "object", - "properties" : { - "field_id" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.agent-api.api.field-id" - }, { - "type" : "null" - } ] - }, - "statistics" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.agent-api.api.statistics" - }, { - "type" : "null" - } ] - }, - "values" : { - "oneOf" : [ { - "type" : "array", - "items" : { } - }, { - "type" : "null" - } ] - } - } - }, - "metabase.agent-api.api.measure" : { - "description" : "A reusable aggregation expression associated with a table. Reference via measure_id in the aggregations array.", - "type" : "object", - "properties" : { - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "display_name" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "id" : { - "type" : "integer" - }, - "name" : { - "type" : "string" - } - }, - "required" : [ "id", "name" ] - }, - "metabase.agent-api.api.metric" : { - "description" : "A metric with its queryable dimensions and segments. The default_time_dimension_field_id is the field_id of the recommended time dimension for temporal breakouts.", - "type" : "object", - "properties" : { - "default_time_dimension_field_id" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.agent-api.api.field-id" - }, { - "type" : "null" - } ] - }, - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "id" : { - "type" : "integer" - }, - "name" : { - "type" : "string" - }, - "queryable_dimensions" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.field" - } - }, { - "type" : "null" - } ] - }, - "segments" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.segment" - } - }, { - "type" : "null" - } ] - }, - "type" : { - "const" : "metric" - }, - "verified" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - }, - "required" : [ "id", "type", "name" ] - }, - "metabase.agent-api.api.metric-summary" : { - "description" : "Summary of a metric associated with a table. Includes the field_id of the default time dimension for temporal breakouts.", - "type" : "object", - "properties" : { - "default_time_dimension_field_id" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.agent-api.api.field-id" - }, { - "type" : "null" - } ] - }, - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "id" : { - "type" : "integer" - }, - "name" : { - "type" : "string" + "database_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, - "type" : { - "const" : "metric" + "sql" : { + "type" : "string", + "minLength" : 1 } }, - "required" : [ "id", "type", "name" ] - }, - "metabase.agent-api.api.program-request" : { - "description" : "Request body for /v2/construct-query and /v2/query.\n An agent-lib structured program with `:source` and `:operations`. The top-level\n `:source` must reference a database entity (`table`, `card`, `dataset`, or\n `metric`); `context` and nested `program` sources are rejected at the HTTP\n boundary by [[evaluate-program-for-execution]] because they require an\n in-process evaluation context.", - "$ref" : "#/components/schemas/metabase.agent-lib.schema.program" + "required" : [ "database_id", "sql" ] }, "metabase.agent-api.api.query-request" : { - "description" : "Request body for /v2/query. Accepts either a structured program or a continuation_token.", + "description" : "Request body for /v2/query. Accepts either a fresh-query payload (`{:query }`,\n same shape as /v2/construct-query) or a `:continuation_token` from a prior response.\n\n Both branches are closed maps: extra top-level keys (e.g. the legacy\n `source_entity` / `referenced_entities` envelope, or sending `:query` and\n `:continuation_token` simultaneously) are rejected with a 400.", "oneOf" : [ { "type" : "object", "properties" : { @@ -3514,9 +4332,10 @@ "minLength" : 1 } }, - "required" : [ "continuation_token" ] + "required" : [ "continuation_token" ], + "additionalProperties" : false }, { - "$ref" : "#/components/schemas/metabase.agent-api.api.program-request" + "$ref" : "#/components/schemas/metabase.agent-api.api.construct-query-request" } ] }, "metabase.agent-api.api.query-response" : { @@ -3565,73 +4384,58 @@ }, "required" : [ "status" ] }, - "metabase.agent-api.api.related-table" : { - "description" : "A table related to the queried entity via foreign key. The related_by field indicates the FK field name.", + "metabase.agent-api.api.read-resource-item" : { + "description" : "One fetched resource. Either `:content` (success) or `:error` (failure) is present.", "type" : "object", "properties" : { - "database_engine" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "id" : { - "type" : "integer" - }, - "name" : { - "type" : "string" - }, - "database_id" : { - "oneOf" : [ { - "type" : "integer" - }, { - "type" : "null" - } ] - }, - "related_by" : { - "oneOf" : [ { - "type" : "string" - }, { + "content" : { + "oneOf" : [ { }, { "type" : "null" } ] }, - "display_name" : { + "error" : { "oneOf" : [ { "type" : "string" }, { "type" : "null" } ] }, - "type" : { - "const" : "table" - }, - "fields" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.field" - } - }, { - "type" : "null" - } ] - }, - "database_schema" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] + "uri" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "uri" ] + }, + "metabase.agent-api.api.read-resource-request" : { + "description" : "Request shape for /v1/read-resource. Accepts up to 5 metabase:// URIs.", + "type" : "object", + "properties" : { + "uris" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "required" : [ "uris" ] + }, + "metabase.agent-api.api.read-resource-response" : { + "description" : "Response shape from /v1/read-resource. `:resources` is the per-URI result list;\n `:output` is the formatted XML string the LLM consumes.", + "type" : "object", + "properties" : { + "output" : { + "type" : "string" }, - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] + "resources" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.read-resource-item" + } } }, - "required" : [ "id", "type", "name" ] + "required" : [ "resources", "output" ] }, "metabase.agent-api.api.search-response" : { "description" : "Search results containing tables and metrics matching the query.", @@ -3711,568 +4515,237 @@ }, "required" : [ "id", "type", "name" ] }, - "metabase.agent-api.api.segment" : { - "description" : "A predefined filter condition that can be applied to queries via the segment_id in filters.", - "type" : "object", - "properties" : { - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "display_name" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "id" : { - "type" : "integer" - }, - "name" : { - "type" : "string" - } - }, - "required" : [ "id", "name" ] - }, - "metabase.agent-api.api.statistics" : { - "description" : "Statistical summary of a field's values computed during database sync. Includes counts, percentages, numeric summaries (min/max/avg/quartiles/sd), and date ranges.", + "metabase.agent-api.api.update-dashboard-request" : { + "description" : "Patch shape for `update_dashboard`. Metadata fields and an optional `dashcards` list of\n add/remove/move mutations applied in order.", "type" : "object", "properties" : { - "min" : { + "archived" : { "oneOf" : [ { - "type" : "number" + "type" : "boolean" }, { "type" : "null" } ] }, - "percent_url" : { + "collection_id" : { "oneOf" : [ { - "type" : "number" + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, { "type" : "null" } ] }, - "average_length" : { + "dashcards" : { "oneOf" : [ { - "type" : "number" + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.dashcard-mutation" + } }, { "type" : "null" } ] }, - "earliest" : { + "description" : { "oneOf" : [ { "type" : "string" }, { "type" : "null" } ] }, - "q1" : { + "name" : { "oneOf" : [ { - "type" : "number" + "type" : "string", + "minLength" : 1 }, { "type" : "null" } ] + } + } + }, + "metabase.agent-api.api.update-dashboard-response" : { + "description" : "Returned by `update_dashboard`. `:dashcard_ids` is the post-mutation list of dashcard\n ids in row/col order so the LLM can confirm what landed on the dashboard.", + "type" : "object", + "properties" : { + "archived" : { + "type" : "boolean" }, - "max" : { + "collection_id" : { "oneOf" : [ { - "type" : "number" + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, { "type" : "null" } ] }, - "distinct_count" : { - "oneOf" : [ { - "type" : "integer" - }, { - "type" : "null" - } ] + "dashcard_ids" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } }, - "percent_state" : { + "description" : { "oneOf" : [ { - "type" : "number" + "type" : "string" }, { "type" : "null" } ] }, - "percent_null" : { + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "id", "name", "collection_id", "description", "archived", "dashcard_ids" ] + }, + "metabase.agent-api.api.update-question-request" : { + "description" : "Patch shape for `update_question`. Every field is optional; only the fields the caller\n passes are changed. `:query` accepts a base64-encoded MBQL string (or query_handle UUID\n resolved upstream in the MCP layer).", + "type" : "object", + "properties" : { + "archived" : { "oneOf" : [ { - "type" : "number" + "type" : "boolean" }, { "type" : "null" } ] }, - "avg" : { + "collection_id" : { "oneOf" : [ { - "type" : "number" + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, { "type" : "null" } ] }, - "sd" : { + "description" : { "oneOf" : [ { - "type" : "number" + "type" : "string" }, { "type" : "null" } ] }, - "percent_email" : { + "display" : { "oneOf" : [ { - "type" : "number" + "$ref" : "#/components/schemas/metabase.agent-api.api.card-display" }, { "type" : "null" } ] }, - "latest" : { + "name" : { "oneOf" : [ { - "type" : "string" + "type" : "string", + "minLength" : 1 }, { "type" : "null" } ] }, - "q3" : { + "query" : { "oneOf" : [ { - "type" : "number" + "type" : "string", + "minLength" : 1 }, { "type" : "null" } ] }, - "percent_json" : { + "visualization_settings" : { "oneOf" : [ { - "type" : "number" + "type" : "object", + "properties" : { } }, { "type" : "null" } ] } } }, - "metabase.agent-api.api.table" : { - "description" : "Full details of a table including its fields, related tables, metrics, and segments.", + "metabase.agent-api.api.update-question-response" : { + "description" : "Returned by `update_question` - the fields the LLM is most likely to want to read back\n after an update. Excludes the full dataset_query, which the caller can re-fetch via\n `read_resource` if needed.", "type" : "object", "properties" : { - "database_engine" : { - "type" : "string" - }, - "id" : { - "type" : "integer" - }, - "name" : { - "type" : "string" - }, - "database_id" : { - "type" : "integer" - }, - "related_tables" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.related-table" - } - }, { - "type" : "null" - } ] - }, - "display_name" : { - "type" : "string" + "archived" : { + "type" : "boolean" }, - "segments" : { + "collection_id" : { "oneOf" : [ { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.segment" - } + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, { "type" : "null" } ] }, - "type" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.entity-type" - }, - "fields" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.field" - } - }, - "database_schema" : { + "description" : { "oneOf" : [ { "type" : "string" }, { "type" : "null" } ] }, - "metrics" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.metric-summary" - } - }, { - "type" : "null" - } ] + "display" : { + "type" : "string" }, - "measures" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.measure" - } - }, { - "type" : "null" - } ] + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] + "name" : { + "type" : "string", + "minLength" : 1 } }, - "required" : [ "id", "type", "name", "display_name", "database_id", "database_engine", "fields" ] + "required" : [ "id", "name", "display", "collection_id", "description", "archived" ] }, - "metabase.agent-lib.schema.aggregation-ref-form" : { - "type" : "array", - "prefixItems" : [ { - "const" : "aggregation-ref" - }, { - "type" : "integer", - "minimum" : 0 - } ] - }, - "metabase.agent-lib.schema.expression-ref-form" : { - "type" : "array", - "prefixItems" : [ { - "const" : "expression-ref" + "metabase.analyze.query-results.ResultsMetadata" : { + "description" : "value must be an array of valid results column metadata maps.", + "oneOf" : [ { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.query-processor.schema..result-metadata.column" + } }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.non-blank-string" + "type" : "null" } ] }, - "metabase.agent-lib.schema.form" : { - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.source-ref" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.query-aware-ref" + "metabase.api-keys.schema..key.masked" : { + "description" : "Masked string like 'mb_1234**********'.", + "allOf" : [ { + "$ref" : "#/components/schemas/metabase.api-keys.schema..key.raw" }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.nested-operator-form" + "type" : "string", + "pattern" : "^mb_.*{4}\\*+$" } ] }, - "metabase.agent-lib.schema.map-literal" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.node" - } + "metabase.api-keys.schema..key.raw" : { + "description" : "Unhashed string of the form 'mb_'.", + "type" : "string", + "minLength" : 12, + "maxLength" : 254 }, - "metabase.agent-lib.schema.nested-operator-form" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.node" - }, - "minItems" : 1 + "metabase.api-keys.schema.id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, - "metabase.agent-lib.schema.node" : { - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.scalar" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.program-literal" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.map-literal" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.vector-literal" - } ] + "metabase.api-keys.schema.name" : { + "type" : "string", + "minLength" : 1, + "maxLength" : 254 }, - "metabase.agent-lib.schema.non-blank-string" : { - "type" : "string" + "metabase.api-keys.schema.prefix" : { + "description" : "Prefix string of an API Key, suitable for passing around unmasked. This must be unique.", + "type" : "string", + "minLength" : 7, + "maxLength" : 7 }, - "metabase.agent-lib.schema.page" : { - "type" : "object", - "properties" : { - "items" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, - "page" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } - }, - "required" : [ "page", "items" ], - "additionalProperties" : false - }, - "metabase.agent-lib.schema.program" : { - "type" : "object", - "properties" : { - "operations" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.top-level-op" - } - }, - "source" : { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.source" - } - }, - "required" : [ "source", "operations" ], - "additionalProperties" : false - }, - "metabase.agent-lib.schema.program-literal" : { - "type" : "object", - "properties" : { - "program" : { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.program" - }, - "type" : { - "const" : "program" - } - }, - "required" : [ "type", "program" ], - "additionalProperties" : false - }, - "metabase.agent-lib.schema.query-aware-ref" : { - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.expression-ref-form" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.aggregation-ref-form" - } ] - }, - "metabase.agent-lib.schema.scalar" : { - "anyOf" : [ { - "type" : "null" - }, { - "type" : "string" - }, { - "type" : "number" - }, { - "type" : "boolean" - } ] - }, - "metabase.agent-lib.schema.source" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "ref" : { - "const" : "source" - }, - "type" : { - "const" : "context" - } - }, - "required" : [ "type", "ref" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, - "type" : { - "type" : "string", - "enum" : [ "table", "card", "dataset", "metric" ] - } - }, - "required" : [ "type", "id" ], - "additionalProperties" : false - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.program-literal" - } ] - }, - "metabase.agent-lib.schema.source-ref" : { - "anyOf" : [ { - "type" : "array", - "prefixItems" : [ { - "const" : "field" - }, { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "table" - }, { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "card" - }, { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "metric" - }, { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } ] - } ] - }, - "metabase.agent-lib.schema.top-level-op" : { - "anyOf" : [ { - "type" : "array", - "prefixItems" : [ { - "const" : "filter" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "aggregate" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "breakout" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "with-fields" - }, { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - } - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "limit" - }, { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "expression" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.non-blank-string" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "join" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - } ] - }, { - "anyOf" : [ { - "type" : "array", - "prefixItems" : [ { - "const" : "order-by" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "order-by" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.form" - }, { - "type" : "string", - "enum" : [ "asc", "desc" ] - } ] - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "append-stage" - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "drop-stage" - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "drop-empty-stages" - } ] - }, { - "type" : "array", - "prefixItems" : [ { - "const" : "with-page" - }, { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.page" - } ] - } ] - }, - "metabase.agent-lib.schema.vector-literal" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.agent-lib.schema.node" - } - }, - "metabase.analyze.query-results.ResultsMetadata" : { - "description" : "value must be an array of valid results column metadata maps.", - "oneOf" : [ { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.query-processor.schema..result-metadata.column" - } - }, { - "type" : "null" - } ] - }, - "metabase.api-keys.schema..key.masked" : { - "description" : "Masked string like 'mb_1234**********'.", - "allOf" : [ { - "$ref" : "#/components/schemas/metabase.api-keys.schema..key.raw" - }, { - "type" : "string", - "pattern" : "^mb_.*{4}\\*+$" - } ] - }, - "metabase.api-keys.schema..key.raw" : { - "description" : "Unhashed string of the form 'mb_'.", - "type" : "string", - "minLength" : 12, - "maxLength" : 254 - }, - "metabase.api-keys.schema.id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, - "metabase.api-keys.schema.name" : { - "type" : "string", - "minLength" : 1, - "maxLength" : 254 - }, - "metabase.api-keys.schema.prefix" : { - "description" : "Prefix string of an API Key, suitable for passing around unmasked. This must be unique.", - "type" : "string", - "minLength" : 7, - "maxLength" : 7 - }, - "metabase.cache.api..cache-strategy.base.ee" : { + "metabase.cache.api..cache-strategy.base.ee" : { "type" : "object", "properties" : { "type" : { @@ -5168,7 +5641,7 @@ }, "metabase.driver.connection.connection-type" : { "type" : "string", - "enum" : [ "default", "write-data" ] + "enum" : [ "default", "write-data", "admin", "transform" ] }, "metabase.embedding-rest.api.theme.EmbeddingTheme" : { "type" : "object", @@ -8000,6 +8473,8 @@ "required" : [ "lib/type" ] }, { "$ref" : "#/components/schemas/metabase.lib.schema..stage.valid-refs" + }, { + "$ref" : "#/components/schemas/metabase.lib.schema..stage.page-and-limit-are-mutually-exclusive" }, { "allOf" : [ ] } ] @@ -8053,6 +8528,9 @@ "allOf" : [ ] } ] }, + "metabase.lib.schema..stage.page-and-limit-are-mutually-exclusive" : { + "description" : "If an MBQL query stage specifies `:page`, it should not also specify `:limit`" + }, "metabase.lib.schema..stage.type" : { "type" : "string", "enum" : [ "mbql.stage/native", "mbql.stage/mbql" ] @@ -9572,7 +10050,21 @@ "description" : "Schema for fingerprint information for Fields deriving from `:type/Number`.", "type" : "object", "properties" : { - "avg" : { + "mode-fraction" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, { + "type" : "null" + } ] + }, + "min" : { + "oneOf" : [ { + "type" : "number" + }, { + "type" : "null" + } ] + }, + "q1" : { "oneOf" : [ { "type" : "number" }, { @@ -9586,14 +10078,21 @@ "type" : "null" } ] }, - "min" : { + "avg" : { "oneOf" : [ { "type" : "number" }, { "type" : "null" } ] }, - "q1" : { + "sd" : { + "oneOf" : [ { + "type" : "number" + }, { + "type" : "null" + } ] + }, + "skewness" : { "oneOf" : [ { "type" : "number" }, { @@ -9607,12 +10106,26 @@ "type" : "null" } ] }, - "sd" : { + "top-3-fraction" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, { + "type" : "null" + } ] + }, + "excess-kurtosis" : { "oneOf" : [ { "type" : "number" }, { "type" : "null" } ] + }, + "zero-fraction" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, { + "type" : "null" + } ] } } }, @@ -9633,6 +10146,27 @@ }, { "type" : "null" } ] + }, + "mode-fraction" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, { + "type" : "null" + } ] + }, + "skewness" : { + "oneOf" : [ { + "type" : "number" + }, { + "type" : "null" + } ] + }, + "top-3-fraction" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, { + "type" : "null" + } ] } } }, @@ -9647,6 +10181,20 @@ "type" : "null" } ] }, + "mode-fraction" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, { + "type" : "null" + } ] + }, + "percent-blank" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, { + "type" : "null" + } ] + }, "percent-email" : { "oneOf" : [ { "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" @@ -9674,6 +10222,13 @@ }, { "type" : "null" } ] + }, + "top-3-fraction" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.lib.schema.metadata.fingerprint.percent" + }, { + "type" : "null" + } ] } } }, @@ -13797,212 +14352,58 @@ "required" : [ "enabled" ] } }, - "metabase.warehouses-rest.api.database-info" : { + "metabase.workspaces.core.table-namespace" : { + "description" : "A `{:db ?, :schema ?}` namespace map. Either or both keys may be present\n depending on the driver's `qualified-name-components`; at least one must\n populate. Empty-string `\"\"` is reserved for the storage layer; the atom\n carries `nil`/missing for absent slots.", "type" : "object", "properties" : { - "engine" : { - "type" : "string" - }, - "id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.database" - }, - "name" : { - "type" : "string" - } - }, - "required" : [ "id", "name", "engine" ] - }, - "metabase.warehouses-rest.api.databases-metadata-response" : { - "type" : "object", - "properties" : { - "databases" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.warehouses-rest.api.database-info" - } - }, - "fields" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.warehouses-rest.api.field-info" - } - }, - "tables" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.warehouses-rest.api.table-info" - } - } - }, - "required" : [ "databases", "tables", "fields" ] - }, - "metabase.warehouses-rest.api.field-info" : { - "type" : "object", - "properties" : { - "base_type" : { - "type" : "string" - }, - "id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.field" - }, - "coercion_strategy" : { - "type" : "string" - }, - "name" : { - "type" : "string" - }, - "semantic_type" : { - "type" : "string" - }, - "table_id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.table" - }, - "effective_type" : { - "type" : "string" - }, - "parent_id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.field" - }, - "database_type" : { - "type" : "string" - }, - "description" : { - "type" : "string" + "db" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] }, - "fk_target_field_id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.field" + "schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] } - }, - "required" : [ "id", "table_id", "name", "base_type" ] + } }, - "metabase.warehouses-rest.api.field-values-info" : { + "metabase.workspaces.core.workspace-database-config" : { + "description" : "Per-database workspace config: `:input_schemas` is a vector of driver-opaque\n schema names (the source schemas the workspace reads from) — may be empty\n on drivers with no schema layer (e.g. MySQL), where the bound DB itself acts\n as the implicit input namespace; `:output` is a single namespace map (the\n workspace's isolation schema, expanded with the warehouse catalog at boot).", "type" : "object", "properties" : { - "field_id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.field" - }, - "has_more_values" : { - "type" : "boolean" - }, - "human_readable_values" : { + "input_schemas" : { "type" : "array", "items" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] + "type" : "string" } }, - "values" : { - "type" : "array", - "items" : { - "type" : "array", - "items" : { } - } + "output" : { + "$ref" : "#/components/schemas/metabase.workspaces.core.table-namespace" } }, - "required" : [ "field_id", "values", "has_more_values" ] + "required" : [ "input_schemas", "output" ] }, - "metabase.warehouses-rest.api.field-values-response" : { - "type" : "object", - "properties" : { - "field_values" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase.warehouses-rest.api.field-values-info" - } - } - }, - "required" : [ "field_values" ] - }, - "metabase.warehouses-rest.api.metadata-import-report" : { + "metabase.workspaces.core.workspace-instance-config" : { + "description" : "The shape stored in the EE `instance-workspace` setting after the `:workspace`\n config.yml loader has resolved database names to ids. Database keys are integer\n ids (post-resolution); the wire format with name keys lives in\n `metabase-enterprise.advanced-config.file.workspace`.", "type" : "object", "properties" : { "databases" : { "type" : "object", - "properties" : { - "failed" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { } - } - }, - "matched" : { - "type" : "integer" - }, - "missing" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { } - } - } - }, - "required" : [ "matched", "missing" ] - }, - "fields" : { - "type" : "object", - "properties" : { - "created" : { - "type" : "integer" - }, - "matched" : { - "type" : "integer" - }, - "missing" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { } - } - } - }, - "required" : [ "matched", "created", "missing" ] - }, - "tables" : { - "type" : "object", - "properties" : { - "created" : { - "type" : "integer" - }, - "matched" : { - "type" : "integer" - }, - "missing" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { } - } - } - }, - "required" : [ "matched", "created", "missing" ] - } - }, - "required" : [ "databases", "tables", "fields" ] - }, - "metabase.warehouses-rest.api.table-info" : { - "type" : "object", - "properties" : { - "db_id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.database" - }, - "description" : { - "type" : "string" - }, - "id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.table" + "additionalProperties" : { + "$ref" : "#/components/schemas/metabase.workspaces.core.workspace-database-config" + } }, "name" : { - "type" : "string" - }, - "schema" : { - "type" : "string" + "type" : "string", + "minLength" : 1 } }, - "required" : [ "id", "db_id", "name" ] + "required" : [ "name", "databases" ] }, "metabase.xrays.api.automagic-dashboards.base-64-encoded-json" : { "description" : "form-encoded base-64-encoded JSON" @@ -14518,6 +14919,123 @@ "tags" : [ "/api/activity" ] } }, + "/api/agent/v1/collection" : { + "post" : { + "operationId" : "post-api-agent-v1-collection", + "summary" : "POST /api/agent/v1/collection", + "description" : "Create a new Collection.\n\n Pass `parent_collection_id` to nest under another collection; omit for a root-level collection.\n The caller must have write access to the parent (or root, if no parent given).", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.create-collection-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.create-collection-request" + } + } + } + }, + "tags" : [ "/api/agent" ] + } + }, + "/api/agent/v1/dashboard" : { + "post" : { + "operationId" : "post-api-agent-v1-dashboard", + "summary" : "POST /api/agent/v1/dashboard", + "description" : "Create a new dashboard, optionally populated with saved questions.\n\n Pass `question_ids` to add existing saved questions as cards on the dashboard.\n Cards are automatically positioned on the grid based on their display type.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.create-dashboard-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.create-dashboard-request" + } + } + } + }, + "tags" : [ "/api/agent" ] + } + }, + "/api/agent/v1/dashboard/{id}" : { + "put" : { + "operationId" : "put-api-agent-v1-dashboard-id", + "summary" : "PUT /api/agent/v1/dashboard/{id}", + "description" : "Update a dashboard. Patch semantics - only fields you pass are changed.\n\n Metadata: `name`, `description`, `collection_id`, `archived`. Dashcard mutations\n are submitted under `dashcards` as a list of `{action: add|remove|move, ...}`\n entries applied in order. `add` requires `card_id`; `remove` and `move` require\n `dashcard_id`.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.update-dashboard-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.update-dashboard-request" + } + } + } + }, + "tags" : [ "/api/agent" ] + } + }, "/api/agent/v1/execute" : { "post" : { "operationId" : "post-api-agent-v1-execute", @@ -14554,72 +15072,88 @@ "tags" : [ "/api/agent" ] } }, - "/api/agent/v1/metric/{id}" : { - "get" : { - "operationId" : "get-api-agent-v1-metric-id", - "summary" : "GET /api/agent/v1/metric/{id}", - "description" : "Get details for a metric by ID.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 + "/api/agent/v1/execute-sql" : { + "post" : { + "operationId" : "post-api-agent-v1-execute-sql", + "summary" : "POST /api/agent/v1/execute-sql", + "description" : "Execute a raw SQL query against a database. Returns rows + column metadata.\n\n Requires the user to have native-query permission on the target database; the QP\n middleware enforces this. The instance-level `mcp-execute-sql-enabled` setting\n must also be on (it is by default).", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.execute-query-response" + } + } + } }, - "description" : "value must be an integer greater than zero." - }, { - "in" : "query", - "name" : "with-default-temporal-breakout", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - }, { - "in" : "query", - "name" : "with-field-values", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" } - }, { - "in" : "query", - "name" : "with-queryable-dimensions", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.execute-sql-request" + } + } } - }, { - "in" : "query", - "name" : "with-segments", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] + }, + "tags" : [ "/api/agent" ] + } + }, + "/api/agent/v1/ping" : { + "get" : { + "operationId" : "get-api-agent-v1-ping", + "summary" : "GET /api/agent/v1/ping", + "description" : "Health check endpoint for the Agent API.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "message" : { + "type" : "string" + } + }, + "required" : [ "message" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" } - } ], + }, + "tags" : [ "/api/agent" ] + } + }, + "/api/agent/v1/question" : { + "post" : { + "operationId" : "post-api-agent-v1-question", + "summary" : "POST /api/agent/v1/question", + "description" : "Save a previously constructed query as a named question (card).\n\n The `query` parameter accepts a `query_handle` (UUID) returned by `construct_query`,\n or a base64-encoded MBQL string. MCP callers should always use the handle.\n Optionally specify display type, description, collection, and visualization settings.", + "parameters" : [ ], "responses" : { "2XX" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.metric" + "$ref" : "#/components/schemas/metabase.agent-api.api.create-question-response" } } } @@ -14631,14 +15165,23 @@ "description" : "Server error response" } }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.create-question-request" + } + } + } + }, "tags" : [ "/api/agent" ] } }, - "/api/agent/v1/metric/{id}/field/{field-id}/values" : { - "get" : { - "operationId" : "get-api-agent-v1-metric-id-field-field-id-values", - "summary" : "GET /api/agent/v1/metric/{id}/field/{field-id}/values", - "description" : "Get statistics and sample values for a metric field.", + "/api/agent/v1/question/{id}" : { + "put" : { + "operationId" : "put-api-agent-v1-question-id", + "summary" : "PUT /api/agent/v1/question/{id}", + "description" : "Update a saved question (card). Patch semantics - only fields that you pass are changed.\n\n Set `collection_id` to move the card to a different collection. Set `archived: true` to archive.\n Pass `query` (a query_handle from construct_query, or a base64 MBQL string) to replace the underlying query.", "parameters" : [ { "in" : "path", "name" : "id", @@ -14648,14 +15191,6 @@ "minimum" : 1 }, "description" : "value must be an integer greater than zero." - }, { - "in" : "path", - "name" : "field-id", - "required" : true, - "schema" : { - "type" : "string", - "minLength" : 1 - } } ], "responses" : { "2XX" : { @@ -14663,7 +15198,7 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.field-values" + "$ref" : "#/components/schemas/metabase.agent-api.api.update-question-response" } } } @@ -14675,14 +15210,23 @@ "description" : "Server error response" } }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.update-question-request" + } + } + } + }, "tags" : [ "/api/agent" ] } }, - "/api/agent/v1/ping" : { - "get" : { - "operationId" : "get-api-agent-v1-ping", - "summary" : "GET /api/agent/v1/ping", - "description" : "Health check endpoint for the Agent API.", + "/api/agent/v1/read-resource" : { + "post" : { + "operationId" : "post-api-agent-v1-read-resource", + "summary" : "POST /api/agent/v1/read-resource", + "description" : "Read one or more Metabase resources via metabase:// URI patterns.\n\n Dispatches into the shared URI resolver in `metabase.metabot.tools.resources`,\n which validates URIs, fetches entities with per-URI permission checks, and\n returns a map of `{:resources ... :output ...}`. Up to 5 URIs per call.", "parameters" : [ ], "responses" : { "2XX" : { @@ -14690,13 +15234,7 @@ "content" : { "application/json" : { "schema" : { - "type" : "object", - "properties" : { - "message" : { - "type" : "string" - } - }, - "required" : [ "message" ] + "$ref" : "#/components/schemas/metabase.agent-api.api.read-resource-response" } } } @@ -14708,6 +15246,15 @@ "description" : "Server error response" } }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.agent-api.api.read-resource-request" + } + } + } + }, "tags" : [ "/api/agent" ] } }, @@ -14781,157 +15328,11 @@ "tags" : [ "/api/agent" ] } }, - "/api/agent/v1/table/{id}" : { - "get" : { - "operationId" : "get-api-agent-v1-table-id", - "summary" : "GET /api/agent/v1/table/{id}", - "description" : "Get details for a table by ID.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - }, { - "in" : "query", - "name" : "with-field-values", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - }, { - "in" : "query", - "name" : "with-fields", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - }, { - "in" : "query", - "name" : "with-related-tables", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - }, { - "in" : "query", - "name" : "with-metrics", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - }, { - "in" : "query", - "name" : "with-measures", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - }, { - "in" : "query", - "name" : "with-segments", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.table" - } - } - } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/agent" ] - } - }, - "/api/agent/v1/table/{id}/field/{field-id}/values" : { - "get" : { - "operationId" : "get-api-agent-v1-table-id-field-field-id-values", - "summary" : "GET /api/agent/v1/table/{id}/field/{field-id}/values", - "description" : "Get statistics and sample values for a table field.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - }, { - "in" : "path", - "name" : "field-id", - "required" : true, - "schema" : { - "type" : "string", - "minLength" : 1 - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.field-values" - } - } - } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/agent" ] - } - }, "/api/agent/v2/construct-query" : { "post" : { "operationId" : "post-api-agent-v2-construct-query", "summary" : "POST /api/agent/v2/construct-query", - "description" : "Construct an MBQL query from a structured agent-lib program.\n\n The body is the program itself: a JSON object with `source` (identifying the\n table/card/dataset/metric to query) and `operations` (an array of operator\n tuples). Returns a base64-encoded MBQL query that can be executed via\n /v1/execute. See the agent_api reference for the full program syntax.", + "description" : "Construct an MBQL query from a portable MBQL 5 representations JSON payload.\n\n The body is `{\"query\": }` where `` is a JSON object\n matching `::lib.schema/external-query` — see the `construct_notebook_query` tool\n documentation for the format reference. Returns a base64-encoded MBQL query that can be\n executed via /v1/execute or paginated via /v2/query.", "parameters" : [ ], "responses" : { "2XX" : { @@ -14955,7 +15356,7 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase.agent-api.api.program-request" + "$ref" : "#/components/schemas/metabase.agent-api.api.construct-query-request" } } } @@ -14967,7 +15368,7 @@ "post" : { "operationId" : "post-api-agent-v2-query", "summary" : "POST /api/agent/v2/query", - "description" : "Execute a structured program and stream the results, with continuation-token pagination.\n\n Accepts either a program (same shape as /v2/construct-query) or a\n `continuation_token` from a previous response. Returns results with column\n metadata and an optional `continuation_token` for fetching the next page.", + "description" : "Execute a portable MBQL 5 representations JSON query and stream the results, with\n continuation-token pagination.\n\n Accepts either a JSON body (same shape as /v2/construct-query) or a `continuation_token`\n from a previous response. Returns results with column metadata and an optional\n `continuation_token` for fetching the next page.", "parameters" : [ ], "responses" : { "2XX" : { @@ -16740,6 +17141,26 @@ "type" : "string", "minLength" : 1 }, + "size" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "size_x" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "size_y" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "size_x", "size_y" ] + }, { + "type" : "null" + } ] + }, "parameters" : { "oneOf" : [ { "$ref" : "#/components/schemas/metabase.parameters.schema.parameters" @@ -18365,7 +18786,7 @@ "type" : "array", "items" : { "type" : "string", - "enum" : [ "dashboard", "table", "dataset", "no_models", "timeline", "snippet", "collection", "transform", "document", "pulse", "metric", "card" ] + "enum" : [ "dashboard", "table", "dataset", "no_models", "timeline", "snippet", "collection", "measure", "transform", "document", "pulse", "metric", "card" ] } }, { "type" : "null" @@ -18893,7 +19314,7 @@ "type" : "array", "items" : { "type" : "string", - "enum" : [ "dashboard", "table", "dataset", "no_models", "timeline", "snippet", "collection", "transform", "document", "pulse", "metric", "card" ] + "enum" : [ "dashboard", "table", "dataset", "no_models", "timeline", "snippet", "collection", "measure", "transform", "document", "pulse", "metric", "card" ] } }, { "type" : "null" @@ -20946,19 +21367,20 @@ "get" : { "operationId" : "get-api-database", "summary" : "GET /api/database", - "description" : "Fetch all `Databases`.\n\n * `include=tables` means we should hydrate the Tables belonging to each DB. Default: `false`.\n\n * `saved` means we should include the saved questions virtual database. Default: `false`.\n\n * `include_editable_data_model` will only include DBs for which the current user has data model editing\n permissions. (If `include=tables`, this also applies to the list of tables in each DB). Should only be used if\n Enterprise Edition code is available the advanced-permissions feature is enabled.\n\n * `exclude_uneditable_details` will only include DBs for which the current user can edit the DB details. Has no\n effect unless Enterprise Edition code is available and the advanced-permissions feature is enabled.\n\n * `include_only_uploadable` will only include DBs into which Metabase can insert new data.\n\n * `can-query` will only include DBs for which the current user has query permissions. Default: `false`.\n\n * `can-write-metadata` will only include DBs for which the current user has data model editing permissions\n for at least one table in the database. Default: `false`.\n\n Independently of these flags, the implementation of [[metabase.models.interface/to-json]] for `:model/Database` in\n [[metabase.warehouses.models.database]] uses the implementation of [[metabase.models.interface/can-write?]] for\n `:model/Database` in [[metabase.warehouses.models.database]] to exclude the `details` field, if the requesting user\n lacks permission to change the database details.", + "description" : "Fetch all `Databases`.\n\n * `include=tables` means we should hydrate the Tables belonging to each DB. Default: `false`.\n\n * `include=schemas` hydrates a `:schemas` list on each DB (only schemas with visible\n tables the current user can read), matching the per-DB `/api/database/:id/schemas`\n response. Lets clients avoid N round-trips when populating a database/schema picker.\n\n * `saved` means we should include the saved questions virtual database. Default: `false`.\n\n * `include_editable_data_model` will only include DBs for which the current user has data model editing\n permissions. (If `include=tables`, this also applies to the list of tables in each DB). Should only be used if\n Enterprise Edition code is available the advanced-permissions feature is enabled.\n\n * `exclude_uneditable_details` will only include DBs for which the current user can edit the DB details. Has no\n effect unless Enterprise Edition code is available and the advanced-permissions feature is enabled.\n\n * `include_only_uploadable` will only include DBs into which Metabase can insert new data.\n\n * `can-query` will only include DBs for which the current user has query permissions. Default: `false`.\n\n * `can-write-metadata` will only include DBs for which the current user has data model editing permissions\n for at least one table in the database. Default: `false`.\n\n Independently of these flags, the implementation of [[metabase.models.interface/to-json]] for `:model/Database` in\n [[metabase.warehouses.models.database]] uses the implementation of [[metabase.models.interface/can-write?]] for\n `:model/Database` in [[metabase.warehouses.models.database]] to exclude the `details` field, if the requesting user\n lacks permission to change the database details.", "parameters" : [ { "in" : "query", "name" : "include", "required" : false, "schema" : { "oneOf" : [ { - "const" : "tables" + "type" : "string", + "enum" : [ "tables", "schemas" ] }, { "type" : "null" } ] }, - "description" : "include must be either empty or the value 'tables'" + "description" : "include must be either empty, 'tables', or 'schemas'" }, { "in" : "query", "name" : "include_analytics", @@ -21168,94 +21590,6 @@ "tags" : [ "/api/database" ] } }, - "/api/database/field-values" : { - "get" : { - "operationId" : "get-api-database-field-values", - "summary" : "GET /api/database/field-values", - "description" : "Get sampled field values for every field in the instance, streamed as a single\n `{\"field_values\": [...]}` document. Each entry carries `field_id`, `values`,\n optional `human_readable_values`, and `has_more_values`.\n\n Only unconstrained (`:full`) FieldValues are included — sandboxed, impersonation, and\n linked-filter variants are user-specific and would bypass their own enforcement\n mechanisms in a bulk export. Pair with `GET /api/database/metadata` to resolve\n `field_id` to table and field names. Response is streamed for efficiency with large\n schemas.\n\n Admin-only: this endpoint exposes cached values computed over the unrestricted\n dataset, so it would leak data past sandbox / impersonation rules if served to\n regular users.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase.warehouses-rest.api.field-values-response" - } - } - } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/database" ] - } - }, - "/api/database/metadata" : { - "get" : { - "operationId" : "get-api-database-metadata", - "summary" : "GET /api/database/metadata", - "description" : "Get metadata (databases, tables, and fields) for all databases visible to the current user.\n Returns a flat structure with three arrays: databases, tables, and fields.\n Response is streamed for efficiency with large schemas.\n\n Requires `View data` → `Can view` and `Create queries` → `Query builder only` (or\n `Query builder and native`) permissions on each database and table.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase.warehouses-rest.api.databases-metadata-response" - } - } - } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/database" ] - }, - "post" : { - "operationId" : "post-api-database-metadata", - "summary" : "POST /api/database/metadata", - "description" : "Import database/table/field metadata previously exported from `GET /api/database/metadata`.\n\n Entities are matched by natural key — databases by `(name, engine)`, tables by\n `(database, schema, name)`, fields by `(table, parent-path, name)` — so the numeric ids\n in the payload are only used to link fields to their tables within the request.\n\n Tables and fields that don't exist on the target are created when their parent\n (database for tables; table for fields) is present on the target. Databases are\n not auto-created — missing databases are reported instead. Field `fk_target_field_id`\n is re-resolved through the natural-key lookup after all fields exist.\n\n For matched entities, only user-editable metadata is written: table `description`;\n field `description`, `semantic_type`, `coercion_strategy`, `effective_type`, and\n `fk_target_field_id`. For newly-created fields, `base_type` and `database_type` are\n also populated from the payload. Keys absent from the payload (including null values)\n are left untouched on matched entities.\n\n Processing is isolated per target database: each matched DB imports in its own\n transaction so a failure on one DB does not roll back the others. DBs whose\n transaction failed appear under `databases.failed` in the response along with\n the error message; every other DB's tables, fields, and same-DB `fk_target_field_id`\n references still commit. Cross-database `fk_target_field_id` references are\n resolved in a final pass after all per-DB transactions have committed.\n\n Returns counts of matched + created entities per type, a list of entities in the\n payload that could not be placed (their parent was missing on the target), and,\n when any DB failed, a `databases.failed` list naming each failed DB.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase.warehouses-rest.api.metadata-import-report" - } - } - } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase.warehouses-rest.api.databases-metadata-response" - } - } - } - }, - "tags" : [ "/api/database" ] - } - }, "/api/database/sample_database" : { "post" : { "operationId" : "post-api-database-sample_database", @@ -21489,6 +21823,15 @@ "type" : "null" } ] }, + "admin_details" : { + "oneOf" : [ { + "description" : "Value must be a map.", + "type" : "object", + "properties" : { } + }, { + "type" : "null" + } ] + }, "refingerprint" : { "oneOf" : [ { "type" : "boolean" @@ -21960,6 +22303,17 @@ "type" : "null" } ] } + }, { + "in" : "query", + "name" : "include_measures", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + } } ], "responses" : { "2XX" : { @@ -22043,6 +22397,17 @@ "type" : "null" } ] } + }, { + "in" : "query", + "name" : "include_measures", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + } } ], "responses" : { "2XX" : { @@ -22421,7 +22786,7 @@ "post" : { "operationId" : "post-api-dataset-native", "summary" : "POST /api/dataset/native", - "description" : "Fetch a native version of an MBQL query.", + "description" : "Fetch a native version of an MBQL query.\n\n Display path: workspace remapping is suppressed via\n [[ws.table-remapping/with-display-context]] so the user sees canonical-schema SQL\n in the 'Show me the SQL' panel. The query still executes against the workspace\n isolation schema at warehouse time (separate code path); this endpoint only\n affects what the user reads.", "parameters" : [ ], "responses" : { "2XX" : { @@ -23533,6 +23898,55 @@ "tags" : [ "/api/ee/action-v2" ] } }, + "/api/ee/advanced-config" : { + "post" : { + "operationId" : "post-api-ee-advanced-config", + "summary" : "POST /api/ee/advanced-config", + "description" : "Apply an uploaded `config.yml` to this instance. Runs the same per-section\n initializers (`settings`, `databases`, `users`, `api-keys`, `workspace`, ...)\n the boot-time loader runs. Superuser-only.\n\n Unlike the boot-time loader, `{{env VAR}}` templates are NOT expanded — the\n file's values are inserted verbatim, so an admin's upload can't read\n server-side environment variables it didn't intend to.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "null" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "multipart/form-data" : { + "schema" : { + "type" : "object", + "properties" : { + "config" : { + "type" : "object", + "properties" : { + "filename" : { + "type" : "string" + }, + "tempfile" : { } + }, + "required" : [ "filename", "tempfile" ] + } + }, + "required" : [ "config" ] + } + } + } + }, + "tags" : [ "/api/ee/advanced-config" ] + } + }, "/api/ee/advanced-permissions/application/graph" : { "get" : { "operationId" : "get-api-ee-advanced-permissions-application-graph", @@ -23694,6 +24108,9 @@ "schema" : { "type" : "object", "properties" : { + "advanced" : { + "type" : "boolean" + }, "permissions" : { "type" : "array", "items" : { @@ -23716,7 +24133,7 @@ } } }, - "required" : [ "permissions" ] + "required" : [ "permissions", "advanced" ] } } } @@ -23743,6 +24160,9 @@ "schema" : { "type" : "object", "properties" : { + "advanced" : { + "type" : "boolean" + }, "permissions" : { "type" : "array", "items" : { @@ -23765,7 +24185,7 @@ } } }, - "required" : [ "permissions" ] + "required" : [ "permissions", "advanced" ] } } } @@ -23813,6 +24233,112 @@ "tags" : [ "/api/ee/ai-controls/permissions" ] } }, + "/api/ee/ai-controls/permissions/advanced" : { + "post" : { + "operationId" : "post-api-ee-ai-controls-permissions-advanced", + "summary" : "POST /api/ee/ai-controls/permissions/advanced", + "description" : "Switch to advanced group-level permissions. Removes any custom permissions from the All Users group.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "advanced" : { + "type" : "boolean" + }, + "permissions" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "group_id" : { + "type" : "integer", + "minimum" : 1 + }, + "perm_type" : { + "type" : "string", + "enum" : [ "permission/metabot", "permission/metabot-nlq", "permission/metabot-other-tools", "permission/metabot-sql-generation" ] + }, + "perm_value" : { + "type" : "string", + "enum" : [ "yes", "no" ] + } + }, + "required" : [ "group_id", "perm_type", "perm_value" ] + } + } + }, + "required" : [ "permissions", "advanced" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/ai-controls/permissions" ] + }, + "delete" : { + "operationId" : "delete-api-ee-ai-controls-permissions-advanced", + "summary" : "DELETE /api/ee/ai-controls/permissions/advanced", + "description" : "Switch back to simple permissions. Removes any custom permissions from all specific groups, keeping only Admins and All Users.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "advanced" : { + "type" : "boolean" + }, + "permissions" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "group_id" : { + "type" : "integer", + "minimum" : 1 + }, + "perm_type" : { + "type" : "string", + "enum" : [ "permission/metabot", "permission/metabot-nlq", "permission/metabot-other-tools", "permission/metabot-sql-generation" ] + }, + "perm_value" : { + "type" : "string", + "enum" : [ "yes", "no" ] + } + }, + "required" : [ "group_id", "perm_type", "perm_value" ] + } + } + }, + "required" : [ "permissions", "advanced" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/ai-controls/permissions" ] + } + }, "/api/ee/ai-controls/usage/group" : { "get" : { "operationId" : "get-api-ee-ai-controls-usage-group", @@ -24647,12 +25173,2571 @@ "tags" : [ "/api/ee/content-translation" ] } }, + "/api/ee/custom-viz-plugin" : { + "post" : { + "operationId" : "post-api-ee-custom-viz-plugin", + "summary" : "POST /api/ee/custom-viz-plugin", + "description" : "Register a new custom visualization plugin from an uploaded tar.gz bundle.\n\n The archive must contain `metabase-plugin.json` at the root and\n `dist/index.js` for the JS bundle, plus any whitelisted assets under\n `dist/assets/`. The plugin's `identifier` is taken from the manifest's `name`\n field.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "updated_at" : { }, + "status" : { + "type" : "string", + "enum" : [ "active", "error" ] + }, + "error_message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "identifier" : { + "type" : "string", + "minLength" : 1 + }, + "display_name" : { + "type" : "string", + "minLength" : 1 + }, + "dev_only" : { + "type" : "boolean" + }, + "created_at" : { }, + "bundle_hash" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "manifest" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "metabase_version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "icon" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "display_name", "identifier", "status", "enabled", "dev_only", "created_at", "updated_at" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "multipart/form-data" : { + "schema" : { + "type" : "object", + "properties" : { + "file" : { + "type" : "object", + "properties" : { + "filename" : { + "type" : "string" + }, + "tempfile" : { } + }, + "required" : [ "filename", "tempfile" ] + } + }, + "required" : [ "file" ] + } + } + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + }, + "get" : { + "operationId" : "get-api-ee-custom-viz-plugin", + "summary" : "GET /api/ee/custom-viz-plugin", + "description" : "List all registered custom visualization plugins.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "updated_at" : { }, + "status" : { + "type" : "string", + "enum" : [ "active", "error" ] + }, + "error_message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "identifier" : { + "type" : "string", + "minLength" : 1 + }, + "display_name" : { + "type" : "string", + "minLength" : 1 + }, + "dev_only" : { + "type" : "boolean" + }, + "created_at" : { }, + "bundle_hash" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "manifest" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "metabase_version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "icon" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "display_name", "identifier", "status", "enabled", "dev_only", "created_at", "updated_at" ] + } + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/dev" : { + "post" : { + "operationId" : "post-api-ee-custom-viz-plugin-dev", + "summary" : "POST /api/ee/custom-viz-plugin/dev", + "description" : "Register a dev-only custom visualization plugin from a local dev server.\n No bundle upload is required — files are served from the dev server URL.\n Requires custom viz plugin dev mode to be enabled.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "updated_at" : { }, + "status" : { + "type" : "string", + "enum" : [ "active", "error" ] + }, + "error_message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "identifier" : { + "type" : "string", + "minLength" : 1 + }, + "display_name" : { + "type" : "string", + "minLength" : 1 + }, + "dev_only" : { + "type" : "boolean" + }, + "created_at" : { }, + "bundle_hash" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "manifest" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "metabase_version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "icon" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "display_name", "identifier", "status", "enabled", "dev_only", "created_at", "updated_at" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "dev_bundle_url" : { + "type" : "string", + "minLength" : 1 + }, + "identifier" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "dev_bundle_url" ] + } + } + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/list" : { + "get" : { + "operationId" : "get-api-ee-custom-viz-plugin-list", + "summary" : "GET /api/ee/custom-viz-plugin/list", + "description" : "List active and enabled custom visualization plugins. Available to any authenticated user.\n Plugins with incompatible Metabase version requirements are excluded.\n Dev-only plugins are excluded when dev mode is disabled.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "bundle_hash" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "bundle_url" : { + "type" : "string", + "minLength" : 1 + }, + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "display_name" : { + "type" : "string", + "minLength" : 1 + }, + "icon" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "identifier" : { + "type" : "string", + "minLength" : 1 + }, + "manifest" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "identifier", "display_name", "bundle_url" ] + } + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/sandbox-host" : { + "get" : { + "operationId" : "get-api-ee-custom-viz-plugin-sandbox-host", + "summary" : "GET /api/ee/custom-viz-plugin/sandbox-host", + "description" : "Serve a minimal HTML document used as the iframe `src` for the near-membrane custom-viz\n sandbox. The response carries a per-document `Content-Security-Policy` that permits\n `'unsafe-eval'` only inside this iframe, so the main Metabase document keeps its strict\n nonce-based CSP.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/{id}" : { + "delete" : { + "operationId" : "delete-api-ee-custom-viz-plugin-id", + "summary" : "DELETE /api/ee/custom-viz-plugin/{id}", + "description" : "Remove a custom visualization plugin and evict its on-disk cache.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "null" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + }, + "put" : { + "operationId" : "put-api-ee-custom-viz-plugin-id", + "summary" : "PUT /api/ee/custom-viz-plugin/{id}", + "description" : "Update a custom visualization plugin. Currently only `enabled` may be toggled.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "updated_at" : { }, + "status" : { + "type" : "string", + "enum" : [ "active", "error" ] + }, + "error_message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "identifier" : { + "type" : "string", + "minLength" : 1 + }, + "display_name" : { + "type" : "string", + "minLength" : 1 + }, + "dev_only" : { + "type" : "boolean" + }, + "created_at" : { }, + "bundle_hash" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "manifest" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "metabase_version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "icon" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "display_name", "identifier", "status", "enabled", "dev_only", "created_at", "updated_at" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "enabled" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + } + } + } + } + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/{id}/asset" : { + "get" : { + "operationId" : "get-api-ee-custom-viz-plugin-id-asset", + "summary" : "GET /api/ee/custom-viz-plugin/{id}/asset", + "description" : "Serve a static image asset from the plugin's bundle.\n The asset path is passed as a `path` query parameter (e.g. `?path=icon.svg`)\n and must match an entry in the manifest's `assets` whitelist.\n Only image files are served.\n In dev mode, proxies from the dev base URL if set.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + }, { + "in" : "query", + "name" : "path", + "required" : true, + "schema" : { + "type" : "string", + "minLength" : 1 + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/{id}/bundle" : { + "put" : { + "operationId" : "put-api-ee-custom-viz-plugin-id-bundle", + "summary" : "PUT /api/ee/custom-viz-plugin/{id}/bundle", + "description" : "Replace the bundle for an existing plugin. Accepts a multipart tar.gz upload in\n the same format as the `POST /` endpoint. The manifest's `name` field must\n match the plugin's existing `identifier`.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "updated_at" : { }, + "status" : { + "type" : "string", + "enum" : [ "active", "error" ] + }, + "error_message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "identifier" : { + "type" : "string", + "minLength" : 1 + }, + "display_name" : { + "type" : "string", + "minLength" : 1 + }, + "dev_only" : { + "type" : "boolean" + }, + "created_at" : { }, + "bundle_hash" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "manifest" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "metabase_version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "icon" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "display_name", "identifier", "status", "enabled", "dev_only", "created_at", "updated_at" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "multipart/form-data" : { + "schema" : { + "type" : "object", + "properties" : { + "file" : { + "type" : "object", + "properties" : { + "filename" : { + "type" : "string" + }, + "tempfile" : { } + }, + "required" : [ "filename", "tempfile" ] + } + }, + "required" : [ "file" ] + } + } + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + }, + "get" : { + "operationId" : "get-api-ee-custom-viz-plugin-id-bundle", + "summary" : "GET /api/ee/custom-viz-plugin/{id}/bundle", + "description" : "Serve the JS bundle for a plugin from the on-disk cache.\n Returns application/javascript with ETag and Cache-Control headers.\n In dev mode, proxies from `dev_bundle_url` if set.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/{id}/dev-sse" : { + "get" : { + "operationId" : "get-api-ee-custom-viz-plugin-id-dev-sse", + "summary" : "GET /api/ee/custom-viz-plugin/{id}/dev-sse", + "description" : "Proxy Server-Sent Events from the plugin's dev server.\n Connects to `{dev_bundle_url}/__sse` and forwards events to the browser.\n This avoids the need for a CSP exception for the dev server origin.\n Requires custom viz plugin dev mode to be enabled.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/{id}/dev-url" : { + "put" : { + "operationId" : "put-api-ee-custom-viz-plugin-id-dev-url", + "summary" : "PUT /api/ee/custom-viz-plugin/{id}/dev-url", + "description" : "Set or clear the dev base URL for a plugin (e.g. `http://localhost:5174`).\n The bundle is fetched from `{base}/index.js` and assets from `{base}/assets/{name}`.\n Persisted to the database so it survives server restarts.\n Requires custom viz plugin dev mode to be enabled.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "dev_bundle_url" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "dev_bundle_url" ] + } + } + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, + "/api/ee/custom-viz-plugin/{id}/refresh" : { + "post" : { + "operationId" : "post-api-ee-custom-viz-plugin-id-refresh", + "summary" : "POST /api/ee/custom-viz-plugin/{id}/refresh", + "description" : "Re-fetch the manifest from the dev server for a dev-only plugin. For uploaded\n plugins this is a no-op — to update an upload-backed plugin, PUT a new bundle\n to `/:id/bundle`.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "updated_at" : { }, + "status" : { + "type" : "string", + "enum" : [ "active", "error" ] + }, + "error_message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "identifier" : { + "type" : "string", + "minLength" : 1 + }, + "display_name" : { + "type" : "string", + "minLength" : 1 + }, + "dev_only" : { + "type" : "boolean" + }, + "created_at" : { }, + "bundle_hash" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "manifest" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "dev_bundle_url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "metabase_version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "icon" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "display_name", "identifier", "status", "enabled", "dev_only", "created_at", "updated_at" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/custom-viz-plugin" ] + } + }, "/api/ee/data-complexity-score/complexity" : { "get" : { - "operationId" : "get-api-ee-data-complexity-score-complexity", - "summary" : "GET /api/ee/data-complexity-score/complexity", - "description" : "Return the current Data Complexity Score for this instance.\n Superuser-only, expensive, and emits Snowplow events for benchmark consumers. Concurrent\n requests on the same JVM fast-fail with HTTP 409 — a scoring pass walks the full app-db\n catalog and one in-flight run per node is enough. The guard is per-JVM, so in a clustered\n deployment each node can still run one pass concurrently.", + "operationId" : "get-api-ee-data-complexity-score-complexity", + "summary" : "GET /api/ee/data-complexity-score/complexity", + "description" : "Return the most recently stored Data Complexity Score for this instance.\n Pass `force-recalculation=true` to recompute, persist, and return a fresh score.\n Superuser-only.", + "parameters" : [ { + "in" : "query", + "name" : "force-recalculation", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "library" : { + "$ref" : "#/components/schemas/metabase-enterprise.data-complexity-score.api.node" + }, + "meta" : { + "type" : "object", + "properties" : { + "calculated_at" : { }, + "embedding_model" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "model_name" : { + "type" : "string" + }, + "provider" : { + "type" : "string" + } + }, + "required" : [ "provider", "model_name" ] + }, { + "type" : "null" + } ] + }, + "format_version" : { + "type" : "integer", + "minimum" : 1 + }, + "formula_version" : { + "type" : "integer", + "minimum" : 1 + }, + "synonym_threshold" : { + "type" : "number" + } + }, + "required" : [ "formula_version", "format_version", "synonym_threshold" ] + }, + "metabot" : { + "$ref" : "#/components/schemas/metabase-enterprise.data-complexity-score.api.node" + }, + "universe" : { + "$ref" : "#/components/schemas/metabase-enterprise.data-complexity-score.api.node" + } + }, + "required" : [ "library", "universe", "metabot", "meta" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/data-complexity-score" ] + } + }, + "/api/ee/data-studio/table/publish-tables" : { + "post" : { + "operationId" : "post-api-ee-data-studio-table-publish-tables", + "summary" : "POST /api/ee/data-studio/table/publish-tables", + "description" : "Set collection for each of selected tables and all upstream dependencies recursively.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.data-studio.api.table.publish-tables-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.data-studio.api.table.publish-table-selectors" + } + } + } + }, + "tags" : [ "/api/ee/data-studio/table" ] + } + }, + "/api/ee/data-studio/table/unpublish-tables" : { + "post" : { + "operationId" : "post-api-ee-data-studio-table-unpublish-tables", + "summary" : "POST /api/ee/data-studio/table/unpublish-tables", + "description" : "Unset collection for each of selected tables and all downstream dependents recursively.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "null" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.data-studio.api.table.table-selectors" + } + } + } + }, + "tags" : [ "/api/ee/data-studio/table" ] + } + }, + "/api/ee/database-replication/connection/{database-id}" : { + "post" : { + "operationId" : "post-api-ee-database-replication-connection-database-id", + "summary" : "POST /api/ee/database-replication/connection/{database-id}", + "description" : "Create a new PG replication connection for the specified database.", + "parameters" : [ { + "in" : "path", + "name" : "database-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "replicationSchemaFilters" : { + "type" : "object", + "properties" : { + "schema-filters-patterns" : { + "type" : "string" + }, + "schema-filters-type" : { + "type" : "string", + "enum" : [ "inclusion", "exclusion", "all" ] + } + }, + "required" : [ "schema-filters-type", "schema-filters-patterns" ] + } + } + } + } + } + }, + "tags" : [ "/api/ee/database-replication" ] + }, + "delete" : { + "operationId" : "delete-api-ee-database-replication-connection-database-id", + "summary" : "DELETE /api/ee/database-replication/connection/{database-id}", + "description" : "Delete PG replication connection for the specified database.", + "parameters" : [ { + "in" : "path", + "name" : "database-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/database-replication" ] + } + }, + "/api/ee/database-replication/connection/{database-id}/preview" : { + "post" : { + "operationId" : "post-api-ee-database-replication-connection-database-id-preview", + "summary" : "POST /api/ee/database-replication/connection/{database-id}/preview", + "description" : "Return info about pg-replication connection that is about to be created.", + "parameters" : [ { + "in" : "path", + "name" : "database-id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "replicationSchemaFilters" : { + "type" : "object", + "properties" : { + "schema-filters-patterns" : { + "type" : "string" + }, + "schema-filters-type" : { + "type" : "string", + "enum" : [ "inclusion", "exclusion", "all" ] + } + }, + "required" : [ "schema-filters-type", "schema-filters-patterns" ] + } + } + } + } + } + }, + "tags" : [ "/api/ee/database-replication" ] + } + }, + "/api/ee/database-routing/destination-database" : { + "post" : { + "operationId" : "post-api-ee-database-routing-destination-database", + "summary" : "POST /api/ee/database-routing/destination-database", + "description" : "Create new Destination Databases.\n\n Note that unlike the normal `POST /api/database` endpoint, this endpoint does not test that the database is actually\n reachable before adding it — destination details are not required to be valid at creation time, and an\n unreachable destination is fine.", + "parameters" : [ { + "in" : "query", + "name" : "check_connection_details", + "required" : false, + "schema" : { + "type" : "boolean" + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "destinations" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "details" : { + "description" : "Value must be a map.", + "type" : "object", + "properties" : { } + }, + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "name", "details" ] + } + }, + "router_database_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "router_database_id", "destinations" ] + } + } + } + }, + "tags" : [ "/api/ee/database-routing" ] + } + }, + "/api/ee/database-routing/router-database/{id}" : { + "put" : { + "operationId" : "put-api-ee-database-routing-router-database-id", + "summary" : "PUT /api/ee/database-routing/router-database/{id}", + "description" : "Updates an existing Database with the `user_attribute` to route on. Will either:\n - turn an existing Database into a Router database\n - change the `user_attribute` used to route for an existing Router database, or\n - turn a Router database into a regular Database\n depending on the value of `user_attribute`", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "user_attribute" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + } + } + } + } + } + }, + "tags" : [ "/api/ee/database-routing" ] + } + }, + "/api/ee/dependencies/backfill-status" : { + "get" : { + "operationId" : "get-api-ee-dependencies-backfill-status", + "summary" : "GET /api/ee/dependencies/backfill-status", + "description" : "Returns whether the dependency backfill has pending work.\n `complete` is true when there are no stale or outdated entities awaiting processing.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "complete" : { + "type" : "boolean" + } + }, + "required" : [ "complete" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/check-card" : { + "post" : { + "operationId" : "post-api-ee-dependencies-check-card", + "summary" : "POST /api/ee/dependencies/check-card", + "description" : "Check a proposed edit to a card, and return the card IDs for those cards this edit will break.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.broken-cards-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.card-body" + } + } + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/check-snippet" : { + "post" : { + "operationId" : "post-api-ee-dependencies-check-snippet", + "summary" : "POST /api/ee/dependencies/check-snippet", + "description" : "Check a proposed edit to a native snippet, and return the cards, etc. which will be broken.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.broken-cards-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "content" : { + "type" : "string" + }, + "id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.snippet" + }, + "name" : { + "description" : "snippet names cannot include '}' or start with spaces" + } + }, + "required" : [ "id" ] + } + } + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/check-transform" : { + "post" : { + "operationId" : "post-api-ee-dependencies-check-transform", + "summary" : "POST /api/ee/dependencies/check-transform", + "description" : "Check a proposed edit to a transform, and return the card, transform, etc. IDs for things that will break.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.broken-cards-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.transform-body" + } + } + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/graph" : { + "get" : { + "operationId" : "get-api-ee-dependencies-graph", + "summary" : "GET /api/ee/dependencies/graph", + "description" : "This endpoint takes an :id and a supported entity :type, and returns a graph of all its upstream dependencies.\n The graph is represented by a list of :nodes and a list of :edges. Each node has an :id, :type, :data (which\n depends on the node type), and a map of :dependent_counts per entity type. Each edge is a :model/Dependency.\n\n Optional :archived parameter controls whether entities in archived collections are included:\n - false (default): Excludes entities in archived collections\n - true: Includes entities in archived collections", + "parameters" : [ { + "in" : "query", + "name" : "id", + "required" : false, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + }, { + "in" : "query", + "name" : "type", + "required" : false, + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + } + }, { + "in" : "query", + "name" : "archived", + "required" : false, + "schema" : { + "type" : "boolean" + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.graph-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/graph/breaking" : { + "get" : { + "operationId" : "get-api-ee-dependencies-graph-breaking", + "summary" : "GET /api/ee/dependencies/graph/breaking", + "description" : "Returns a list of entities that are breaking other entities (sources of errors).\n These are tables or cards that other entities depend on, where those dependents\n have validation errors traced back to this source entity.\n\n Accepts optional parameters for filtering:\n - `types`: List of source entity types - only `:card` or `:table` (default: both)\n - `card-types`: List of card types to include when filtering cards (e.g., `[:question :model :metric]`)\n - `query`: Search string to filter by name or location\n - `archived`: Controls whether archived entities are included\n - `include-personal-collections`: Controls whether items in personal collections are included (default: false)\n - `sort-column`: Sort column - `:name`, `:location`, `:dependents-errors`, or `:dependents-with-errors` (default: `:name`)\n - `sort-direction`: Sort direction - `:asc` or `:desc` (default: `:asc`)\n - `offset`: Default 0\n - `limit`: Default 50\n\n Returns a map with:\n - `data`: List of breaking source entities\n - `total`: Total count of matched items\n - `offset`: Applied offset\n - `limit`: Applied limit", + "parameters" : [ { + "in" : "query", + "name" : "types", + "required" : false, + "schema" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + }, { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + } + } ] + } + }, { + "in" : "query", + "name" : "card-types", + "required" : false, + "schema" : { + "anyOf" : [ { + "type" : "string", + "enum" : [ "question", "metric", "model" ] + }, { + "type" : "array", + "items" : { + "type" : "string", + "enum" : [ "question", "metric", "model" ] + } + } ] + } + }, { + "in" : "query", + "name" : "query", + "required" : false, + "schema" : { + "type" : "string" + } + }, { + "in" : "query", + "name" : "archived", + "required" : false, + "schema" : { + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "include-personal-collections", + "required" : false, + "schema" : { + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "sort-column", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ "dependents-with-errors", "dependents-errors", "name", "location" ] + } + }, { + "in" : "query", + "name" : "sort-direction", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ "desc", "asc" ] + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "data" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.entity" + } + }, + "limit" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "offset" : { + "type" : "integer", + "minimum" : 0 + }, + "total" : { + "type" : "integer", + "minimum" : 0 + } + }, + "required" : [ "data", "total", "offset", "limit" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/graph/broken" : { + "get" : { + "operationId" : "get-api-ee-dependencies-graph-broken", + "summary" : "GET /api/ee/dependencies/graph/broken", + "description" : "Returns the broken dependents for a specific source entity.\n These are entities that have validation errors traced back to the specified source.\n\n Required parameters:\n - `id`: The ID of the source entity\n - `type`: The type of the source entity (card, table)\n\n Optional parameters:\n - `dependent-types`: Dependency types to filter by. Can be single value or array.\n - `dependent-card-types`: Card types to filter by when dependent-types includes :card.\n - `include-personal-collections`: Include items in personal collections (default: false)\n - `sort-column`: Column to sort by - name, location, or view-count (default: name)\n - `sort-direction`: Sort direction - asc or desc (default: asc)", + "parameters" : [ { + "in" : "query", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + }, { + "in" : "query", + "name" : "type", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + } + }, { + "in" : "query", + "name" : "dependent-types", + "required" : false, + "schema" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + }, { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + } + } ] + } + }, { + "in" : "query", + "name" : "dependent-card-types", + "required" : false, + "schema" : { + "anyOf" : [ { + "type" : "string", + "enum" : [ "question", "metric", "model" ] + }, { + "type" : "array", + "items" : { + "type" : "string", + "enum" : [ "question", "metric", "model" ] + } + } ] + } + }, { + "in" : "query", + "name" : "include-personal-collections", + "required" : false, + "schema" : { + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "sort-column", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ "name", "view-count", "location" ] + } + }, { + "in" : "query", + "name" : "sort-direction", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ "desc", "asc" ] + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.broken-dependent-entity" + } + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/graph/dependents" : { + "get" : { + "operationId" : "get-api-ee-dependencies-graph-dependents", + "summary" : "GET /api/ee/dependencies/graph/dependents", + "description" : "Returns a list of dependents for the specified entity.\n\n Required parameters:\n - `id`: The ID of the entity\n - `type`: The type of the entity (card, table, dashboard, etc.)\n\n Optional parameters:\n - `dependent-types`: Dependency types to filter by. Can be single value or array.\n If not provided, returns all types. Example: ?dependent-types=card&dependent-types=dashboard\n - `dependent-card-types`: Card types to filter by when dependent-types includes :card.\n Ignored if dependent-types doesn't include :card. Example: ?dependent-card-types=question&dependent-card-types=model\n - `archived`: Include entities in archived collections (default: false)\n - `broken`: Return only broken entities (default: false)\n - `query`: Search string to filter results by name or location (case-insensitive)\n - `include-personal-collections`: Include items in personal collections (default: false)\n - `sort-column`: Column to sort by - name, location, or view-count (default: name)\n - `sort-direction`: Sort direction - asc or desc (default: asc)", + "parameters" : [ { + "in" : "query", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + }, { + "in" : "query", + "name" : "type", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + } + }, { + "in" : "query", + "name" : "dependent-types", + "required" : false, + "schema" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + }, { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + } + } ] + } + }, { + "in" : "query", + "name" : "dependent-card-types", + "required" : false, + "schema" : { + "anyOf" : [ { + "type" : "string", + "enum" : [ "question", "metric", "model" ] + }, { + "type" : "array", + "items" : { + "type" : "string", + "enum" : [ "question", "metric", "model" ] + } + } ] + } + }, { + "in" : "query", + "name" : "archived", + "required" : false, + "schema" : { + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "broken", + "required" : false, + "schema" : { + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "query", + "required" : false, + "schema" : { + "type" : "string" + } + }, { + "in" : "query", + "name" : "include-personal-collections", + "required" : false, + "schema" : { + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "sort-column", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ "name", "view-count", "location" ] + } + }, { + "in" : "query", + "name" : "sort-direction", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ "desc", "asc" ] + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.entity" + } + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/graph/unreferenced" : { + "get" : { + "operationId" : "get-api-ee-dependencies-graph-unreferenced", + "summary" : "GET /api/ee/dependencies/graph/unreferenced", + "description" : "Returns a list of all unreferenced items in the instance.\n An unreferenced item is one that is not a dependency of any other item.\n\n Accepts optional parameters for filtering:\n - `types`: List of entity types to include (e.g., [:card :transform :snippet :dashboard])\n - `card-types`: List of card types to include when filtering cards (e.g., [:question :model :metric])\n - `query`: Search string to filter by name or location\n - `archived`: Controls whether archived entities are included\n - `include-personal-collections`: Controls whether items in personal collections are included (default: false)\n - `sort-column`: Sort column - `:name`, `:location`, `:dependents-errors`, or `:dependents-with-errors` (default: `:name`)\n - `sort-direction`: Sort direction - `:asc` or `:desc` (default: `:asc`)\n - `offset`: Default 0\n - `limit`: Default 50\n\n Returns a map with:\n - `data`: List of unreferenced items, each with `:id`, `:type`, and `:data` fields\n - `total`: Total count of matched items\n - `offset`: Applied offset\n - `limit`: Applied limit", + "parameters" : [ { + "in" : "query", + "name" : "types", + "required" : false, + "schema" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + }, { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" + } + } ] + } + }, { + "in" : "query", + "name" : "card-types", + "required" : false, + "schema" : { + "anyOf" : [ { + "type" : "string", + "enum" : [ "question", "metric", "model" ] + }, { + "type" : "array", + "items" : { + "type" : "string", + "enum" : [ "question", "metric", "model" ] + } + } ] + } + }, { + "in" : "query", + "name" : "query", + "required" : false, + "schema" : { + "type" : "string" + } + }, { + "in" : "query", + "name" : "archived", + "required" : false, + "schema" : { + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "include-personal-collections", + "required" : false, + "schema" : { + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "sort-column", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ "dependents-with-errors", "dependents-errors", "name", "location" ] + } + }, { + "in" : "query", + "name" : "sort-direction", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ "desc", "asc" ] + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "data" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.entity" + } + }, + "limit" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "offset" : { + "type" : "integer", + "minimum" : 0 + }, + "total" : { + "type" : "integer", + "minimum" : 0 + } + }, + "required" : [ "data", "total", "offset", "limit" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/email/override" : { + "put" : { + "operationId" : "put-api-ee-email-override", + "summary" : "PUT /api/ee/email/override", + "description" : "Update multiple cloud email Settings. You must be a superuser or have `setting` permission to do this.\n Calling this automatically sets `cloud-smtp-enabled` to true if the settings are valid.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "email-smtp-host-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-password-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-port-override" : { + "anyOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + }, + "email-smtp-security-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email-smtp-username-override" : { + "anyOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + } + } + } + } + }, + "tags" : [ "/api/ee/email" ] + }, + "delete" : { + "operationId" : "delete-api-ee-email-override", + "summary" : "DELETE /api/ee/email/override", + "description" : "Clear all cloud email related settings. You must be a superuser or have `setting` permission to do this.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/email" ] + } + }, + "/api/ee/embedding-hub/checklist" : { + "get" : { + "operationId" : "get-api-ee-embedding-hub-checklist", + "summary" : "GET /api/ee/embedding-hub/checklist", + "description" : "Get the embedding hub checklist status, indicating which setup steps have been completed.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "checklist" : { + "type" : "object", + "properties" : { + "enable-tenants" : { + "type" : "boolean" + }, + "create-models" : { + "type" : "boolean" + }, + "sso-configured" : { + "type" : "boolean" + }, + "configure-row-column-security" : { + "type" : "boolean" + }, + "create-test-embed" : { + "type" : "boolean" + }, + "data-permissions-and-enable-tenants" : { + "type" : "boolean" + }, + "embed-production" : { + "type" : "boolean" + }, + "create-dashboard" : { + "type" : "boolean" + }, + "move-dashboard-to-shared" : { + "type" : "boolean" + }, + "setup-data-segregation-strategy" : { + "type" : "boolean" + }, + "create-tenants" : { + "type" : "boolean" + }, + "add-data" : { + "type" : "boolean" + }, + "sso-auth-manual-tested" : { + "type" : "boolean" + } + }, + "required" : [ "add-data", "create-dashboard", "create-models", "configure-row-column-security", "create-test-embed", "embed-production", "sso-configured", "data-permissions-and-enable-tenants", "enable-tenants", "move-dashboard-to-shared", "create-tenants", "setup-data-segregation-strategy", "sso-auth-manual-tested" ], + "additionalProperties" : false + }, + "data-isolation-strategy" : { + "oneOf" : [ { + "type" : "string", + "enum" : [ "row-column-level-security", "connection-impersonation", "database-routing" ] + }, { + "type" : "null" + } ] + } + }, + "required" : [ "checklist", "data-isolation-strategy" ], + "additionalProperties" : false + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/embedding-hub" ] + } + }, + "/api/ee/erd" : { + "get" : { + "operationId" : "get-api-ee-erd", + "summary" : "GET /api/ee/erd", + "description" : "Return an Entity Relationship Diagram (ERD) for tables and their FK relationships.\n When `table-ids` is provided, those tables are the focal points (and must belong to `database-id`).", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.erd.impl.erd-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/erd" ] + } + }, + "/api/ee/gsheets/connection" : { + "post" : { + "operationId" : "post-api-ee-gsheets-connection", + "summary" : "POST /api/ee/gsheets/connection", + "description" : "Hook up a new google drive folder or sheet that will be watched and have its content ETL'd into Metabase.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/gsheets.response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "url" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "url" ] + } + } + } + }, + "tags" : [ "/api/ee/gsheets" ] + }, + "get" : { + "operationId" : "get-api-ee-gsheets-connection", + "summary" : "GET /api/ee/gsheets/connection", + "description" : "Check the status of a connection. This endpoint gets polled by FE to determine when to\n stop showing the setup widget.\n\n Returns the gsheets shape, with the attached datawarehouse db id at `:db_id`.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/gsheets.response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/gsheets" ] + }, + "delete" : { + "operationId" : "delete-api-ee-gsheets-connection", + "summary" : "DELETE /api/ee/gsheets/connection", + "description" : "Disconnect the google service account. There is only one (or zero) at the time of writing.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/gsheets" ] + } + }, + "/api/ee/gsheets/connection/sync" : { + "post" : { + "operationId" : "post-api-ee-gsheets-connection-sync", + "summary" : "POST /api/ee/gsheets/connection/sync", + "description" : "Force a sync of the connection now.\n\n Returns the gsheets shape, with the attached datawarehouse db id at `:db_id`.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/gsheets" ] + } + }, + "/api/ee/gsheets/service-account" : { + "get" : { + "operationId" : "get-api-ee-gsheets-service-account", + "summary" : "GET /api/ee/gsheets/service-account", + "description" : "Checks to see if service-account is setup or not, delegates to HM only if we haven't set it from a metabase cluster\n before.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "email" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "email" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/gsheets" ] + } + }, + "/api/ee/library" : { + "post" : { + "operationId" : "post-api-ee-library", + "summary" : "POST /api/ee/library", + "description" : "Creates the Library if it doesn't exist. Returns the created collection.\n\n Requires data analyst or superuser permissions.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/library" ] + }, + "get" : { + "operationId" : "get-api-ee-library", + "summary" : "GET /api/ee/library", + "description" : "Get the Library. If no library exists, it doesn't fail but returns an empty response", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/metabase.collections.schema.CollectionItem" + }, { + "type" : "object", + "properties" : { + "data" : { + "type" : "null" + } + }, + "required" : [ "data" ] + } ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/library" ] + } + }, + "/api/ee/library/tree" : { + "get" : { + "operationId" : "get-api-ee-library-tree", + "summary" : "GET /api/ee/library/tree", + "description" : "This matches /api/collection/tree but only returns the library collection.", "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/library" ] + } + }, + "/api/ee/logs/query_execution/{yyyy-mm}" : { + "get" : { + "operationId" : "get-api-ee-logs-query_execution-yyyy-mm", + "summary" : "GET /api/ee/logs/query_execution/{yyyy-mm}", + "description" : "Fetch rows for the month specified by `:yyyy-mm` from the query_execution logs table.\n Must be a superuser.", + "parameters" : [ { + "in" : "path", + "name" : "yyyy-mm", + "required" : true, + "schema" : { + "type" : "string", + "pattern" : "\\d{4}-\\d{2}" + }, + "description" : "Must be a string like 2020-04 or 2222-11." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/logs" ] + } + }, + "/api/ee/metabot-analytics/conversations" : { + "get" : { + "operationId" : "get-api-ee-metabot-analytics-conversations", + "summary" : "GET /api/ee/metabot-analytics/conversations", + "description" : "Return paginated list of AI conversations with summary statistics.", + "parameters" : [ { + "in" : "query", + "name" : "sort_by", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "string", + "enum" : [ "created_at", "message_count", "total_tokens", "user", "profile_id", "ip_address" ] + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "sort_dir", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "string", + "enum" : [ "asc", "desc" ] + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "user_id", + "required" : false, + "schema" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "group_id", + "required" : false, + "schema" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "tenant_id", + "required" : false, + "schema" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "date", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + } ], "responses" : { "2XX" : { "description" : "Successful response", @@ -24661,562 +27746,160 @@ "schema" : { "type" : "object", "properties" : { - "library" : { - "type" : "object", - "properties" : { - "components" : { - "type" : "object", - "properties" : { - "entity-count" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "field-count" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "name-collisions" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "repeated-measures" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } + "data" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "sanitized_user_agent" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "embedding_path" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "user" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "email" : { + "type" : "string" }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { + "first_name" : { + "oneOf" : [ { "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { + }, { "type" : "null" - } + } ] }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "synonym-pairs" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { + "last_name" : { + "oneOf" : [ { "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { + }, { "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - } + } ] + } + }, + "required" : [ "id", "email", "first_name", "last_name" ] + }, { + "type" : "null" + } ] }, - "required" : [ "entity-count", "name-collisions", "synonym-pairs", "field-count", "repeated-measures" ] - }, - "total" : { - "oneOf" : [ { + "embedding_hostname" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "summary" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "message_count" : { + "description" : "value must be an integer greater or equal to than zero.", "type" : "integer", "minimum" : 0 - }, { - "type" : "null" - } ] - } - }, - "required" : [ "total", "components" ] - }, - "meta" : { - "type" : "object", - "properties" : { - "embedding-model" : { - "oneOf" : [ { - "type" : "object", - "properties" : { - "model-name" : { - "type" : "string" - }, - "provider" : { - "type" : "string" - } - }, - "required" : [ "provider", "model-name" ] - }, { - "type" : "null" - } ] - }, - "formula-version" : { - "type" : "integer", - "minimum" : 1 - }, - "synonym-threshold" : { - "type" : "number" - } - }, - "required" : [ "formula-version", "synonym-threshold" ] - }, - "metabot" : { - "type" : "object", - "properties" : { - "components" : { - "type" : "object", - "properties" : { - "entity-count" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "field-count" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "name-collisions" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "repeated-measures" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "synonym-pairs" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - } }, - "required" : [ "entity-count", "name-collisions", "synonym-pairs", "field-count", "repeated-measures" ] - }, - "total" : { - "oneOf" : [ { + "user_message_count" : { + "description" : "value must be an integer greater or equal to than zero.", "type" : "integer", "minimum" : 0 - }, { - "type" : "null" - } ] - } - }, - "required" : [ "total", "components" ] - }, - "universe" : { - "type" : "object", - "properties" : { - "components" : { - "type" : "object", - "properties" : { - "entity-count" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "field-count" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "name-collisions" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "repeated-measures" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - }, - "synonym-pairs" : { - "anyOf" : [ { - "type" : "object", - "properties" : { - "measurement" : { - "type" : "number" - }, - "score" : { - "type" : "integer", - "minimum" : 0 - } - }, - "required" : [ "measurement", "score" ], - "additionalProperties" : false - }, { - "type" : "object", - "properties" : { - "error" : { - "type" : "string" - }, - "measurement" : { - "type" : "null" - }, - "score" : { - "type" : "null" - } - }, - "required" : [ "measurement", "score", "error" ], - "additionalProperties" : false - } ] - } }, - "required" : [ "entity-count", "name-collisions", "synonym-pairs", "field-count", "repeated-measures" ] - }, - "total" : { - "oneOf" : [ { + "profile_id" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "last_message_at" : { + "oneOf" : [ { + "type" : "string", + "format" : "date-time" + }, { + "type" : "null" + } ] + }, + "created_at" : { + "type" : "string", + "format" : "date-time" + }, + "ip_address" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "search_count" : { + "description" : "value must be an integer greater or equal to than zero.", "type" : "integer", "minimum" : 0 - }, { - "type" : "null" - } ] - } - }, - "required" : [ "total", "components" ] + }, + "assistant_message_count" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "total_tokens" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "query_count" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "user_agent" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "conversation_id", "created_at", "summary", "message_count", "user_message_count", "assistant_message_count", "total_tokens", "last_message_at", "profile_id", "search_count", "query_count", "ip_address", "embedding_hostname", "embedding_path", "user_agent", "sanitized_user_agent", "user" ] + } + }, + "limit" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "offset" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "total" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 } }, - "required" : [ "library", "universe", "metabot", "meta" ] + "required" : [ "data", "total", "limit", "offset" ] } } } @@ -25228,22 +27911,319 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/data-complexity-score" ] + "tags" : [ "/api/ee/metabot-analytics" ] } }, - "/api/ee/data-studio/table/publish-tables" : { - "post" : { - "operationId" : "post-api-ee-data-studio-table-publish-tables", - "summary" : "POST /api/ee/data-studio/table/publish-tables", - "description" : "Set collection for each of selected tables and all upstream dependencies recursively.", - "parameters" : [ ], + "/api/ee/metabot-analytics/conversations/{id}" : { + "get" : { + "operationId" : "get-api-ee-metabot-analytics-conversations-id", + "summary" : "GET /api/ee/metabot-analytics/conversations/{id}", + "description" : "Return full details for a specific conversation including all messages.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "description" : "value must be a valid UUID." + } ], "responses" : { "2XX" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.data-studio.api.table.publish-tables-response" + "type" : "object", + "properties" : { + "queries" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "tables" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "mbql" : { + "oneOf" : [ { + "type" : "object", + "properties" : { } + }, { + "type" : "null" + } ] + }, + "database_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "query_id" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "query_type" : { + "type" : "string", + "enum" : [ "sql", "notebook" ] + }, + "display" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "tool" : { + "type" : "string", + "enum" : [ "construct_notebook_query", "create_sql_query", "edit_sql_query", "replace_sql_query" ] + }, + "call_id" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "sql" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "message_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "tool", "call_id", "message_id", "query_id", "query_type", "sql", "mbql", "display", "database_id", "tables" ] + } + }, + "sanitized_user_agent" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "embedding_path" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "slack_permalink" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "user" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "email" : { + "type" : "string" + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "email", "first_name", "last_name" ] + }, { + "type" : "null" + } ] + }, + "embedding_hostname" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "summary" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "feedback" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "user_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "positive" : { + "type" : "boolean" + }, + "external_id" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "user" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "email" : { + "type" : "string" + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "email", "first_name", "last_name" ] + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "updated_at" : { + "type" : "string", + "format" : "date-time" + }, + "issue_type" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "created_at" : { + "type" : "string", + "format" : "date-time" + }, + "freeform_feedback" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "message_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "id", "message_id", "user_id", "external_id", "positive", "issue_type", "freeform_feedback", "created_at", "updated_at" ] + } + }, + "message_count" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "profile_id" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "created_at" : { + "type" : "string", + "format" : "date-time" + }, + "ip_address" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "search_count" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "total_tokens" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "query_count" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "user_agent" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "chat_messages" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { } + } + } + }, + "required" : [ "conversation_id", "created_at", "summary", "user", "message_count", "total_tokens", "profile_id", "slack_permalink", "chat_messages", "queries", "search_count", "query_count", "ip_address", "embedding_hostname", "embedding_path", "user_agent", "sanitized_user_agent", "feedback" ] } } } @@ -25255,23 +28235,14 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.data-studio.api.table.table-selectors" - } - } - } - }, - "tags" : [ "/api/ee/data-studio/table" ] + "tags" : [ "/api/ee/metabot-analytics" ] } }, - "/api/ee/data-studio/table/unpublish-tables" : { - "post" : { - "operationId" : "post-api-ee-data-studio-table-unpublish-tables", - "summary" : "POST /api/ee/data-studio/table/unpublish-tables", - "description" : "Unset collection for each of selected tables and all downstream dependents recursively.", + "/api/ee/metabot/usage" : { + "get" : { + "operationId" : "get-api-ee-metabot-usage", + "summary" : "GET /api/ee/metabot/usage", + "description" : "Fetch current Metabot token usage for the current billing period.", "parameters" : [ ], "responses" : { "2XX" : { @@ -25279,7 +28250,31 @@ "content" : { "application/json" : { "schema" : { - "type" : "null" + "type" : "object", + "properties" : { + "is_locked" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + }, + "tokens" : { + "oneOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + }, + "updated_at" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "is_locked", "tokens", "updated_at" ] } } } @@ -25291,116 +28286,135 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.data-studio.api.table.table-selectors" - } - } - } - }, - "tags" : [ "/api/ee/data-studio/table" ] + "tags" : [ "/api/ee/metabot" ] } }, - "/api/ee/database-replication/connection/{database-id}" : { - "post" : { - "operationId" : "post-api-ee-database-replication-connection-database-id", - "summary" : "POST /api/ee/database-replication/connection/{database-id}", - "description" : "Create a new PG replication connection for the specified database.", + "/api/ee/notifications" : { + "get" : { + "operationId" : "get-api-ee-notifications", + "summary" : "GET /api/ee/notifications", + "description" : "List card-type notifications (alerts) for admin management. Supports pagination (`limit` +\n `offset` query params — handled by the offset-paging middleware), filtering, and sorting.\n\n `last_send_status` filter operates on the latest channel-send task_history row for the\n notification's card (`successful` = latest channel-send succeeded; `failing` = latest\n channel-send failed). The Failing tab uses `?last_send_status=failing`.\n\n `creatorless=true` selects notifications with no creator or a deactivated creator (the Ownerless\n tab). `creatorless=false` selects the inverse.\n\n `channel` accepts a single string or a repeated query param for multi-select (OR logic).", "parameters" : [ { - "in" : "path", - "name" : "database-id", - "required" : true, + "in" : "query", + "name" : "active", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "creator_id", + "required" : false, "schema" : { "type" : "integer", "minimum" : 1 }, "description" : "value must be an integer greater than zero." - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" + }, { + "in" : "query", + "name" : "creator_active", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] } - }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "replicationSchemaFilters" : { - "type" : "object", - "properties" : { - "schema-filters-patterns" : { - "type" : "string" - }, - "schema-filters-type" : { - "type" : "string", - "enum" : [ "inclusion", "exclusion", "all" ] - } - }, - "required" : [ "schema-filters-type", "schema-filters-patterns" ] - } - } - } - } + }, { + "in" : "query", + "name" : "creatorless", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] } - }, - "tags" : [ "/api/ee/database-replication" ] - }, - "delete" : { - "operationId" : "delete-api-ee-database-replication-connection-database-id", - "summary" : "DELETE /api/ee/database-replication/connection/{database-id}", - "description" : "Delete PG replication connection for the specified database.", - "parameters" : [ { - "in" : "path", - "name" : "database-id", - "required" : true, + }, { + "in" : "query", + "name" : "card_id", + "required" : false, "schema" : { "type" : "integer", "minimum" : 1 }, "description" : "value must be an integer greater than zero." - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" + }, { + "in" : "query", + "name" : "recipient_email", + "required" : false, + "schema" : { + "type" : "string", + "minLength" : 1 } - }, - "tags" : [ "/api/ee/database-replication" ] - } - }, - "/api/ee/database-replication/connection/{database-id}/preview" : { - "post" : { - "operationId" : "post-api-ee-database-replication-connection-database-id-preview", - "summary" : "POST /api/ee/database-replication/connection/{database-id}/preview", - "description" : "Return info about pg-replication connection that is about to be created.", - "parameters" : [ { - "in" : "path", - "name" : "database-id", + }, { + "in" : "query", + "name" : "channel", + "required" : false, + "schema" : { + "oneOf" : [ { + "anyOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } ] + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "last_send_status", + "required" : false, + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.run-status" + } + }, { + "in" : "query", + "name" : "query", + "required" : false, + "schema" : { + "type" : "string", + "minLength" : 1 + } + }, { + "in" : "query", + "name" : "sort_column", "required" : true, "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." + "default" : "last_send", + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.sort-column" + } + }, { + "in" : "query", + "name" : "sort_direction", + "required" : true, + "schema" : { + "default" : "desc", + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.sort-direction" + } } ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.list-response" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -25409,49 +28423,25 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "replicationSchemaFilters" : { - "type" : "object", - "properties" : { - "schema-filters-patterns" : { - "type" : "string" - }, - "schema-filters-type" : { - "type" : "string", - "enum" : [ "inclusion", "exclusion", "all" ] - } - }, - "required" : [ "schema-filters-type", "schema-filters-patterns" ] - } - } - } - } - } - }, - "tags" : [ "/api/ee/database-replication" ] + "tags" : [ "/api/ee/notifications" ] } }, - "/api/ee/database-routing/destination-database" : { + "/api/ee/notifications/bulk" : { "post" : { - "operationId" : "post-api-ee-database-routing-destination-database", - "summary" : "POST /api/ee/database-routing/destination-database", - "description" : "Create new Destination Databases.\n\n Note that unlike the normal `POST /api/database` endpoint, does NOT check the details before adding the Database.\n\n This is OK, it's not an invariant that all database details are always valid, but it's something to note.", - "parameters" : [ { - "in" : "query", - "name" : "check_connection_details", - "required" : false, - "schema" : { - "type" : "boolean" - } - } ], + "operationId" : "post-api-ee-notifications-bulk", + "summary" : "POST /api/ee/notifications/bulk", + "description" : "Bulk-archive or -change-creator a set of notifications. The per-notification `:active` flip goes\n through `:model/Notification`'s `before-update` hook, which creates / tears down the Quartz\n triggers. Recipient emails and `:event/notification-update` audit events are\n published via the shared [[notification-api/publish-notification-update!]] helper so this\n endpoint's side-effect contract can't drift from `PUT /api/notification/:id`.", + "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.bulk-response" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -25466,43 +28456,38 @@ "schema" : { "type" : "object", "properties" : { - "destinations" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "details" : { - "description" : "Value must be a map.", - "type" : "object", - "properties" : { } - }, - "name" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "name", "details" ] - } + "action" : { + "type" : "string", + "enum" : [ "archive", "change-creator" ] }, - "router_database_id" : { + "creator_id" : { "description" : "value must be an integer greater than zero.", "type" : "integer", "minimum" : 1 + }, + "notification_ids" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "minItems" : 1 } }, - "required" : [ "router_database_id", "destinations" ] + "required" : [ "notification_ids", "action" ] } } } }, - "tags" : [ "/api/ee/database-routing" ] + "tags" : [ "/api/ee/notifications" ] } }, - "/api/ee/database-routing/router-database/{id}" : { - "put" : { - "operationId" : "put-api-ee-database-routing-router-database-id", - "summary" : "PUT /api/ee/database-routing/router-database/{id}", - "description" : "Updates an existing Database with the `user_attribute` to route on. Will either:\n - turn an existing Database into a Router database\n - change the `user_attribute` used to route for an existing Router database, or\n - turn a Router database into a regular Database\n depending on the value of `user_attribute`", + "/api/ee/notifications/{id}" : { + "get" : { + "operationId" : "get-api-ee-notifications-id", + "summary" : "GET /api/ee/notifications/{id}", + "description" : "Get a single card-type notification with last_check, last_send, check_history (up to 10\n most-recent terminal alert-type TaskRuns) and send_history (up to 10 most-recent channel-send\n delivery attempts). 404 if the notification doesn't exist or isn't a card-type notification.", "parameters" : [ { "in" : "path", "name" : "id", @@ -25515,7 +28500,14 @@ } ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.notification-admin.api.detail-response" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -25524,33 +28516,64 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "user_attribute" : { - "oneOf" : [ { - "type" : "string", - "minLength" : 1 - }, { - "type" : "null" - } ] - } + "tags" : [ "/api/ee/notifications" ] + } + }, + "/api/ee/permission_debug" : { + "get" : { + "operationId" : "get-api-ee-permission_debug", + "summary" : "GET /api/ee/permission_debug", + "description" : "This endpoint expects a `user_id`, a `model_id` to debug permissions against, and `action_type`.\n The type of model we are debugging against is inferred by the `action_type`.\n\n It will return:\n - `decision`: The overall permission decision (\"allow\", \"denied\", or \"limited\")\n - `model-type`: The type of model being checked (e.g., \"question\")\n - `model-id`: The ID of the model being checked\n - `segment`: A set of segmentation types applied (e.g., \"sandboxed\", \"impersonated\", \"routed\")\n - `message`: A sequence of strings explaining the decision\n - `data`: A map containing details about permissions (table or collection names to group names)\n - `suggestions`: A map of group IDs to group names that could provide access\n\n Example requests:\n - Check if user can read a card: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/read`\n - Check if user can query a card: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/query`\n - Check if user can download data: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/download-data`\n\n Example responses:\n - Allowed access:\n ```json\n {\n \"decision\": \"allow\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User has permission to read this card\"],\n \"data\": {},\n \"suggestions\": {}\n }\n ```\n - Denied access with blocked table:\n ```json\n {\n \"decision\": \"denied\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User does not have permission to query this card\"],\n \"data\": {\"sample-db.PUBLIC.ORDERS\": [\"All Users\"]},\n \"suggestions\": {}\n }\n ```\n - Limited access:\n ```json\n {\n \"decision\": \"limited\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User has permission to download some data from this card\"],\n \"data\": {},\n \"suggestions\": {}\n }\n ```", + "parameters" : [ { + "in" : "query", + "name" : "user_id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + } + }, { + "in" : "query", + "name" : "model_id", + "required" : true, + "schema" : { + "type" : "string" + } + }, { + "in" : "query", + "name" : "action_type", + "required" : true, + "schema" : { + "type" : "string", + "enum" : [ "card/read", "card/query", "card/download-data" ] + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.permission-debug.impl.perm-debug-info" } } } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" } }, - "tags" : [ "/api/ee/database-routing" ] + "tags" : [ "/api/ee/permission_debug" ] } }, - "/api/ee/dependencies/backfill-status" : { + "/api/ee/remote-sync/branches" : { "get" : { - "operationId" : "get-api-ee-dependencies-backfill-status", - "summary" : "GET /api/ee/dependencies/backfill-status", - "description" : "Returns whether the dependency backfill has pending work.\n `complete` is true when there are no stale or outdated entities awaiting processing.", + "operationId" : "get-api-ee-remote-sync-branches", + "summary" : "GET /api/ee/remote-sync/branches", + "description" : "Get list of branches from the configured source.\n\n Returns a JSON object with branch names under the :items key.\n\n Requires superuser permissions.", "parameters" : [ ], "responses" : { "2XX" : { @@ -25560,11 +28583,14 @@ "schema" : { "type" : "object", "properties" : { - "complete" : { - "type" : "boolean" + "items" : { + "type" : "array", + "items" : { + "type" : "string" + } } }, - "required" : [ "complete" ] + "required" : [ "items" ] } } } @@ -25576,14 +28602,14 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/dependencies" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/dependencies/check-card" : { + "/api/ee/remote-sync/create-branch" : { "post" : { - "operationId" : "post-api-ee-dependencies-check-card", - "summary" : "POST /api/ee/dependencies/check-card", - "description" : "Check a proposed edit to a card, and return the card IDs for those cards this edit will break.", + "operationId" : "post-api-ee-remote-sync-create-branch", + "summary" : "POST /api/ee/remote-sync/create-branch", + "description" : "Create a new branch from the current remote-sync branch and switches the current remote-sync branch to it.\n Requires superuser permissions.", "parameters" : [ ], "responses" : { "2XX" : { @@ -25591,7 +28617,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.broken-cards-response" + "type" : "object", + "properties" : { + "message" : { + "type" : "string" + }, + "status" : { + "type" : "string" + } + }, + "required" : [ "status", "message" ] } } } @@ -25607,19 +28642,26 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.card-body" + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "name" ] } } } }, - "tags" : [ "/api/ee/dependencies" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/dependencies/check-snippet" : { - "post" : { - "operationId" : "post-api-ee-dependencies-check-snippet", - "summary" : "POST /api/ee/dependencies/check-snippet", - "description" : "Check a proposed edit to a native snippet, and return the cards, etc. which will be broken.", + "/api/ee/remote-sync/current-task" : { + "get" : { + "operationId" : "get-api-ee-remote-sync-current-task", + "summary" : "GET /api/ee/remote-sync/current-task", + "description" : "Get the current sync task", "parameters" : [ ], "responses" : { "2XX" : { @@ -25627,7 +28669,85 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.broken-cards-response" + "oneOf" : [ { + "type" : "object", + "properties" : { + "progress" : { + "oneOf" : [ { + "type" : "number", + "minimum" : 0.0, + "maximum" : 1.0 + }, { + "type" : "null" + } ] + }, + "conflicts" : { + "oneOf" : [ { + "type" : "array", + "items" : { + "type" : "string" + } + }, { + "type" : "null" + } ] + }, + "last_progress_report_at" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "id" : { + "type" : "integer", + "minimum" : 1 + }, + "started_at" : { }, + "ended_at" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "initiated_by" : { + "oneOf" : [ { + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "cancelled" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + }, + "status" : { + "type" : "string", + "enum" : [ "running", "successful", "errored", "cancelled", "timed-out", "conflict" ] + }, + "error_message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "sync_task_type" : { + "type" : "string", + "enum" : [ "import", "export" ] + }, + "version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "sync_task_type", "progress", "started_at", "status" ] + }, { + "type" : "null" + } ] } } } @@ -25639,35 +28759,115 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "content" : { - "type" : "string" - }, - "id" : { - "$ref" : "#/components/schemas/metabase.lib.schema.id.snippet" + "tags" : [ "/api/ee/remote-sync" ] + } + }, + "/api/ee/remote-sync/current-task/cancel" : { + "post" : { + "operationId" : "post-api-ee-remote-sync-current-task-cancel", + "summary" : "POST /api/ee/remote-sync/current-task/cancel", + "description" : "Cancels the current task if one is running", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "progress" : { + "oneOf" : [ { + "type" : "number", + "minimum" : 0.0, + "maximum" : 1.0 + }, { + "type" : "null" + } ] + }, + "conflicts" : { + "oneOf" : [ { + "type" : "array", + "items" : { + "type" : "string" + } + }, { + "type" : "null" + } ] + }, + "last_progress_report_at" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "id" : { + "type" : "integer", + "minimum" : 1 + }, + "started_at" : { }, + "ended_at" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "initiated_by" : { + "oneOf" : [ { + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "cancelled" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + }, + "status" : { + "type" : "string", + "enum" : [ "running", "successful", "errored", "cancelled", "timed-out", "conflict" ] + }, + "error_message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "sync_task_type" : { + "type" : "string", + "enum" : [ "import", "export" ] + }, + "version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } }, - "name" : { - "description" : "snippet names cannot include '}' or start with spaces" - } - }, - "required" : [ "id" ] + "required" : [ "id", "sync_task_type", "progress", "started_at", "status" ] + } } } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" } }, - "tags" : [ "/api/ee/dependencies" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/dependencies/check-transform" : { - "post" : { - "operationId" : "post-api-ee-dependencies-check-transform", - "summary" : "POST /api/ee/dependencies/check-transform", - "description" : "Check a proposed edit to a transform, and return the card, transform, etc. IDs for things that will break.", + "/api/ee/remote-sync/dirty" : { + "get" : { + "operationId" : "get-api-ee-remote-sync-dirty", + "summary" : "GET /api/ee/remote-sync/dirty", + "description" : "Return all models with changes that have not been pushed to the remote sync source in any\n remote-synced collection.", "parameters" : [ ], "responses" : { "2XX" : { @@ -25675,7 +28875,92 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.broken-cards-response" + "type" : "object", + "properties" : { + "dirty" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "table_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "model" : { + "type" : "string" + }, + "authority_level" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "type" : "integer" + }, + "name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "updated_at" : { + "oneOf" : [ { }, { + "type" : "null" + } ] + }, + "table_id" : { + "oneOf" : [ { + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "query_type" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "collection_id" : { + "oneOf" : [ { + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + }, + "created_at" : { }, + "display" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "sync_status" : { + "type" : "string" + }, + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "name", "model", "sync_status" ] + } + } + }, + "required" : [ "dirty" ] } } } @@ -25687,54 +28972,32 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.transform-body" - } - } - } - }, - "tags" : [ "/api/ee/dependencies" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/dependencies/graph" : { - "get" : { - "operationId" : "get-api-ee-dependencies-graph", - "summary" : "GET /api/ee/dependencies/graph", - "description" : "This endpoint takes an :id and a supported entity :type, and returns a graph of all its upstream dependencies.\n The graph is represented by a list of :nodes and a list of :edges. Each node has an :id, :type, :data (which\n depends on the node type), and a map of :dependent_counts per entity type. Each edge is a :model/Dependency.\n\n Optional :archived parameter controls whether entities in archived collections are included:\n - false (default): Excludes entities in archived collections\n - true: Includes entities in archived collections", - "parameters" : [ { - "in" : "query", - "name" : "id", - "required" : false, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - }, { - "in" : "query", - "name" : "type", - "required" : false, - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - } - }, { - "in" : "query", - "name" : "archived", - "required" : false, - "schema" : { - "type" : "boolean" - } - } ], + "/api/ee/remote-sync/export" : { + "post" : { + "operationId" : "post-api-ee-remote-sync-export", + "summary" : "POST /api/ee/remote-sync/export", + "description" : "Export the current state of the Remote Sync collection to a Source.\n\n This endpoint will:\n - Fetch the latest changes from the source\n - Create a branch or subdirectory (depending on source support)\n If no branch is supplied, use the configured export branch\n - Export the Remote Sync collection via serialization to the branch or subdirectory\n - Commit the changes if possible\n - Sync to the source if possible\n\n Requires superuser permissions.", + "parameters" : [ ], "responses" : { "2XX" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.graph-response" + "type" : "object", + "properties" : { + "message" : { + "type" : "string" + }, + "task_id" : { + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "message", "task_id" ] } } } @@ -25746,81 +29009,21 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/dependencies" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/dependencies/graph/breaking" : { + "/api/ee/remote-sync/has-remote-changes" : { "get" : { - "operationId" : "get-api-ee-dependencies-graph-breaking", - "summary" : "GET /api/ee/dependencies/graph/breaking", - "description" : "Returns a list of entities that are breaking other entities (sources of errors).\n These are tables or cards that other entities depend on, where those dependents\n have validation errors traced back to this source entity.\n\n Accepts optional parameters for filtering:\n - `types`: List of source entity types - only `:card` or `:table` (default: both)\n - `card-types`: List of card types to include when filtering cards (e.g., `[:question :model :metric]`)\n - `query`: Search string to filter by name or location\n - `archived`: Controls whether archived entities are included\n - `include-personal-collections`: Controls whether items in personal collections are included (default: false)\n - `sort-column`: Sort column - `:name`, `:location`, `:dependents-errors`, or `:dependents-with-errors` (default: `:name`)\n - `sort-direction`: Sort direction - `:asc` or `:desc` (default: `:asc`)\n - `offset`: Default 0\n - `limit`: Default 50\n\n Returns a map with:\n - `data`: List of breaking source entities\n - `total`: Total count of matched items\n - `offset`: Applied offset\n - `limit`: Applied limit", + "operationId" : "get-api-ee-remote-sync-has-remote-changes", + "summary" : "GET /api/ee/remote-sync/has-remote-changes", + "description" : "Check if there are new changes on the remote branch that can be pulled.\n Uses in-memory caching (configurable TTL via remote-sync-check-changes-cache-ttl-seconds setting).\n\n Returns:\n - has_changes: true if remote version differs from last imported version, or if never imported\n - remote_version: current Git SHA on remote branch\n - local_version: Git SHA of last successful import (nil if never imported)\n - cached: true if result was served from cache", "parameters" : [ { "in" : "query", - "name" : "types", - "required" : false, - "schema" : { - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - }, { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - } - } ] - } - }, { - "in" : "query", - "name" : "card-types", - "required" : false, - "schema" : { - "anyOf" : [ { - "type" : "string", - "enum" : [ "question", "metric", "model" ] - }, { - "type" : "array", - "items" : { - "type" : "string", - "enum" : [ "question", "metric", "model" ] - } - } ] - } - }, { - "in" : "query", - "name" : "query", - "required" : false, - "schema" : { - "type" : "string" - } - }, { - "in" : "query", - "name" : "archived", - "required" : false, - "schema" : { - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "include-personal-collections", + "name" : "force-refresh", "required" : false, "schema" : { "type" : "boolean" } - }, { - "in" : "query", - "name" : "sort-column", - "required" : false, - "schema" : { - "type" : "string", - "enum" : [ "dependents-with-errors", "dependents-errors", "name", "location" ] - } - }, { - "in" : "query", - "name" : "sort-direction", - "required" : false, - "schema" : { - "type" : "string", - "enum" : [ "desc", "asc" ] - } } ], "responses" : { "2XX" : { @@ -25830,27 +29033,28 @@ "schema" : { "type" : "object", "properties" : { - "data" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.entity" - } + "cached" : { + "type" : "boolean" }, - "limit" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 + "has_changes" : { + "type" : "boolean" }, - "offset" : { - "type" : "integer", - "minimum" : 0 + "local_version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] }, - "total" : { - "type" : "integer", - "minimum" : 0 + "remote_version" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] } }, - "required" : [ "data", "total", "offset", "limit" ] + "required" : [ "has_changes", "remote_version", "local_version", "cached" ] } } } @@ -25862,94 +29066,43 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/dependencies" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/dependencies/graph/broken" : { - "get" : { - "operationId" : "get-api-ee-dependencies-graph-broken", - "summary" : "GET /api/ee/dependencies/graph/broken", - "description" : "Returns the broken dependents for a specific source entity.\n These are entities that have validation errors traced back to the specified source.\n\n Required parameters:\n - `id`: The ID of the source entity\n - `type`: The type of the source entity (card, table)\n\n Optional parameters:\n - `dependent-types`: Dependency types to filter by. Can be single value or array.\n - `dependent-card-types`: Card types to filter by when dependent-types includes :card.\n - `include-personal-collections`: Include items in personal collections (default: false)\n - `sort-column`: Column to sort by - name, location, or view-count (default: name)\n - `sort-direction`: Sort direction - asc or desc (default: asc)", - "parameters" : [ { - "in" : "query", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - }, { - "in" : "query", - "name" : "type", - "required" : true, - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - } - }, { - "in" : "query", - "name" : "dependent-types", - "required" : false, - "schema" : { - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - }, { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - } - } ] - } - }, { - "in" : "query", - "name" : "dependent-card-types", - "required" : false, - "schema" : { - "anyOf" : [ { - "type" : "string", - "enum" : [ "question", "metric", "model" ] - }, { - "type" : "array", - "items" : { - "type" : "string", - "enum" : [ "question", "metric", "model" ] - } - } ] - } - }, { - "in" : "query", - "name" : "include-personal-collections", - "required" : false, - "schema" : { - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "sort-column", - "required" : false, - "schema" : { - "type" : "string", - "enum" : [ "name", "view-count", "location" ] - } - }, { - "in" : "query", - "name" : "sort-direction", - "required" : false, - "schema" : { - "type" : "string", - "enum" : [ "desc", "asc" ] - } - } ], + "/api/ee/remote-sync/import" : { + "post" : { + "operationId" : "post-api-ee-remote-sync-import", + "summary" : "POST /api/ee/remote-sync/import", + "description" : "Import Metabase content from configured Remote Sync source.\n\n This endpoint will:\n - Fetch the latest changes from the configured source\n - Load the updated content using the serialization/deserialization system\n\n If `force=false` (default) and there are unsaved changes in the Remote Sync collection,\n the import returns a 400 response.\n\n Requires superuser permissions.", + "parameters" : [ ], "responses" : { "2XX" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.broken-dependent-entity" - } + "type" : "object", + "properties" : { + "message" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "status" : { + "const" : "success" + }, + "task_id" : { + "oneOf" : [ { + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "status", "task_id" ] } } } @@ -25961,231 +29114,46 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/dependencies" ] - } - }, - "/api/ee/dependencies/graph/dependents" : { - "get" : { - "operationId" : "get-api-ee-dependencies-graph-dependents", - "summary" : "GET /api/ee/dependencies/graph/dependents", - "description" : "Returns a list of dependents for the specified entity.\n\n Required parameters:\n - `id`: The ID of the entity\n - `type`: The type of the entity (card, table, dashboard, etc.)\n\n Optional parameters:\n - `dependent-types`: Dependency types to filter by. Can be single value or array.\n If not provided, returns all types. Example: ?dependent-types=card&dependent-types=dashboard\n - `dependent-card-types`: Card types to filter by when dependent-types includes :card.\n Ignored if dependent-types doesn't include :card. Example: ?dependent-card-types=question&dependent-card-types=model\n - `archived`: Include entities in archived collections (default: false)\n - `broken`: Return only broken entities (default: false)\n - `query`: Search string to filter results by name or location (case-insensitive)\n - `include-personal-collections`: Include items in personal collections (default: false)\n - `sort-column`: Column to sort by - name, location, or view-count (default: name)\n - `sort-direction`: Sort direction - asc or desc (default: asc)", - "parameters" : [ { - "in" : "query", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - }, { - "in" : "query", - "name" : "type", - "required" : true, - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - } - }, { - "in" : "query", - "name" : "dependent-types", - "required" : false, - "schema" : { - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - }, { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - } - } ] - } - }, { - "in" : "query", - "name" : "dependent-card-types", - "required" : false, - "schema" : { - "anyOf" : [ { - "type" : "string", - "enum" : [ "question", "metric", "model" ] - }, { - "type" : "array", - "items" : { - "type" : "string", - "enum" : [ "question", "metric", "model" ] - } - } ] - } - }, { - "in" : "query", - "name" : "archived", - "required" : false, - "schema" : { - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "broken", - "required" : false, - "schema" : { - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "query", - "required" : false, - "schema" : { - "type" : "string" - } - }, { - "in" : "query", - "name" : "include-personal-collections", - "required" : false, - "schema" : { - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "sort-column", - "required" : false, - "schema" : { - "type" : "string", - "enum" : [ "name", "view-count", "location" ] - } - }, { - "in" : "query", - "name" : "sort-direction", - "required" : false, - "schema" : { - "type" : "string", - "enum" : [ "desc", "asc" ] - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.entity" + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "branch" : { + "type" : "string", + "minLength" : 1 + }, + "force" : { + "type" : "boolean" } } } } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" } }, - "tags" : [ "/api/ee/dependencies" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/dependencies/graph/unreferenced" : { + "/api/ee/remote-sync/is-dirty" : { "get" : { - "operationId" : "get-api-ee-dependencies-graph-unreferenced", - "summary" : "GET /api/ee/dependencies/graph/unreferenced", - "description" : "Returns a list of all unreferenced items in the instance.\n An unreferenced item is one that is not a dependency of any other item.\n\n Accepts optional parameters for filtering:\n - `types`: List of entity types to include (e.g., [:card :transform :snippet :dashboard])\n - `card-types`: List of card types to include when filtering cards (e.g., [:question :model :metric])\n - `query`: Search string to filter by name or location\n - `archived`: Controls whether archived entities are included\n - `include-personal-collections`: Controls whether items in personal collections are included (default: false)\n - `sort-column`: Sort column - `:name`, `:location`, `:dependents-errors`, or `:dependents-with-errors` (default: `:name`)\n - `sort-direction`: Sort direction - `:asc` or `:desc` (default: `:asc`)\n - `offset`: Default 0\n - `limit`: Default 50\n\n Returns a map with:\n - `data`: List of unreferenced items, each with `:id`, `:type`, and `:data` fields\n - `total`: Total count of matched items\n - `offset`: Applied offset\n - `limit`: Applied limit", - "parameters" : [ { - "in" : "query", - "name" : "types", - "required" : false, - "schema" : { - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - }, { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.dependency-types.dependency-types" - } - } ] - } - }, { - "in" : "query", - "name" : "card-types", - "required" : false, - "schema" : { - "anyOf" : [ { - "type" : "string", - "enum" : [ "question", "metric", "model" ] - }, { - "type" : "array", - "items" : { - "type" : "string", - "enum" : [ "question", "metric", "model" ] - } - } ] - } - }, { - "in" : "query", - "name" : "query", - "required" : false, - "schema" : { - "type" : "string" - } - }, { - "in" : "query", - "name" : "archived", - "required" : false, - "schema" : { - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "include-personal-collections", - "required" : false, - "schema" : { - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "sort-column", - "required" : false, - "schema" : { - "type" : "string", - "enum" : [ "dependents-with-errors", "dependents-errors", "name", "location" ] - } - }, { - "in" : "query", - "name" : "sort-direction", - "required" : false, - "schema" : { - "type" : "string", - "enum" : [ "desc", "asc" ] - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "data" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.entity" - } - }, - "limit" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, - "offset" : { - "type" : "integer", - "minimum" : 0 - }, - "total" : { - "type" : "integer", - "minimum" : 0 + "operationId" : "get-api-ee-remote-sync-is-dirty", + "summary" : "GET /api/ee/remote-sync/is-dirty", + "description" : "Check if any remote-synced collection or collection item has local changes that have not been pushed\n to the remote sync source.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "is_dirty" : { + "type" : "boolean" } }, - "required" : [ "data", "total", "offset", "limit" ] + "required" : [ "is_dirty" ] } } } @@ -26197,18 +29165,35 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/dependencies" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/email/override" : { + "/api/ee/remote-sync/settings" : { "put" : { - "operationId" : "put-api-ee-email-override", - "summary" : "PUT /api/ee/email/override", - "description" : "Update multiple cloud email Settings. You must be a superuser or have `setting` permission to do this.\n Calling this automatically sets `cloud-smtp-enabled` to true if the settings are valid.", + "operationId" : "put-api-ee-remote-sync-settings", + "summary" : "PUT /api/ee/remote-sync/settings", + "description" : "Update Remote Sync related settings. You must be a superuser to do this.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "success" : { + "type" : "boolean" + }, + "task_id" : { + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "success" ] + } + } + } }, "4XX" : { "description" : "Client error response" @@ -26223,36 +29208,54 @@ "schema" : { "type" : "object", "properties" : { - "email-smtp-host-override" : { - "anyOf" : [ { + "collections" : { + "oneOf" : [ { + "type" : "object", + "additionalProperties" : { + "type" : "boolean" + } + }, { + "type" : "null" + } ] + }, + "remote-sync-auto-import" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + }, + "remote-sync-branch" : { + "oneOf" : [ { "type" : "string" }, { "type" : "null" } ] }, - "email-smtp-password-override" : { - "anyOf" : [ { + "remote-sync-token" : { + "oneOf" : [ { "type" : "string" }, { "type" : "null" } ] }, - "email-smtp-port-override" : { - "anyOf" : [ { - "type" : "integer" + "remote-sync-transforms" : { + "oneOf" : [ { + "type" : "boolean" }, { "type" : "null" } ] }, - "email-smtp-security-override" : { - "anyOf" : [ { - "type" : "string" + "remote-sync-type" : { + "oneOf" : [ { + "type" : "string", + "enum" : [ "read-only", "read-write" ] }, { "type" : "null" } ] }, - "email-smtp-username-override" : { - "anyOf" : [ { + "remote-sync-url" : { + "oneOf" : [ { "type" : "string" }, { "type" : "null" @@ -26263,32 +29266,14 @@ } } }, - "tags" : [ "/api/ee/email" ] - }, - "delete" : { - "operationId" : "delete-api-ee-email-override", - "summary" : "DELETE /api/ee/email/override", - "description" : "Clear all cloud email related settings. You must be a superuser or have `setting` permission to do this.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/email" ] + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/embedding-hub/checklist" : { - "get" : { - "operationId" : "get-api-ee-embedding-hub-checklist", - "summary" : "GET /api/ee/embedding-hub/checklist", - "description" : "Get the embedding hub checklist status, indicating which setup steps have been completed.", + "/api/ee/remote-sync/stash" : { + "post" : { + "operationId" : "post-api-ee-remote-sync-stash", + "summary" : "POST /api/ee/remote-sync/stash", + "description" : "Stashes changes to a new branch, and changes the current branch to it.\n Requires superuser permissions.", "parameters" : [ ], "responses" : { "2XX" : { @@ -26298,63 +29283,18 @@ "schema" : { "type" : "object", "properties" : { - "checklist" : { - "type" : "object", - "properties" : { - "enable-tenants" : { - "type" : "boolean" - }, - "create-models" : { - "type" : "boolean" - }, - "sso-configured" : { - "type" : "boolean" - }, - "configure-row-column-security" : { - "type" : "boolean" - }, - "create-test-embed" : { - "type" : "boolean" - }, - "data-permissions-and-enable-tenants" : { - "type" : "boolean" - }, - "embed-production" : { - "type" : "boolean" - }, - "create-dashboard" : { - "type" : "boolean" - }, - "move-dashboard-to-shared" : { - "type" : "boolean" - }, - "setup-data-segregation-strategy" : { - "type" : "boolean" - }, - "create-tenants" : { - "type" : "boolean" - }, - "add-data" : { - "type" : "boolean" - }, - "sso-auth-manual-tested" : { - "type" : "boolean" - } - }, - "required" : [ "add-data", "create-dashboard", "create-models", "configure-row-column-security", "create-test-embed", "embed-production", "sso-configured", "data-permissions-and-enable-tenants", "enable-tenants", "move-dashboard-to-shared", "create-tenants", "setup-data-segregation-strategy", "sso-auth-manual-tested" ], - "additionalProperties" : false + "message" : { + "type" : "string" }, - "data-isolation-strategy" : { - "oneOf" : [ { - "type" : "string", - "enum" : [ "row-column-level-security", "connection-impersonation", "database-routing" ] - }, { - "type" : "null" - } ] + "status" : { + "type" : "string" + }, + "task_id" : { + "type" : "integer", + "minimum" : 1 } }, - "required" : [ "checklist", "data-isolation-strategy" ], - "additionalProperties" : false + "required" : [ "status", "message", "task_id" ] } } } @@ -26366,14 +29306,34 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/embedding-hub" ] + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "message" : { + "type" : "string", + "minLength" : 1 + }, + "new_branch" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "new_branch", "message" ] + } + } + } + }, + "tags" : [ "/api/ee/remote-sync" ] } }, - "/api/ee/gsheets/connection" : { + "/api/ee/remote-sync/test-connection" : { "post" : { - "operationId" : "post-api-ee-gsheets-connection", - "summary" : "POST /api/ee/gsheets/connection", - "description" : "Hook up a new google drive folder or sheet that will be watched and have its content ETL'd into Metabase.", + "operationId" : "post-api-ee-remote-sync-test-connection", + "summary" : "POST /api/ee/remote-sync/test-connection", + "description" : "Test whether the Remote Sync credentials can reach the git repository.\n\n When called with an empty body, validates the currently saved URL and token. When the body provides\n `remote-sync-url` or `remote-sync-token`, those override the saved values — useful for verifying a\n new Personal Access Token before saving. An obfuscated token (matching the existing token's masked\n representation) is treated as \"unchanged\" and the stored token value is used for the test.\n\n Only validates connection and authentication; branch existence is not checked here.\n\n Returns `{:status :success}` on success. On failure, returns a 400 with a user-friendly error\n message describing the connection problem.\n\n Requires superuser permissions.", "parameters" : [ ], "responses" : { "2XX" : { @@ -26381,7 +29341,13 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/gsheets.response" + "type" : "object", + "properties" : { + "status" : { + "const" : "success" + } + }, + "required" : [ "status" ] } } } @@ -26399,22 +29365,33 @@ "schema" : { "type" : "object", "properties" : { - "url" : { - "type" : "string", - "minLength" : 1 + "remote-sync-token" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "remote-sync-url" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] } - }, - "required" : [ "url" ] + } } } } }, - "tags" : [ "/api/ee/gsheets" ] - }, - "get" : { - "operationId" : "get-api-ee-gsheets-connection", - "summary" : "GET /api/ee/gsheets/connection", - "description" : "Check the status of a connection. This endpoint gets polled by FE to determine when to\n stop showing the setup widget.\n\n Returns the gsheets shape, with the attached datawarehouse db id at `:db_id`.", + "tags" : [ "/api/ee/remote-sync" ] + } + }, + "/api/ee/replacement/check-replace-source" : { + "post" : { + "operationId" : "post-api-ee-replacement-check-replace-source", + "summary" : "POST /api/ee/replacement/check-replace-source", + "description" : "Check whether a source entity can be replaced by a target entity. Returns compatibility\n errors describing column mismatches, type mismatches, primary key mismatches, and foreign\n key mismatches.", "parameters" : [ ], "responses" : { "2XX" : { @@ -26422,7 +29399,7 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/gsheets.response" + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.check-replace-source-response" } } } @@ -26434,52 +29411,38 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/gsheets" ] - }, - "delete" : { - "operationId" : "delete-api-ee-gsheets-connection", - "summary" : "DELETE /api/ee/gsheets/connection", - "description" : "Disconnect the google service account. There is only one (or zero) at the time of writing.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "source_entity_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" + }, + "source_entity_type" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-type" + }, + "target_entity_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" + }, + "target_entity_type" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-type" + } + }, + "required" : [ "source_entity_id", "source_entity_type", "target_entity_id", "target_entity_type" ] + } + } } }, - "tags" : [ "/api/ee/gsheets" ] + "tags" : [ "/api/ee/replacement" ] } }, - "/api/ee/gsheets/connection/sync" : { + "/api/ee/replacement/replace-model-with-transform" : { "post" : { - "operationId" : "post-api-ee-gsheets-connection-sync", - "summary" : "POST /api/ee/gsheets/connection/sync", - "description" : "Force a sync of the connection now.\n\n Returns the gsheets shape, with the attached datawarehouse db id at `:db_id`.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/gsheets" ] - } - }, - "/api/ee/gsheets/service-account" : { - "get" : { - "operationId" : "get-api-ee-gsheets-service-account", - "summary" : "GET /api/ee/gsheets/service-account", - "description" : "Checks to see if service-account is setup or not, delegates to HM only if we haven't set it from a metabase cluster\n before.", + "operationId" : "post-api-ee-replacement-replace-model-with-transform", + "summary" : "POST /api/ee/replacement/replace-model-with-transform", + "description" : "Create a transform from a model, execute it, and replace all usages of the model\n with the output table. Un-persists the model and converts it to a saved question.\n Returns 202 with a run_id for polling.\n\n If there is an error during the transform execution, no replacement will be\n performed and the model will remain unchanged.\n\n If there is an error during the source swap, the transform and the output\n table will be retained, and the model will remain unchanged. We cannot delete\n the transform or the output table because they can be used by other queries at\n this point.", "parameters" : [ ], "responses" : { "2XX" : { @@ -26489,15 +29452,21 @@ "schema" : { "type" : "object", "properties" : { - "email" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] + "body" : { + "type" : "object", + "properties" : { + "run_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run-id" + } + }, + "required" : [ "run_id" ], + "additionalProperties" : false + }, + "status" : { + "const" : 202 } }, - "required" : [ "email" ] + "required" : [ "status", "body" ] } } } @@ -26509,118 +29478,54 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/gsheets" ] - } - }, - "/api/ee/library" : { - "post" : { - "operationId" : "post-api-ee-library", - "summary" : "POST /api/ee/library", - "description" : "Creates the Library if it doesn't exist. Returns the created collection.\n\n Requires data analyst or superuser permissions.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/library" ] - }, - "get" : { - "operationId" : "get-api-ee-library", - "summary" : "GET /api/ee/library", - "description" : "Get the Library. If no library exists, it doesn't fail but returns an empty response", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "anyOf" : [ { - "$ref" : "#/components/schemas/metabase.collections.schema.CollectionItem" - }, { - "type" : "object", - "properties" : { - "data" : { - "type" : "null" + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "card_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" + }, + "target_collection_id" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" + }, { + "type" : "null" + } ] + }, + "transform_name" : { + "type" : "string" + }, + "transform_tag_ids" : { + "oneOf" : [ { + "type" : "array", + "items" : { + "type" : "integer", + "minimum" : 1 } - }, - "required" : [ "data" ] - } ] - } + }, { + "type" : "null" + } ] + }, + "transform_target" : { + "type" : "object", + "properties" : { } + } + }, + "required" : [ "card_id", "transform_name", "transform_target" ] } } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/library" ] - } - }, - "/api/ee/library/tree" : { - "get" : { - "operationId" : "get-api-ee-library-tree", - "summary" : "GET /api/ee/library/tree", - "description" : "This matches /api/collection/tree but only returns the library collection.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/library" ] - } - }, - "/api/ee/logs/query_execution/{yyyy-mm}" : { - "get" : { - "operationId" : "get-api-ee-logs-query_execution-yyyy-mm", - "summary" : "GET /api/ee/logs/query_execution/{yyyy-mm}", - "description" : "Fetch rows for the month specified by `:yyyy-mm` from the query_execution logs table.\n Must be a superuser.", - "parameters" : [ { - "in" : "path", - "name" : "yyyy-mm", - "required" : true, - "schema" : { - "type" : "string", - "pattern" : "\\d{4}-\\d{2}" - }, - "description" : "Must be a string like 2020-04 or 2222-11." - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" } }, - "tags" : [ "/api/ee/logs" ] + "tags" : [ "/api/ee/replacement" ] } }, - "/api/ee/metabot/usage" : { - "get" : { - "operationId" : "get-api-ee-metabot-usage", - "summary" : "GET /api/ee/metabot/usage", - "description" : "Fetch current Metabot token usage for the current billing period.", + "/api/ee/replacement/replace-source" : { + "post" : { + "operationId" : "post-api-ee-replacement-replace-source", + "summary" : "POST /api/ee/replacement/replace-source", + "description" : "Replace all usages of a source entity with a target entity asynchronously.\n Returns 202 with a run_id for polling. Returns 409 if a replacement is already running.", "parameters" : [ ], "responses" : { "2XX" : { @@ -26630,29 +29535,21 @@ "schema" : { "type" : "object", "properties" : { - "is_locked" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - }, - "tokens" : { - "oneOf" : [ { - "type" : "integer" - }, { - "type" : "null" - } ] - }, - "updated_at" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] + "body" : { + "type" : "object", + "properties" : { + "run_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run-id" + } + }, + "required" : [ "run_id" ], + "additionalProperties" : false + }, + "status" : { + "const" : 202 } }, - "required" : [ "is_locked", "tokens", "updated_at" ] + "required" : [ "status", "body" ] } } } @@ -26664,36 +29561,48 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/metabot" ] + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "source_entity_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" + }, + "source_entity_type" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-type" + }, + "target_entity_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" + }, + "target_entity_type" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-type" + } + }, + "required" : [ "source_entity_id", "source_entity_type", "target_entity_id", "target_entity_type" ] + } + } + } + }, + "tags" : [ "/api/ee/replacement" ] } }, - "/api/ee/permission_debug" : { + "/api/ee/replacement/runs" : { "get" : { - "operationId" : "get-api-ee-permission_debug", - "summary" : "GET /api/ee/permission_debug", - "description" : "This endpoint expects a `user_id`, a `model_id` to debug permissions against, and `action_type`.\n The type of model we are debugging against is inferred by the `action_type`.\n\n It will return:\n - `decision`: The overall permission decision (\"allow\", \"denied\", or \"limited\")\n - `model-type`: The type of model being checked (e.g., \"question\")\n - `model-id`: The ID of the model being checked\n - `segment`: A set of segmentation types applied (e.g., \"sandboxed\", \"impersonated\", \"routed\")\n - `message`: A sequence of strings explaining the decision\n - `data`: A map containing details about permissions (table or collection names to group names)\n - `suggestions`: A map of group IDs to group names that could provide access\n\n Example requests:\n - Check if user can read a card: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/read`\n - Check if user can query a card: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/query`\n - Check if user can download data: `GET /api/ee/permission_debug?user_id=123&model_id=456&action_type=card/download-data`\n\n Example responses:\n - Allowed access:\n ```json\n {\n \"decision\": \"allow\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User has permission to read this card\"],\n \"data\": {},\n \"suggestions\": {}\n }\n ```\n - Denied access with blocked table:\n ```json\n {\n \"decision\": \"denied\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User does not have permission to query this card\"],\n \"data\": {\"sample-db.PUBLIC.ORDERS\": [\"All Users\"]},\n \"suggestions\": {}\n }\n ```\n - Limited access:\n ```json\n {\n \"decision\": \"limited\",\n \"model-type\": \"question\",\n \"model-id\": \"456\",\n \"segment\": [],\n \"message\": [\"User has permission to download some data from this card\"],\n \"data\": {},\n \"suggestions\": {}\n }\n ```", + "operationId" : "get-api-ee-replacement-runs", + "summary" : "GET /api/ee/replacement/runs", + "description" : "List replacement runs, optionally filtered by is-active.", "parameters" : [ { "in" : "query", - "name" : "user_id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - } - }, { - "in" : "query", - "name" : "model_id", - "required" : true, - "schema" : { - "type" : "string" - } - }, { - "in" : "query", - "name" : "action_type", - "required" : true, + "name" : "is-active", + "required" : false, "schema" : { - "type" : "string", - "enum" : [ "card/read", "card/query", "card/download-data" ] + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] } } ], "responses" : { @@ -26702,7 +29611,10 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.permission-debug.impl.perm-debug-info" + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run" + } } } } @@ -26714,31 +29626,29 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/permission_debug" ] + "tags" : [ "/api/ee/replacement" ] } }, - "/api/ee/remote-sync/branches" : { + "/api/ee/replacement/runs/{id}" : { "get" : { - "operationId" : "get-api-ee-remote-sync-branches", - "summary" : "GET /api/ee/remote-sync/branches", - "description" : "Get list of branches from the configured source.\n\n Returns a JSON object with branch names under the :items key.\n\n Requires superuser permissions.", - "parameters" : [ ], + "operationId" : "get-api-ee-replacement-runs-id", + "summary" : "GET /api/ee/replacement/runs/{id}", + "description" : "Get the status of a source replacement run.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run-id" + } + } ], "responses" : { "2XX" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { - "type" : "object", - "properties" : { - "items" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - }, - "required" : [ "items" ] + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run" } } } @@ -26750,15 +29660,22 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/remote-sync" ] + "tags" : [ "/api/ee/replacement" ] } }, - "/api/ee/remote-sync/create-branch" : { + "/api/ee/replacement/runs/{id}/cancel" : { "post" : { - "operationId" : "post-api-ee-remote-sync-create-branch", - "summary" : "POST /api/ee/remote-sync/create-branch", - "description" : "Create a new branch from the current remote-sync branch and switches the current remote-sync branch to it.\n Requires superuser permissions.", - "parameters" : [ ], + "operationId" : "post-api-ee-replacement-runs-id-cancel", + "summary" : "POST /api/ee/replacement/runs/{id}/cancel", + "description" : "Cancel a running source replacement.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run-id" + } + } ], "responses" : { "2XX" : { "description" : "Successful response", @@ -26767,14 +29684,11 @@ "schema" : { "type" : "object", "properties" : { - "message" : { - "type" : "string" - }, - "status" : { - "type" : "string" + "success" : { + "type" : "boolean" } }, - "required" : [ "status", "message" ] + "required" : [ "success" ] } } } @@ -26786,119 +29700,18 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "name" ] - } - } - } - }, - "tags" : [ "/api/ee/remote-sync" ] + "tags" : [ "/api/ee/replacement" ] } }, - "/api/ee/remote-sync/current-task" : { + "/api/ee/scim/api_key" : { "get" : { - "operationId" : "get-api-ee-remote-sync-current-task", - "summary" : "GET /api/ee/remote-sync/current-task", - "description" : "Get the current sync task", + "operationId" : "get-api-ee-scim-api_key", + "summary" : "GET /api/ee/scim/api_key", + "description" : "Fetch the SCIM API key if one exists. Does *not* return an unmasked key, since we don't have access\n to that after it is created.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "oneOf" : [ { - "type" : "object", - "properties" : { - "progress" : { - "oneOf" : [ { - "type" : "number", - "minimum" : 0.0, - "maximum" : 1.0 - }, { - "type" : "null" - } ] - }, - "conflicts" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "type" : "string" - } - }, { - "type" : "null" - } ] - }, - "last_progress_report_at" : { - "oneOf" : [ { }, { - "type" : "null" - } ] - }, - "id" : { - "type" : "integer", - "minimum" : 1 - }, - "started_at" : { }, - "ended_at" : { - "oneOf" : [ { }, { - "type" : "null" - } ] - }, - "initiated_by" : { - "oneOf" : [ { - "type" : "integer", - "minimum" : 1 - }, { - "type" : "null" - } ] - }, - "cancelled" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - }, - "status" : { - "type" : "string", - "enum" : [ "running", "successful", "errored", "cancelled", "timed-out", "conflict" ] - }, - "error_message" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "sync_task_type" : { - "type" : "string", - "enum" : [ "import", "export" ] - }, - "version" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - } - }, - "required" : [ "id", "sync_task_type", "progress", "started_at", "status" ] - }, { - "type" : "null" - } ] - } - } - } + "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -26907,99 +29720,16 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/remote-sync" ] - } - }, - "/api/ee/remote-sync/current-task/cancel" : { + "tags" : [ "/api/ee/scim" ] + }, "post" : { - "operationId" : "post-api-ee-remote-sync-current-task-cancel", - "summary" : "POST /api/ee/remote-sync/current-task/cancel", - "description" : "Cancels the current task if one is running", + "operationId" : "post-api-ee-scim-api_key", + "summary" : "POST /api/ee/scim/api_key", + "description" : "Create a new SCIM API key, or refresh one that already exists. When called for the first time,\n this is equivalent to enabling SCIM.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "progress" : { - "oneOf" : [ { - "type" : "number", - "minimum" : 0.0, - "maximum" : 1.0 - }, { - "type" : "null" - } ] - }, - "conflicts" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "type" : "string" - } - }, { - "type" : "null" - } ] - }, - "last_progress_report_at" : { - "oneOf" : [ { }, { - "type" : "null" - } ] - }, - "id" : { - "type" : "integer", - "minimum" : 1 - }, - "started_at" : { }, - "ended_at" : { - "oneOf" : [ { }, { - "type" : "null" - } ] - }, - "initiated_by" : { - "oneOf" : [ { - "type" : "integer", - "minimum" : 1 - }, { - "type" : "null" - } ] - }, - "cancelled" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - }, - "status" : { - "type" : "string", - "enum" : [ "running", "successful", "errored", "cancelled", "timed-out", "conflict" ] - }, - "error_message" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "sync_task_type" : { - "type" : "string", - "enum" : [ "import", "export" ] - }, - "version" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - } - }, - "required" : [ "id", "sync_task_type", "progress", "started_at", "status" ] - } - } - } + "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -27008,110 +29738,146 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/remote-sync" ] + "tags" : [ "/api/ee/scim" ] } }, - "/api/ee/remote-sync/dirty" : { + "/api/ee/scim/v2/Groups" : { "get" : { - "operationId" : "get-api-ee-remote-sync-dirty", - "summary" : "GET /api/ee/remote-sync/dirty", - "description" : "Return all models with changes that have not been pushed to the remote sync source in any\n remote-synced collection.", + "operationId" : "get-api-ee-scim-v2-Groups", + "summary" : "GET /api/ee/scim/v2/Groups", + "description" : "Fetch a list of groups.", + "parameters" : [ { + "in" : "query", + "name" : "startIndex", + "required" : false, + "schema" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "count", + "required" : false, + "schema" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "filter", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/scim/v2" ] + }, + "post" : { + "operationId" : "post-api-ee-scim-v2-Groups", + "summary" : "POST /api/ee/scim/v2/Groups", + "description" : "Create a single group, and populates it if necessary.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "dirty" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "table_name" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "model" : { - "type" : "string" - }, - "authority_level" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "id" : { - "type" : "integer" - }, - "name" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "updated_at" : { - "oneOf" : [ { }, { - "type" : "null" - } ] - }, - "table_id" : { - "oneOf" : [ { - "type" : "integer", - "minimum" : 1 - }, { - "type" : "null" - } ] - }, - "query_type" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "collection_id" : { - "oneOf" : [ { - "type" : "integer", - "minimum" : 1 - }, { - "type" : "null" - } ] - }, - "created_at" : { }, - "display" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "sync_status" : { - "type" : "string" - }, - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - } + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "displayName" : { + "type" : "string", + "minLength" : 1 + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "members" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "$ref" : { + "type" : "string", + "minLength" : 1 }, - "required" : [ "id", "name", "model", "sync_status" ] - } + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "value" ] } }, - "required" : [ "dirty" ] - } + "schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "required" : [ "schemas", "displayName" ] } } + } + }, + "tags" : [ "/api/ee/scim/v2" ] + } + }, + "/api/ee/scim/v2/Groups/{id}" : { + "get" : { + "operationId" : "get-api-ee-scim-v2-Groups-id", + "summary" : "GET /api/ee/scim/v2/Groups/{id}", + "description" : "Fetch a single group.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string", + "minLength" : 1 + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -27120,35 +29886,86 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/remote-sync" ] - } - }, - "/api/ee/remote-sync/export" : { - "post" : { - "operationId" : "post-api-ee-remote-sync-export", - "summary" : "POST /api/ee/remote-sync/export", - "description" : "Export the current state of the Remote Sync collection to a Source.\n\n This endpoint will:\n - Fetch the latest changes from the source\n - Create a branch or subdirectory (depending on source support)\n If no branch is supplied, use the configured export branch\n - Export the Remote Sync collection via serialization to the branch or subdirectory\n - Commit the changes if possible\n - Sync to the source if possible\n\n Requires superuser permissions.", + "tags" : [ "/api/ee/scim/v2" ] + }, + "put" : { + "operationId" : "put-api-ee-scim-v2-Groups-id", + "summary" : "PUT /api/ee/scim/v2/Groups/{id}", + "description" : "Update a group.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "message" : { - "type" : "string" - }, - "task_id" : { - "type" : "integer", - "minimum" : 1 + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "displayName" : { + "type" : "string", + "minLength" : 1 + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "members" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "$ref" : { + "type" : "string", + "minLength" : 1 + }, + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "value" ] } }, - "required" : [ "message", "task_id" ] - } + "schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "required" : [ "schemas", "displayName" ] } } + } + }, + "tags" : [ "/api/ee/scim/v2" ] + }, + "delete" : { + "operationId" : "delete-api-ee-scim-v2-Groups-id", + "summary" : "DELETE /api/ee/scim/v2/Groups/{id}", + "description" : "Delete a group.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string", + "minLength" : 1 + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -27157,55 +29974,56 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/remote-sync" ] + "tags" : [ "/api/ee/scim/v2" ] } }, - "/api/ee/remote-sync/has-remote-changes" : { + "/api/ee/scim/v2/Users" : { "get" : { - "operationId" : "get-api-ee-remote-sync-has-remote-changes", - "summary" : "GET /api/ee/remote-sync/has-remote-changes", - "description" : "Check if there are new changes on the remote branch that can be pulled.\n Uses in-memory caching (configurable TTL via remote-sync-check-changes-cache-ttl-seconds setting).\n\n Returns:\n - has_changes: true if remote version differs from last imported version, or if never imported\n - remote_version: current Git SHA on remote branch\n - local_version: Git SHA of last successful import (nil if never imported)\n - cached: true if result was served from cache", + "operationId" : "get-api-ee-scim-v2-Users", + "summary" : "GET /api/ee/scim/v2/Users", + "description" : "Fetch a list of users.", "parameters" : [ { "in" : "query", - "name" : "force-refresh", + "name" : "startIndex", "required" : false, "schema" : { - "type" : "boolean" + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "count", + "required" : false, + "schema" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "filter", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] } } ], "responses" : { "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "cached" : { - "type" : "boolean" - }, - "has_changes" : { - "type" : "boolean" - }, - "local_version" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "remote_version" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - } - }, - "required" : [ "has_changes", "remote_version", "local_version", "cached" ] - } - } - } + "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -27214,46 +30032,16 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/remote-sync" ] - } - }, - "/api/ee/remote-sync/import" : { + "tags" : [ "/api/ee/scim/v2" ] + }, "post" : { - "operationId" : "post-api-ee-remote-sync-import", - "summary" : "POST /api/ee/remote-sync/import", - "description" : "Import Metabase content from configured Remote Sync source.\n\n This endpoint will:\n - Fetch the latest changes from the configured source\n - Load the updated content using the serialization/deserialization system\n\n If `force=false` (default) and there are unsaved changes in the Remote Sync collection,\n the import returns a 400 response.\n\n Requires superuser permissions.", + "operationId" : "post-api-ee-scim-v2-Users", + "summary" : "POST /api/ee/scim/v2/Users", + "description" : "Create a single user.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "message" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "status" : { - "const" : "success" - }, - "task_id" : { - "oneOf" : [ { - "type" : "integer", - "minimum" : 1 - }, { - "type" : "null" - } ] - } - }, - "required" : [ "status", "task_id" ] - } - } - } + "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -27268,43 +30056,111 @@ "schema" : { "type" : "object", "properties" : { - "branch" : { + "active" : { + "type" : "boolean" + }, + "emails" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "primary" : { + "type" : "boolean" + }, + "type" : { + "type" : "string", + "minLength" : 1 + }, + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "value" ] + } + }, + "groups" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "$ref" : { + "type" : "string", + "minLength" : 1 + }, + "display" : { + "type" : "string", + "minLength" : 1 + }, + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "value", "display" ] + } + }, + "id" : { "type" : "string", "minLength" : 1 }, - "force" : { - "type" : "boolean" + "locale" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + }, + "name" : { + "type" : "object", + "properties" : { + "familyName" : { + "type" : "string" + }, + "givenName" : { + "type" : "string" + } + }, + "required" : [ "givenName", "familyName" ] + }, + "schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "userName" : { + "type" : "string", + "minLength" : 1 } - } + }, + "required" : [ "schemas", "userName", "name", "emails" ] } } } }, - "tags" : [ "/api/ee/remote-sync" ] + "tags" : [ "/api/ee/scim/v2" ] } }, - "/api/ee/remote-sync/is-dirty" : { + "/api/ee/scim/v2/Users/{id}" : { "get" : { - "operationId" : "get-api-ee-remote-sync-is-dirty", - "summary" : "GET /api/ee/remote-sync/is-dirty", - "description" : "Check if any remote-synced collection or collection item has local changes that have not been pushed\n to the remote sync source.", - "parameters" : [ ], + "operationId" : "get-api-ee-scim-v2-Users-id", + "summary" : "GET /api/ee/scim/v2/Users/{id}", + "description" : "Fetch a single user.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string", + "minLength" : 1 + } + } ], "responses" : { "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "is_dirty" : { - "type" : "boolean" - } - }, - "required" : [ "is_dirty" ] - } - } - } + "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -27313,35 +30169,133 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/remote-sync" ] - } - }, - "/api/ee/remote-sync/settings" : { + "tags" : [ "/api/ee/scim/v2" ] + }, "put" : { - "operationId" : "put-api-ee-remote-sync-settings", - "summary" : "PUT /api/ee/remote-sync/settings", - "description" : "Update Remote Sync related settings. You must be a superuser to do this.", + "operationId" : "put-api-ee-scim-v2-Users-id", + "summary" : "PUT /api/ee/scim/v2/Users/{id}", + "description" : "Update a user.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "success" : { - "type" : "boolean" + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "active" : { + "type" : "boolean" + }, + "emails" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "primary" : { + "type" : "boolean" + }, + "type" : { + "type" : "string", + "minLength" : 1 + }, + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "value" ] + } + }, + "groups" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "$ref" : { + "type" : "string", + "minLength" : 1 + }, + "display" : { + "type" : "string", + "minLength" : 1 + }, + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "value", "display" ] + } + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "locale" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + }, + "name" : { + "type" : "object", + "properties" : { + "familyName" : { + "type" : "string" + }, + "givenName" : { + "type" : "string" + } }, - "task_id" : { - "type" : "integer", - "minimum" : 1 + "required" : [ "givenName", "familyName" ] + }, + "schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 } }, - "required" : [ "success" ] - } + "userName" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "schemas", "userName", "name", "emails" ] } } + } + }, + "tags" : [ "/api/ee/scim/v2" ] + }, + "patch" : { + "operationId" : "patch-api-ee-scim-v2-Users-id", + "summary" : "PATCH /api/ee/scim/v2/Users/{id}", + "description" : "Activate or deactivate a user. Supports specific replace operations, but not arbitrary patches.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string", + "minLength" : 1 + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -27356,72 +30310,58 @@ "schema" : { "type" : "object", "properties" : { - "collections" : { - "oneOf" : [ { + "Operations" : { + "type" : "array", + "items" : { "type" : "object", - "additionalProperties" : { - "type" : "boolean" - } - }, { - "type" : "null" - } ] - }, - "remote-sync-auto-import" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - }, - "remote-sync-branch" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "remote-sync-token" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "remote-sync-transforms" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] + "properties" : { + "op" : { + "type" : "string", + "minLength" : 1 + }, + "value" : { + "anyOf" : [ { + "type" : "object", + "additionalProperties" : { + "anyOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "boolean" + } ] + } + }, { + "type" : "string", + "minLength" : 1 + }, { + "type" : "boolean" + } ] + } + }, + "required" : [ "op", "value" ] + } }, - "remote-sync-type" : { - "oneOf" : [ { + "schemas" : { + "type" : "array", + "items" : { "type" : "string", - "enum" : [ "read-only", "read-write" ] - }, { - "type" : "null" - } ] - }, - "remote-sync-url" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] + "minLength" : 1 + } } - } + }, + "required" : [ "schemas", "Operations" ] } } } }, - "tags" : [ "/api/ee/remote-sync" ] + "tags" : [ "/api/ee/scim/v2" ] } }, - "/api/ee/remote-sync/stash" : { - "post" : { - "operationId" : "post-api-ee-remote-sync-stash", - "summary" : "POST /api/ee/remote-sync/stash", - "description" : "Stashes changes to a new branch, and changes the current branch to it.\n Requires superuser permissions.", + "/api/ee/security-center" : { + "get" : { + "operationId" : "get-api-ee-security-center", + "summary" : "GET /api/ee/security-center", + "description" : "List all security advisories with match status.", "parameters" : [ ], "responses" : { "2XX" : { @@ -27431,18 +30371,100 @@ "schema" : { "type" : "object", "properties" : { - "message" : { - "type" : "string" - }, - "status" : { - "type" : "string" + "advisories" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "published_at" : { + "type" : "string", + "format" : "date-time" + }, + "advisory_url" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + }, + "last_evaluated_at" : { + "oneOf" : [ { + "type" : "string", + "format" : "date-time" + }, { + "type" : "null" + } ] + }, + "match_status" : { + "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.match-status" + }, + "acknowledged_by" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "common_name" : { + "type" : "string", + "minLength" : 1 + }, + "email" : { + "description" : "value must be a valid email address.", + "type" : "string" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "id", "common_name", "email" ] + }, { + "type" : "null" + } ] + }, + "title" : { + "type" : "string", + "minLength" : 1 + }, + "affected_versions" : { + "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.affected-versions" + }, + "remediation" : { + "type" : "string", + "minLength" : 1 + }, + "advisory_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.advisory-id" + }, + "severity" : { + "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.severity" + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "acknowledged_at" : { + "oneOf" : [ { + "type" : "string", + "format" : "date-time" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "advisory_id", "title", "severity", "description", "advisory_url", "remediation", "published_at", "match_status", "last_evaluated_at", "acknowledged_by", "acknowledged_at", "affected_versions" ] + } }, - "task_id" : { - "type" : "integer", - "minimum" : 1 + "last_checked_at" : { + "oneOf" : [ { + "type" : "string", + "format" : "date-time" + }, { + "type" : "null" + } ] } }, - "required" : [ "status", "message", "task_id" ] + "required" : [ "last_checked_at", "advisories" ] } } } @@ -27454,34 +30476,14 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "message" : { - "type" : "string", - "minLength" : 1 - }, - "new_branch" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "new_branch", "message" ] - } - } - } - }, - "tags" : [ "/api/ee/remote-sync" ] + "tags" : [ "/api/ee/security-center" ] } }, - "/api/ee/replacement/check-replace-source" : { + "/api/ee/security-center/acknowledge" : { "post" : { - "operationId" : "post-api-ee-replacement-check-replace-source", - "summary" : "POST /api/ee/replacement/check-replace-source", - "description" : "Check whether a source entity can be replaced by a target entity. Returns compatibility\n errors describing column mismatches, type mismatches, primary key mismatches, and foreign\n key mismatches.", + "operationId" : "post-api-ee-security-center-acknowledge", + "summary" : "POST /api/ee/security-center/acknowledge", + "description" : "Acknowledge multiple security advisories. Skips already-acknowledged advisories.", "parameters" : [ ], "responses" : { "2XX" : { @@ -27489,7 +30491,50 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.check-replace-source-response" + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "acknowledged_at" : { + "oneOf" : [ { + "type" : "string", + "format" : "date-time" + }, { + "type" : "null" + } ] + }, + "acknowledged_by" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "common_name" : { + "type" : "string", + "minLength" : 1 + }, + "email" : { + "description" : "value must be a valid email address.", + "type" : "string" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "id", "common_name", "email" ] + }, { + "type" : "null" + } ] + }, + "advisory_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.advisory-id" + }, + "match_status" : { + "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.match-status" + } + }, + "required" : [ "advisory_id", "match_status", "acknowledged_by", "acknowledged_at" ] + } } } } @@ -27507,32 +30552,27 @@ "schema" : { "type" : "object", "properties" : { - "source_entity_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" - }, - "source_entity_type" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-type" - }, - "target_entity_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" - }, - "target_entity_type" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-type" + "advisory_ids" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } } }, - "required" : [ "source_entity_id", "source_entity_type", "target_entity_id", "target_entity_type" ] + "required" : [ "advisory_ids" ] } } } }, - "tags" : [ "/api/ee/replacement" ] + "tags" : [ "/api/ee/security-center" ] } }, - "/api/ee/replacement/replace-model-with-transform" : { + "/api/ee/security-center/sync" : { "post" : { - "operationId" : "post-api-ee-replacement-replace-model-with-transform", - "summary" : "POST /api/ee/replacement/replace-model-with-transform", - "description" : "Create a transform from a model, execute it, and replace all usages of the model\n with the output table. Un-persists the model and converts it to a saved question.\n Returns 202 with a run_id for polling.\n\n If there is an error during the transform execution, no replacement will be\n performed and the model will remain unchanged.\n\n If there is an error during the source swap, the transform and the output\n table will be retained, and the model will remain unchanged. We cannot delete\n the transform or the output table because they can be used by other queries at\n this point.", + "operationId" : "post-api-ee-security-center-sync", + "summary" : "POST /api/ee/security-center/sync", + "description" : "Trigger an async advisory sync + re-evaluation.\n Returns immediately. If a sync is already running, the request is a no-op.", "parameters" : [ ], "responses" : { "2XX" : { @@ -27542,21 +30582,12 @@ "schema" : { "type" : "object", "properties" : { - "body" : { - "type" : "object", - "properties" : { - "run_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run-id" - } - }, - "required" : [ "run_id" ], - "additionalProperties" : false - }, "status" : { - "const" : 202 + "type" : "string", + "minLength" : 1 } }, - "required" : [ "status", "body" ] + "required" : [ "status" ] } } } @@ -27568,54 +30599,14 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "card_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" - }, - "target_collection_id" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" - }, { - "type" : "null" - } ] - }, - "transform_name" : { - "type" : "string" - }, - "transform_tag_ids" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "type" : "integer", - "minimum" : 1 - } - }, { - "type" : "null" - } ] - }, - "transform_target" : { - "type" : "object", - "properties" : { } - } - }, - "required" : [ "card_id", "transform_name", "transform_target" ] - } - } - } - }, - "tags" : [ "/api/ee/replacement" ] + "tags" : [ "/api/ee/security-center" ] } }, - "/api/ee/replacement/replace-source" : { + "/api/ee/security-center/test-notification" : { "post" : { - "operationId" : "post-api-ee-replacement-replace-source", - "summary" : "POST /api/ee/replacement/replace-source", - "description" : "Replace all usages of a source entity with a target entity asynchronously.\n Returns 202 with a run_id for polling. Returns 409 if a replacement is already running.", + "operationId" : "post-api-ee-security-center-test-notification", + "summary" : "POST /api/ee/security-center/test-notification", + "description" : "Send a test notification through the given Security Center channels.\n\n The request body lets callers pass the unsaved notification config from the\n dialog so the test reflects current form state, not the persisted settings.\n Both fields are optional; when omitted, the saved setting is used.", "parameters" : [ ], "responses" : { "2XX" : { @@ -27625,21 +30616,11 @@ "schema" : { "type" : "object", "properties" : { - "body" : { - "type" : "object", - "properties" : { - "run_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run-id" - } - }, - "required" : [ "run_id" ], - "additionalProperties" : false - }, - "status" : { - "const" : 202 + "success" : { + "type" : "boolean" } }, - "required" : [ "status", "body" ] + "required" : [ "success" ] } } } @@ -27657,113 +30638,43 @@ "schema" : { "type" : "object", "properties" : { - "source_entity_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" - }, - "source_entity_type" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-type" - }, - "target_entity_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-id" + "email_recipients" : { + "oneOf" : [ { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient" + } + }, { + "type" : "null" + } ] }, - "target_entity_type" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.source-entity-type" - } - }, - "required" : [ "source_entity_id", "source_entity_type", "target_entity_id", "target_entity_type" ] - } - } - } - }, - "tags" : [ "/api/ee/replacement" ] - } - }, - "/api/ee/replacement/runs" : { - "get" : { - "operationId" : "get-api-ee-replacement-runs", - "summary" : "GET /api/ee/replacement/runs", - "description" : "List replacement runs, optionally filtered by is-active.", - "parameters" : [ { - "in" : "query", - "name" : "is-active", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run" + "slack_channel" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] } } } } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/replacement" ] - } - }, - "/api/ee/replacement/runs/{id}" : { - "get" : { - "operationId" : "get-api-ee-replacement-runs-id", - "summary" : "GET /api/ee/replacement/runs/{id}", - "description" : "Get the status of a source replacement run.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run-id" - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run" - } - } - } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" } }, - "tags" : [ "/api/ee/replacement" ] + "tags" : [ "/api/ee/security-center" ] } }, - "/api/ee/replacement/runs/{id}/cancel" : { + "/api/ee/security-center/{advisory-id}/acknowledge" : { "post" : { - "operationId" : "post-api-ee-replacement-runs-id-cancel", - "summary" : "POST /api/ee/replacement/runs/{id}/cancel", - "description" : "Cancel a running source replacement.", + "operationId" : "post-api-ee-security-center-advisory-id-acknowledge", + "summary" : "POST /api/ee/security-center/{advisory-id}/acknowledge", + "description" : "Acknowledge a security advisory. Stops repeat notifications.", "parameters" : [ { "in" : "path", - "name" : "id", + "name" : "advisory-id", "required" : true, "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.replacement.schema.run-id" + "type" : "string", + "minLength" : 1 } } ], "responses" : { @@ -27774,11 +30685,45 @@ "schema" : { "type" : "object", "properties" : { - "success" : { - "type" : "boolean" + "acknowledged_at" : { + "oneOf" : [ { + "type" : "string", + "format" : "date-time" + }, { + "type" : "null" + } ] + }, + "acknowledged_by" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "common_name" : { + "type" : "string", + "minLength" : 1 + }, + "email" : { + "description" : "value must be a valid email address.", + "type" : "string" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "id", "common_name", "email" ] + }, { + "type" : "null" + } ] + }, + "advisory_id" : { + "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.advisory-id" + }, + "match_status" : { + "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.match-status" } }, - "required" : [ "success" ] + "required" : [ "advisory_id", "match_status", "acknowledged_by", "acknowledged_at" ] } } } @@ -27790,32 +30735,14 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/replacement" ] + "tags" : [ "/api/ee/security-center" ] } }, - "/api/ee/scim/api_key" : { + "/api/ee/semantic-search/status" : { "get" : { - "operationId" : "get-api-ee-scim-api_key", - "summary" : "GET /api/ee/scim/api_key", - "description" : "Fetch the SCIM API key if one exists. Does *not* return an unmasked key, since we don't have access\n to that after it is created.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/scim" ] - }, - "post" : { - "operationId" : "post-api-ee-scim-api_key", - "summary" : "POST /api/ee/scim/api_key", - "description" : "Create a new SCIM API key, or refresh one that already exists. When called for the first time,\n this is equivalent to enabling SCIM.", + "operationId" : "get-api-ee-semantic-search-status", + "summary" : "GET /api/ee/semantic-search/status", + "description" : "Fetch the indexing status of the currently active semantic search index table.\n\n Returns a map with keys:\n :indexed_count \n :total_est \n\n If no index is active, returns an empty map.", "parameters" : [ ], "responses" : { "2XX" : { @@ -27828,71 +30755,108 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/scim" ] + "tags" : [ "/api/ee/semantic-search" ] } }, - "/api/ee/scim/v2/Groups" : { - "get" : { - "operationId" : "get-api-ee-scim-v2-Groups", - "summary" : "GET /api/ee/scim/v2/Groups", - "description" : "Fetch a list of groups.", + "/api/ee/serialization/export" : { + "post" : { + "operationId" : "post-api-ee-serialization-export", + "summary" : "POST /api/ee/serialization/export", + "description" : "Serialize and retrieve Metabase instance.\n\n Outputs `.tar.gz` file with serialization results and an `export.log` file.\n On error outputs serialization logs directly.", "parameters" : [ { "in" : "query", - "name" : "startIndex", + "name" : "dirname", "required" : false, "schema" : { "oneOf" : [ { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 + "type" : "string" }, { "type" : "null" } ] - } + }, + "description" : "name of directory and archive file (default: `-`)" }, { "in" : "query", - "name" : "count", + "name" : "collection", "required" : false, "schema" : { "oneOf" : [ { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 + "type" : "array", + "items" : { + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "string", + "pattern" : "^.{21}$" + }, { + "type" : "string", + "pattern" : "^eid:.{21}$" + } ] + } }, { "type" : "null" } ] + }, + "description" : "collections' db ids/entity-ids to serialize" + }, { + "in" : "query", + "name" : "all_collections", + "required" : true, + "schema" : { + "default" : true, + "type" : "boolean" } }, { "in" : "query", - "name" : "filter", - "required" : false, + "name" : "settings", + "required" : true, "schema" : { - "oneOf" : [ { - "type" : "string", - "minLength" : 1 - }, { - "type" : "null" - } ] + "default" : true, + "type" : "boolean" } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" + }, { + "in" : "query", + "name" : "data_model", + "required" : true, + "schema" : { + "default" : true, + "type" : "boolean" } - }, - "tags" : [ "/api/ee/scim/v2" ] - }, - "post" : { - "operationId" : "post-api-ee-scim-v2-Groups", - "summary" : "POST /api/ee/scim/v2/Groups", - "description" : "Create a single group, and populates it if necessary.", - "parameters" : [ ], + }, { + "in" : "query", + "name" : "field_values", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "database_secrets", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "continue_on_error", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "full_stacktrace", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + } ], "responses" : { "2XX" : { "description" : "Successful response" @@ -27904,85 +30868,39 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "displayName" : { - "type" : "string", - "minLength" : 1 - }, - "id" : { - "type" : "string", - "minLength" : 1 - }, - "members" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "$ref" : { - "type" : "string", - "minLength" : 1 - }, - "value" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "value" ] - } - }, - "schemas" : { - "type" : "array", - "items" : { - "type" : "string", - "minLength" : 1 - } - } - }, - "required" : [ "schemas", "displayName" ] - } - } - } - }, - "tags" : [ "/api/ee/scim/v2" ] + "tags" : [ "/api/ee/serialization" ] } }, - "/api/ee/scim/v2/Groups/{id}" : { - "get" : { - "operationId" : "get-api-ee-scim-v2-Groups-id", - "summary" : "GET /api/ee/scim/v2/Groups/{id}", - "description" : "Fetch a single group.", + "/api/ee/serialization/import" : { + "post" : { + "operationId" : "post-api-ee-serialization-import", + "summary" : "POST /api/ee/serialization/import", + "description" : "Deserialize Metabase instance from an archive generated by /export.\n\n Parameters:\n - `file`: archive encoded as `multipart/form-data` (required).\n\n Returns logs of deserialization.", "parameters" : [ { - "in" : "path", - "name" : "id", + "in" : "query", + "name" : "continue_on_error", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 + "default" : false, + "type" : "boolean" } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" + }, { + "in" : "query", + "name" : "full_stacktrace", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" } - }, - "tags" : [ "/api/ee/scim/v2" ] - }, - "put" : { - "operationId" : "put-api-ee-scim-v2-Groups-id", - "summary" : "PUT /api/ee/scim/v2/Groups/{id}", - "description" : "Update a group.", - "parameters" : [ ], + }, { + "in" : "query", + "name" : "reindex", + "required" : true, + "schema" : { + "default" : true, + "type" : "boolean" + } + } ], "responses" : { "2XX" : { "description" : "Successful response" @@ -27996,116 +30914,74 @@ }, "requestBody" : { "content" : { - "application/json" : { + "multipart/form-data" : { "schema" : { "type" : "object", "properties" : { - "displayName" : { - "type" : "string", - "minLength" : 1 - }, - "id" : { - "type" : "string", - "minLength" : 1 - }, - "members" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "$ref" : { - "type" : "string", - "minLength" : 1 - }, - "value" : { - "type" : "string", - "minLength" : 1 - } + "file" : { + "description" : ".tgz with serialization data", + "type" : "object", + "properties" : { + "content-type" : { + "type" : "string" }, - "required" : [ "value" ] - } - }, - "schemas" : { - "type" : "array", - "items" : { - "type" : "string", - "minLength" : 1 - } + "filename" : { + "type" : "string" + }, + "size" : { + "type" : "integer" + }, + "tempfile" : { } + }, + "required" : [ "content-type", "filename", "size", "tempfile" ], + "additionalProperties" : false } }, - "required" : [ "schemas", "displayName" ] + "required" : [ "file" ] } } } }, - "tags" : [ "/api/ee/scim/v2" ] - }, - "delete" : { - "operationId" : "delete-api-ee-scim-v2-Groups-id", - "summary" : "DELETE /api/ee/scim/v2/Groups/{id}", - "description" : "Delete a group.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "string", - "minLength" : 1 - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/scim/v2" ] + "tags" : [ "/api/ee/serialization" ] } }, - "/api/ee/scim/v2/Users" : { - "get" : { - "operationId" : "get-api-ee-scim-v2-Users", - "summary" : "GET /api/ee/scim/v2/Users", - "description" : "Fetch a list of users.", + "/api/ee/serialization/metadata/export" : { + "post" : { + "operationId" : "post-api-ee-serialization-metadata-export", + "summary" : "POST /api/ee/serialization/metadata/export", + "description" : "Get warehouse metadata (databases, tables, and fields) for all databases visible to the\n current user. References between rows are emitted as raw numeric ids (`db_id`,\n `table_id`, `parent_id`, `fk_target_field_id`).\n\n Sections must be opted into with the `with-databases`, `with-tables`, and `with-fields`\n query parameters — they all default to `false`. The response is streamed for efficiency\n with large schemas.\n\n Requires `View data` → `Can view` and `Create queries` → `Query builder only` (or\n `Query builder and native`) permissions on each database and table.", "parameters" : [ { "in" : "query", - "name" : "startIndex", - "required" : false, + "name" : "with-databases", + "required" : true, "schema" : { + "default" : false, "oneOf" : [ { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 + "type" : "boolean" }, { "type" : "null" } ] } }, { "in" : "query", - "name" : "count", - "required" : false, + "name" : "with-tables", + "required" : true, "schema" : { + "default" : false, "oneOf" : [ { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 + "type" : "boolean" }, { "type" : "null" } ] } }, { "in" : "query", - "name" : "filter", - "required" : false, + "name" : "with-fields", + "required" : true, "schema" : { + "default" : false, "oneOf" : [ { - "type" : "string", - "minLength" : 1 + "type" : "boolean" }, { "type" : "null" } ] @@ -28113,7 +30989,14 @@ } ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.serialization.schema.export-metadata-response" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -28122,130 +31005,145 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/scim/v2" ] - }, + "tags" : [ "/api/ee/serialization" ] + } + }, + "/api/ee/serialization/metadata/import" : { "post" : { - "operationId" : "post-api-ee-scim-v2-Users", - "summary" : "POST /api/ee/scim/v2/Users", - "description" : "Create a single user.", + "operationId" : "post-api-ee-serialization-metadata-import", + "summary" : "POST /api/ee/serialization/metadata/import", + "description" : "Import warehouse metadata previously emitted by `POST /metadata/export`. The\n request body is the JSON document `{databases, tables, fields}`; sections are\n parsed incrementally so memory stays bounded regardless of payload size.\n\n To bypass the JSON-parsing request middleware, send with `Content-Type:\n application/octet-stream`. Restricted to superusers.\n\n Returns `202` immediately with an `:import-id`; the import runs\n asynchronously. Poll `GET /metadata/import/:id` for its outcome.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "active" : { - "type" : "boolean" - }, - "emails" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "primary" : { - "type" : "boolean" - }, - "type" : { - "type" : "string", - "minLength" : 1 - }, - "value" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "value" ] - } - }, - "groups" : { - "type" : "array", - "items" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "body" : { "type" : "object", "properties" : { - "$ref" : { - "type" : "string", - "minLength" : 1 - }, - "display" : { - "type" : "string", - "minLength" : 1 + "import-id" : { + "type" : "string" }, - "value" : { - "type" : "string", - "minLength" : 1 + "queued" : { + "type" : "boolean" } }, - "required" : [ "value", "display" ] - } - }, - "id" : { - "type" : "string", - "minLength" : 1 - }, - "locale" : { - "oneOf" : [ { - "type" : "string", - "minLength" : 1 - }, { - "type" : "null" - } ] - }, - "name" : { - "type" : "object", - "properties" : { - "familyName" : { - "type" : "string" - }, - "givenName" : { - "type" : "string" - } + "required" : [ "queued", "import-id" ], + "additionalProperties" : false }, - "required" : [ "givenName", "familyName" ] - }, - "schemas" : { - "type" : "array", - "items" : { - "type" : "string", - "minLength" : 1 + "status" : { + "const" : 202 } }, - "userName" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "schemas", "userName", "name", "emails" ] + "required" : [ "status", "body" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/serialization" ] + } + }, + "/api/ee/serialization/metadata/import/{id}" : { + "get" : { + "operationId" : "get-api-ee-serialization-metadata-import-id", + "summary" : "GET /api/ee/serialization/metadata/import/{id}", + "description" : "Status of a metadata import previously started by `POST /metadata/import`.\n Status is retained in-memory and is not durable across server restarts.\n Restricted to superusers.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "description" : "value must be a valid UUID." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.serialization.schema.import-status-response" + } } } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" } }, - "tags" : [ "/api/ee/scim/v2" ] + "tags" : [ "/api/ee/serialization" ] } }, - "/api/ee/scim/v2/Users/{id}" : { + "/api/ee/stale/{id}" : { "get" : { - "operationId" : "get-api-ee-scim-v2-Users-id", - "summary" : "GET /api/ee/scim/v2/Users/{id}", - "description" : "Fetch a single user.", + "operationId" : "get-api-ee-stale-id", + "summary" : "GET /api/ee/stale/{id}", + "description" : "A flexible endpoint that returns stale entities, in the same shape as collections/items, with the following options:\n - `before_date` - only return entities that were last edited before this date (default: 6 months ago)\n - `is_recursive` - if true, return entities from all children of the collection, not just the direct children (default: false)\n - `sort_column` - the column to sort by (default: name)\n - `sort_direction` - the direction to sort by (default: asc)", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "schema" : { + "anyOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "const" : "root" + } ] + } + }, { + "in" : "query", + "name" : "before_date", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "is_recursive", + "required" : true, + "schema" : { + "default" : false, + "type" : "boolean" + } + }, { + "in" : "query", + "name" : "sort_column", + "required" : true, + "schema" : { + "default" : "name", "type" : "string", - "minLength" : 1 + "enum" : [ "name", "last_used_at" ] + } + }, { + "in" : "query", + "name" : "sort_direction", + "required" : true, + "schema" : { + "default" : "asc", + "type" : "string", + "enum" : [ "asc", "desc" ] } } ], "responses" : { @@ -28259,16 +31157,25 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/scim/v2" ] - }, - "put" : { - "operationId" : "put-api-ee-scim-v2-Users-id", - "summary" : "PUT /api/ee/scim/v2/Users/{id}", - "description" : "Update a user.", + "tags" : [ "/api/ee/stale" ] + } + }, + "/api/ee/support-access-grant" : { + "post" : { + "operationId" : "post-api-ee-support-access-grant", + "summary" : "POST /api/ee/support-access-grant", + "description" : "Create a new support access grant.\n\n Requires superuser permissions. Only one active grant can exist at a time.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.grant-response" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -28281,111 +31188,63 @@ "content" : { "application/json" : { "schema" : { - "type" : "object", - "properties" : { - "active" : { - "type" : "boolean" - }, - "emails" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "primary" : { - "type" : "boolean" - }, - "type" : { - "type" : "string", - "minLength" : 1 - }, - "value" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "value" ] - } - }, - "groups" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "$ref" : { - "type" : "string", - "minLength" : 1 - }, - "display" : { - "type" : "string", - "minLength" : 1 - }, - "value" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "value", "display" ] - } - }, - "id" : { - "type" : "string", - "minLength" : 1 - }, - "locale" : { - "oneOf" : [ { - "type" : "string", - "minLength" : 1 - }, { - "type" : "null" - } ] - }, - "name" : { - "type" : "object", - "properties" : { - "familyName" : { - "type" : "string" - }, - "givenName" : { - "type" : "string" - } - }, - "required" : [ "givenName", "familyName" ] - }, - "schemas" : { - "type" : "array", - "items" : { - "type" : "string", - "minLength" : 1 - } - }, - "userName" : { - "type" : "string", - "minLength" : 1 - } - }, - "required" : [ "schemas", "userName", "name", "emails" ] + "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.create-grant-request" } } } }, - "tags" : [ "/api/ee/scim/v2" ] + "tags" : [ "/api/ee/support-access-grant" ] }, - "patch" : { - "operationId" : "patch-api-ee-scim-v2-Users-id", - "summary" : "PATCH /api/ee/scim/v2/Users/{id}", - "description" : "Activate or deactivate a user. Supports specific replace operations, but not arbitrary patches.", + "get" : { + "operationId" : "get-api-ee-support-access-grant", + "summary" : "GET /api/ee/support-access-grant", + "description" : "List support access grants with optional filtering and pagination.\n\n Requires superuser permissions.\n\n Query parameters:\n - ticket-number: Filter by ticket number\n - user-id: Filter by user who created the grant\n - include-revoked: Include revoked grants (default false)", "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, + "in" : "query", + "name" : "ticket-number", + "required" : false, "schema" : { - "type" : "string", - "minLength" : 1 + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "user-id", + "required" : false, + "schema" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "include-revoked", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] } } ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.list-grants-response" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -28394,167 +31253,58 @@ "description" : "Server error response" } }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "Operations" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "op" : { - "type" : "string", - "minLength" : 1 - }, - "value" : { - "anyOf" : [ { - "type" : "object", - "additionalProperties" : { - "anyOf" : [ { - "type" : "string", - "minLength" : 1 - }, { - "type" : "boolean" - } ] - } - }, { - "type" : "string", - "minLength" : 1 - }, { - "type" : "boolean" - } ] - } - }, - "required" : [ "op", "value" ] - } - }, - "schemas" : { - "type" : "array", - "items" : { - "type" : "string", - "minLength" : 1 - } - } - }, - "required" : [ "schemas", "Operations" ] + "tags" : [ "/api/ee/support-access-grant" ] + } + }, + "/api/ee/support-access-grant/current" : { + "get" : { + "operationId" : "get-api-ee-support-access-grant-current", + "summary" : "GET /api/ee/support-access-grant/current", + "description" : "Get the currently active support access grant, if one exists.\n\n Requires superuser permissions.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.current-grant-response" + } } } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" } }, - "tags" : [ "/api/ee/scim/v2" ] + "tags" : [ "/api/ee/support-access-grant" ] } }, - "/api/ee/security-center" : { - "get" : { - "operationId" : "get-api-ee-security-center", - "summary" : "GET /api/ee/security-center", - "description" : "List all security advisories with match status.", - "parameters" : [ ], + "/api/ee/support-access-grant/{id}/revoke" : { + "put" : { + "operationId" : "put-api-ee-support-access-grant-id-revoke", + "summary" : "PUT /api/ee/support-access-grant/{id}/revoke", + "description" : "Revoke an existing support access grant.\n\n Requires superuser permissions. Any admin can revoke any grant.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], "responses" : { "2XX" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { - "type" : "object", - "properties" : { - "advisories" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "published_at" : { - "type" : "string", - "format" : "date-time" - }, - "advisory_url" : { - "oneOf" : [ { - "type" : "string", - "minLength" : 1 - }, { - "type" : "null" - } ] - }, - "last_evaluated_at" : { - "oneOf" : [ { - "type" : "string", - "format" : "date-time" - }, { - "type" : "null" - } ] - }, - "match_status" : { - "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.match-status" - }, - "acknowledged_by" : { - "oneOf" : [ { - "type" : "object", - "properties" : { - "common_name" : { - "type" : "string", - "minLength" : 1 - }, - "email" : { - "description" : "value must be a valid email address.", - "type" : "string" - }, - "id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } - }, - "required" : [ "id", "common_name", "email" ] - }, { - "type" : "null" - } ] - }, - "title" : { - "type" : "string", - "minLength" : 1 - }, - "affected_versions" : { - "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.affected-versions" - }, - "remediation" : { - "type" : "string", - "minLength" : 1 - }, - "advisory_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.advisory-id" - }, - "severity" : { - "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.severity" - }, - "description" : { - "type" : "string", - "minLength" : 1 - }, - "acknowledged_at" : { - "oneOf" : [ { - "type" : "string", - "format" : "date-time" - }, { - "type" : "null" - } ] - } - }, - "required" : [ "advisory_id", "title", "severity", "description", "advisory_url", "remediation", "published_at", "match_status", "last_evaluated_at", "acknowledged_by", "acknowledged_at", "affected_versions" ] - } - }, - "last_checked_at" : { - "oneOf" : [ { - "type" : "string", - "format" : "date-time" - }, { - "type" : "null" - } ] - } - }, - "required" : [ "last_checked_at", "advisories" ] + "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.grant-response" } } } @@ -28566,14 +31316,14 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/security-center" ] + "tags" : [ "/api/ee/support-access-grant" ] } }, - "/api/ee/security-center/acknowledge" : { + "/api/ee/tenant" : { "post" : { - "operationId" : "post-api-ee-security-center-acknowledge", - "summary" : "POST /api/ee/security-center/acknowledge", - "description" : "Acknowledge multiple security advisories. Skips already-acknowledged advisories.", + "operationId" : "post-api-ee-tenant", + "summary" : "POST /api/ee/tenant", + "description" : "Create a new Tenant", "parameters" : [ ], "responses" : { "2XX" : { @@ -28581,50 +31331,47 @@ "content" : { "application/json" : { "schema" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "acknowledged_at" : { - "oneOf" : [ { - "type" : "string", - "format" : "date-time" - }, { - "type" : "null" - } ] - }, - "acknowledged_by" : { - "oneOf" : [ { - "type" : "object", - "properties" : { - "common_name" : { - "type" : "string", - "minLength" : 1 - }, - "email" : { - "description" : "value must be a valid email address.", - "type" : "string" - }, - "id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } - }, - "required" : [ "id", "common_name", "email" ] - }, { - "type" : "null" - } ] - }, - "advisory_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.advisory-id" - }, - "match_status" : { - "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.match-status" - } + "type" : "object", + "properties" : { + "attributes" : { + "oneOf" : [ { + "type" : "object", + "additionalProperties" : { + "type" : "string" + } + }, { + "type" : "null" + } ] }, - "required" : [ "advisory_id", "match_status", "acknowledged_by", "acknowledged_at" ] - } + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "is_active" : { + "type" : "boolean" + }, + "member_count" : { + "description" : "value must be an integer.", + "type" : "integer" + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "slug" : { + "description" : "invalid slug", + "type" : "string", + "pattern" : "^[-_a-z0-9]{1,255}$" + }, + "tenant_collection_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "id", "name", "slug", "is_active", "member_count", "attributes", "tenant_collection_id" ], + "additionalProperties" : false } } } @@ -28642,28 +31389,46 @@ "schema" : { "type" : "object", "properties" : { - "advisory_ids" : { - "type" : "array", - "items" : { - "type" : "string", - "minLength" : 1 - } + "attributes" : { + "oneOf" : [ { + "type" : "object", + "additionalProperties" : { } + }, { + "type" : "null" + } ] + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "slug" : { + "description" : "invalid slug", + "type" : "string", + "pattern" : "^[-_a-z0-9]{1,255}$" } }, - "required" : [ "advisory_ids" ] + "required" : [ "name", "slug" ], + "additionalProperties" : false } } } }, - "tags" : [ "/api/ee/security-center" ] - } - }, - "/api/ee/security-center/sync" : { - "post" : { - "operationId" : "post-api-ee-security-center-sync", - "summary" : "POST /api/ee/security-center/sync", - "description" : "Trigger an async advisory sync + re-evaluation.\n Returns immediately. If a sync is already running, the request is a no-op.", - "parameters" : [ ], + "tags" : [ "/api/ee/tenant" ] + }, + "get" : { + "operationId" : "get-api-ee-tenant", + "summary" : "GET /api/ee/tenant", + "description" : "Get all tenants", + "parameters" : [ { + "in" : "query", + "name" : "status", + "required" : true, + "schema" : { + "default" : "all", + "type" : "string", + "enum" : [ "all", "deactivated", "active" ] + } + } ], "responses" : { "2XX" : { "description" : "Successful response", @@ -28672,12 +31437,55 @@ "schema" : { "type" : "object", "properties" : { - "status" : { - "type" : "string", - "minLength" : 1 + "data" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "attributes" : { + "oneOf" : [ { + "type" : "object", + "additionalProperties" : { + "type" : "string" + } + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "is_active" : { + "type" : "boolean" + }, + "member_count" : { + "description" : "value must be an integer.", + "type" : "integer" + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "slug" : { + "description" : "invalid slug", + "type" : "string", + "pattern" : "^[-_a-z0-9]{1,255}$" + }, + "tenant_collection_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "required" : [ "id", "name", "slug", "is_active", "member_count", "attributes", "tenant_collection_id" ], + "additionalProperties" : false + } } }, - "required" : [ "status" ] + "required" : [ "data" ], + "additionalProperties" : false } } } @@ -28689,15 +31497,24 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/security-center" ] + "tags" : [ "/api/ee/tenant" ] } }, - "/api/ee/security-center/test-notification" : { - "post" : { - "operationId" : "post-api-ee-security-center-test-notification", - "summary" : "POST /api/ee/security-center/test-notification", - "description" : "Send a test notification through the configured Security Center channels.", - "parameters" : [ ], + "/api/ee/tenant/{id}" : { + "put" : { + "operationId" : "put-api-ee-tenant-id", + "summary" : "PUT /api/ee/tenant/{id}", + "description" : "Update a tenant, can set name, attributes, or whether this tenant is active.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], "responses" : { "2XX" : { "description" : "Successful response", @@ -28706,11 +31523,45 @@ "schema" : { "type" : "object", "properties" : { - "success" : { + "attributes" : { + "oneOf" : [ { + "type" : "object", + "additionalProperties" : { + "type" : "string" + } + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "is_active" : { "type" : "boolean" + }, + "member_count" : { + "description" : "value must be an integer.", + "type" : "integer" + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "slug" : { + "description" : "invalid slug", + "type" : "string", + "pattern" : "^[-_a-z0-9]{1,255}$" + }, + "tenant_collection_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 } }, - "required" : [ "success" ] + "required" : [ "id", "name", "slug", "is_active", "member_count", "attributes", "tenant_collection_id" ], + "additionalProperties" : false } } } @@ -28722,22 +31573,56 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/security-center" ] - } - }, - "/api/ee/security-center/{advisory-id}/acknowledge" : { - "post" : { - "operationId" : "post-api-ee-security-center-advisory-id-acknowledge", - "summary" : "POST /api/ee/security-center/{advisory-id}/acknowledge", - "description" : "Acknowledge a security advisory. Stops repeat notifications.", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "attributes" : { + "oneOf" : [ { + "type" : "object", + "additionalProperties" : { } + }, { + "type" : "null" + } ] + }, + "is_active" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + }, + "name" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + } + }, + "additionalProperties" : false + } + } + } + }, + "tags" : [ "/api/ee/tenant" ] + }, + "get" : { + "operationId" : "get-api-ee-tenant-id", + "summary" : "GET /api/ee/tenant/{id}", + "description" : "Get info about a tenant", "parameters" : [ { "in" : "path", - "name" : "advisory-id", + "name" : "id", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." } ], "responses" : { "2XX" : { @@ -28747,45 +31632,45 @@ "schema" : { "type" : "object", "properties" : { - "acknowledged_at" : { - "oneOf" : [ { - "type" : "string", - "format" : "date-time" - }, { - "type" : "null" - } ] - }, - "acknowledged_by" : { + "attributes" : { "oneOf" : [ { "type" : "object", - "properties" : { - "common_name" : { - "type" : "string", - "minLength" : 1 - }, - "email" : { - "description" : "value must be a valid email address.", - "type" : "string" - }, - "id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } - }, - "required" : [ "id", "common_name", "email" ] + "additionalProperties" : { + "type" : "string" + } }, { "type" : "null" } ] }, - "advisory_id" : { - "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.advisory-id" + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, - "match_status" : { - "$ref" : "#/components/schemas/metabase-enterprise.security-center.schema.match-status" + "is_active" : { + "type" : "boolean" + }, + "member_count" : { + "description" : "value must be an integer.", + "type" : "integer" + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "slug" : { + "description" : "invalid slug", + "type" : "string", + "pattern" : "^[-_a-z0-9]{1,255}$" + }, + "tenant_collection_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 } }, - "required" : [ "advisory_id", "match_status", "acknowledged_by", "acknowledged_at" ] + "required" : [ "id", "name", "slug", "is_active", "member_count", "attributes", "tenant_collection_id" ], + "additionalProperties" : false } } } @@ -28797,15 +31682,23 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/security-center" ] + "tags" : [ "/api/ee/tenant" ] } }, - "/api/ee/semantic-search/status" : { + "/api/ee/transforms-python/library/{path}" : { "get" : { - "operationId" : "get-api-ee-semantic-search-status", - "summary" : "GET /api/ee/semantic-search/status", - "description" : "Fetch the indexing status of the currently active semantic search index table.\n\n Returns a map with keys:\n :indexed_count \n :total_est \n\n If no index is active, returns an empty map.", - "parameters" : [ ], + "operationId" : "get-api-ee-transforms-python-library-path", + "summary" : "GET /api/ee/transforms-python/library/{path}", + "description" : "Get the Python library for user modules.", + "parameters" : [ { + "in" : "path", + "name" : "path", + "required" : true, + "schema" : { + "type" : "string", + "minLength" : 1 + } + } ], "responses" : { "2XX" : { "description" : "Successful response" @@ -28817,111 +31710,228 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/semantic-search" ] - } - }, - "/api/ee/serialization/export" : { - "post" : { - "operationId" : "post-api-ee-serialization-export", - "summary" : "POST /api/ee/serialization/export", - "description" : "Serialize and retrieve Metabase instance.\n\n Outputs `.tar.gz` file with serialization results and an `export.log` file.\n On error outputs serialization logs directly.", + "tags" : [ "/api/ee/transforms-python" ] + }, + "put" : { + "operationId" : "put-api-ee-transforms-python-library-path", + "summary" : "PUT /api/ee/transforms-python/library/{path}", + "description" : "Update the Python library source code for user modules.", "parameters" : [ { - "in" : "query", - "name" : "dirname", - "required" : false, + "in" : "path", + "name" : "path", + "required" : true, "schema" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] + "type" : "string", + "minLength" : 1 + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" }, - "description" : "name of directory and archive file (default: `-`)" - }, { - "in" : "query", - "name" : "collection", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "array", - "items" : { - "anyOf" : [ { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, { - "type" : "string", - "pattern" : "^.{21}$" - }, { - "type" : "string", - "pattern" : "^eid:.{21}$" - } ] - } - }, { - "type" : "null" - } ] + "4XX" : { + "description" : "Client error response" }, - "description" : "collections' db ids/entity-ids to serialize" - }, { - "in" : "query", - "name" : "all_collections", - "required" : true, - "schema" : { - "default" : true, - "type" : "boolean" + "5XX" : { + "description" : "Server error response" } - }, { - "in" : "query", - "name" : "settings", - "required" : true, - "schema" : { - "default" : true, - "type" : "boolean" + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "source" : { + "type" : "string" + } + }, + "required" : [ "source" ], + "additionalProperties" : false + } + } } - }, { - "in" : "query", - "name" : "data_model", - "required" : true, - "schema" : { - "default" : true, - "type" : "boolean" + }, + "tags" : [ "/api/ee/transforms-python" ] + } + }, + "/api/ee/transforms-python/test-run" : { + "post" : { + "operationId" : "post-api-ee-transforms-python-test-run", + "summary" : "POST /api/ee/transforms-python/test-run", + "description" : "Evaluate an ad-hoc python transform on a sample of input data.\n Intended for short runs for early feedback. Input/output/timeout limits apply.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "error" : { + "type" : "object", + "properties" : { + "message" : { + "anyOf" : [ { }, { } ] + } + }, + "required" : [ "message" ] + }, + "logs" : { + "type" : "string" + }, + "output" : { + "type" : "object", + "properties" : { + "cols" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string" + } + }, + "required" : [ "name" ] + } + }, + "rows" : { + "type" : "array", + "items" : { } + } + }, + "required" : [ "cols", "rows" ] + } + }, + "required" : [ "logs" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" } - }, { - "in" : "query", - "name" : "field_values", - "required" : true, - "schema" : { - "default" : false, - "type" : "boolean" + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "code" : { + "type" : "string" + }, + "output_row_limit" : { + "allOf" : [ { + "type" : "integer" + }, { + "type" : "number", + "exclusiveMinimum" : 1 + }, { + "type" : "number", + "maximum" : 100 + } ] + }, + "per_input_row_limit" : { + "allOf" : [ { + "type" : "integer" + }, { + "type" : "number", + "exclusiveMinimum" : 1 + }, { + "type" : "number", + "maximum" : 100 + } ] + }, + "source_tables" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/metabase.transforms-base.util.source-table-entry" + }, + "minItems" : 1 + } + }, + "required" : [ "code", "source_tables" ] + } + } } - }, { - "in" : "query", - "name" : "database_secrets", + }, + "tags" : [ "/api/ee/transforms-python" ] + } + }, + "/api/ee/transforms/{id}/inspect" : { + "get" : { + "operationId" : "get-api-ee-transforms-id-inspect", + "summary" : "GET /api/ee/transforms/{id}/inspect", + "description" : "Phase 1: Discover available lenses for a transform.\n Returns structural metadata and available lens types.", + "parameters" : [ { + "in" : "path", + "name" : "id", "required" : true, "schema" : { - "default" : false, - "type" : "boolean" + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.transforms-inspector.schema.discovery-response" + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" } - }, { - "in" : "query", - "name" : "continue_on_error", + }, + "tags" : [ "/api/ee/transforms" ] + } + }, + "/api/ee/transforms/{id}/inspect/{lens-id}" : { + "get" : { + "operationId" : "get-api-ee-transforms-id-inspect-lens-id", + "summary" : "GET /api/ee/transforms/{id}/inspect/{lens-id}", + "description" : "Phase 2: Get full lens contents for a transform.\n Returns sections, cards with dataset_query, and trigger definitions.\n Accepts optional params for drill lenses as query params.", + "parameters" : [ { + "in" : "path", + "name" : "id", "required" : true, "schema" : { - "default" : false, - "type" : "boolean" - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." }, { - "in" : "query", - "name" : "full_stacktrace", + "in" : "path", + "name" : "lens-id", "required" : true, "schema" : { - "default" : false, - "type" : "boolean" + "type" : "string", + "minLength" : 1 } } ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.transforms-inspector.schema.lens" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -28930,42 +31940,42 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/serialization" ] + "tags" : [ "/api/ee/transforms" ] } }, - "/api/ee/serialization/import" : { + "/api/ee/transforms/{id}/inspect/{lens-id}/query" : { "post" : { - "operationId" : "post-api-ee-serialization-import", - "summary" : "POST /api/ee/serialization/import", - "description" : "Deserialize Metabase instance from an archive generated by /export.\n\n Parameters:\n - `file`: archive encoded as `multipart/form-data` (required).\n\n Returns logs of deserialization.", + "operationId" : "post-api-ee-transforms-id-inspect-lens-id-query", + "summary" : "POST /api/ee/transforms/{id}/inspect/{lens-id}/query", + "description" : "Execute a query in the context of a transform inspector lens.", "parameters" : [ { - "in" : "query", - "name" : "continue_on_error", - "required" : true, - "schema" : { - "default" : false, - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "full_stacktrace", + "in" : "path", + "name" : "id", "required" : true, "schema" : { - "default" : false, - "type" : "boolean" - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." }, { - "in" : "query", - "name" : "reindex", + "in" : "path", + "name" : "lens-id", "required" : true, "schema" : { - "default" : true, - "type" : "boolean" + "type" : "string", + "minLength" : 1 } } ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase.query-processor.schema.query-result" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -28976,92 +31986,85 @@ }, "requestBody" : { "content" : { - "multipart/form-data" : { + "application/json" : { "schema" : { "type" : "object", "properties" : { - "file" : { - "description" : ".tgz with serialization data", + "lens_params" : { + "oneOf" : [ { + "type" : "object", + "additionalProperties" : { } + }, { + "type" : "null" + } ] + }, + "query" : { "type" : "object", "properties" : { - "content-type" : { - "type" : "string" - }, - "filename" : { - "type" : "string" - }, - "size" : { - "type" : "integer" - }, - "tempfile" : { } - }, - "required" : [ "content-type", "filename", "size", "tempfile" ], - "additionalProperties" : false + "database" : { + "oneOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + } + } } }, - "required" : [ "file" ] + "required" : [ "query" ] } } } }, - "tags" : [ "/api/ee/serialization" ] + "tags" : [ "/api/ee/transforms" ] } }, - "/api/ee/stale/{id}" : { + "/api/ee/upload-management/tables" : { "get" : { - "operationId" : "get-api-ee-stale-id", - "summary" : "GET /api/ee/stale/{id}", - "description" : "A flexible endpoint that returns stale entities, in the same shape as collections/items, with the following options:\n - `before_date` - only return entities that were last edited before this date (default: 6 months ago)\n - `is_recursive` - if true, return entities from all children of the collection, not just the direct children (default: false)\n - `sort_column` - the column to sort by (default: name)\n - `sort_direction` - the direction to sort by (default: asc)", + "operationId" : "get-api-ee-upload-management-tables", + "summary" : "GET /api/ee/upload-management/tables", + "description" : "Get all `Tables` visible to the current user which were created by uploading a file.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/upload-management" ] + } + }, + "/api/ee/upload-management/tables/{id}" : { + "delete" : { + "operationId" : "delete-api-ee-upload-management-tables-id", + "summary" : "DELETE /api/ee/upload-management/tables/{id}", + "description" : "Delete the uploaded table from the database, optionally archiving cards for which it is the primary source.", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "schema" : { - "anyOf" : [ { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, { - "const" : "root" - } ] - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." }, { "in" : "query", - "name" : "before_date", + "name" : "archive-cards", "required" : false, "schema" : { + "default" : false, "oneOf" : [ { - "type" : "string" + "type" : "boolean" }, { "type" : "null" } ] } - }, { - "in" : "query", - "name" : "is_recursive", - "required" : true, - "schema" : { - "default" : false, - "type" : "boolean" - } - }, { - "in" : "query", - "name" : "sort_column", - "required" : true, - "schema" : { - "default" : "name", - "type" : "string", - "enum" : [ "name", "last_used_at" ] - } - }, { - "in" : "query", - "name" : "sort_direction", - "required" : true, - "schema" : { - "default" : "asc", - "type" : "string", - "enum" : [ "asc", "desc" ] - } } ], "responses" : { "2XX" : { @@ -29074,14 +32077,93 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/stale" ] + "tags" : [ "/api/ee/upload-management" ] } }, - "/api/ee/support-access-grant" : { + "/api/ee/workspace-instance/current" : { + "get" : { + "operationId" : "get-api-ee-workspace-instance-current", + "summary" : "GET /api/ee/workspace-instance/current", + "description" : "Read-only summary of the workspace loaded on this instance, wrapped in a\n `{:data ...}` envelope.\n\n Reads from the `instance-workspace` setting populated at boot by the `:workspace`\n section of `config.yml`, or at runtime by `POST /current`. `:data` is `null`\n when no workspace was loaded — i.e. this is a manager-only instance, or no\n `config.yml` was present at boot and `POST /current` hasn't been called.\n The envelope avoids an empty JSON body for the `nil` case.\n\n The workspace's `can_write` flag is `false` when it was set by deployment\n config (`config.yml` or `MB_INSTANCE_WORKSPACE`); `POST`/`DELETE` are rejected\n in that case.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "data" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "can_write" : { + "type" : "boolean" + }, + "databases" : { + "type" : "object", + "additionalProperties" : { + "type" : "object", + "properties" : { + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "output" : { + "type" : "object", + "properties" : { + "db" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + } + } + }, + "required" : [ "input_schemas", "output" ] + } + }, + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "name", "databases", "can_write" ] + }, { + "type" : "null" + } ] + } + }, + "required" : [ "data" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/ee/workspace-instance" ] + }, "post" : { - "operationId" : "post-api-ee-support-access-grant", - "summary" : "POST /api/ee/support-access-grant", - "description" : "Create a new support access grant.\n\n Requires superuser permissions. Only one active grant can exist at a time.", + "operationId" : "post-api-ee-workspace-instance-current", + "summary" : "POST /api/ee/workspace-instance/current", + "description" : "Install a workspace config on this instance at runtime. Accepts the same shape\n `GET /current` returns and persists it via the `instance-workspace` setting so\n it survives restarts. Use this on a running instance to enter workspace mode\n without restarting from `config.yml`.\n\n Returns 400 if the workspace was set by deployment config (`config.yml` or\n `MB_INSTANCE_WORKSPACE`) and so is read-only.", "parameters" : [ ], "responses" : { "2XX" : { @@ -29089,7 +32171,51 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.grant-response" + "type" : "object", + "properties" : { + "can_write" : { + "type" : "boolean" + }, + "databases" : { + "type" : "object", + "additionalProperties" : { + "type" : "object", + "properties" : { + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "output" : { + "type" : "object", + "properties" : { + "db" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + } + } + }, + "required" : [ "input_schemas", "output" ] + } + }, + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "name", "databases", "can_write" ] } } } @@ -29105,60 +32231,25 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.create-grant-request" + "$ref" : "#/components/schemas/metabase.workspaces.core.workspace-instance-config" } } } }, - "tags" : [ "/api/ee/support-access-grant" ] + "tags" : [ "/api/ee/workspace-instance" ] }, - "get" : { - "operationId" : "get-api-ee-support-access-grant", - "summary" : "GET /api/ee/support-access-grant", - "description" : "List support access grants with optional filtering and pagination.\n\n Requires superuser permissions.\n\n Query parameters:\n - ticket-number: Filter by ticket number\n - user-id: Filter by user who created the grant\n - include-revoked: Include revoked grants (default false)", - "parameters" : [ { - "in" : "query", - "name" : "ticket-number", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - } - }, { - "in" : "query", - "name" : "user-id", - "required" : false, - "schema" : { - "oneOf" : [ { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, { - "type" : "null" - } ] - } - }, { - "in" : "query", - "name" : "include-revoked", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - } ], + "delete" : { + "operationId" : "delete-api-ee-workspace-instance-current", + "summary" : "DELETE /api/ee/workspace-instance/current", + "description" : "Clear the workspace config on this instance. After this returns, the instance\n is no longer in workspace mode and `GET /current` returns `nil`. Also drops\n every `TableRemapping` row, since stale mappings from the prior workspace\n would otherwise keep rewriting queries on the now-unmanaged databases.\n\n Returns 400 if the workspace was set by deployment config (`config.yml` or\n `MB_INSTANCE_WORKSPACE`) and so is read-only.", + "parameters" : [ ], "responses" : { "2XX" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.list-grants-response" + "type" : "null" } } } @@ -29170,14 +32261,14 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/support-access-grant" ] + "tags" : [ "/api/ee/workspace-instance" ] } }, - "/api/ee/support-access-grant/current" : { + "/api/ee/workspace-instance/table-remappings" : { "get" : { - "operationId" : "get-api-ee-support-access-grant-current", - "summary" : "GET /api/ee/support-access-grant/current", - "description" : "Get the currently active support access grant, if one exists.\n\n Requires superuser permissions.", + "operationId" : "get-api-ee-workspace-instance-table-remappings", + "summary" : "GET /api/ee/workspace-instance/table-remappings", + "description" : "Return all table remappings, ordered by id.", "parameters" : [ ], "responses" : { "2XX" : { @@ -29185,7 +32276,58 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.current-grant-response" + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "from_db" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "to_table_name" : { + "type" : "string", + "minLength" : 1 + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "to_db" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "created_at" : { }, + "from_schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "from_table_name" : { + "type" : "string", + "minLength" : 1 + }, + "to_schema" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "database_id", "from_db", "from_schema", "from_table_name", "to_db", "to_schema", "to_table_name", "created_at" ] + } } } } @@ -29197,31 +32339,112 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/support-access-grant" ] + "tags" : [ "/api/ee/workspace-instance" ] } }, - "/api/ee/support-access-grant/{id}/revoke" : { - "put" : { - "operationId" : "put-api-ee-support-access-grant-id-revoke", - "summary" : "PUT /api/ee/support-access-grant/{id}/revoke", - "description" : "Revoke an existing support access grant.\n\n Requires superuser permissions. Any admin can revoke any grant.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - } ], + "/api/ee/workspace-manager" : { + "get" : { + "operationId" : "get-api-ee-workspace-manager", + "summary" : "GET /api/ee/workspace-manager", + "description" : "List all Workspaces.", + "parameters" : [ ], "responses" : { "2XX" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.support-access-grants.schema.grant-response" + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "created_at" : { + "anyOf" : [ { }, { } ] + }, + "creator" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "common_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "first_name", "last_name", "email" ], + "additionalProperties" : false + }, { + "type" : "null" + } ] + }, + "databases" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "output_namespace" : { + "type" : "string" + }, + "status" : { + "type" : "string", + "enum" : [ "unprovisioned", "provisioning", "provisioned", "deprovisioning" ] + } + }, + "required" : [ "database_id", "input_schemas", "output_namespace", "status" ], + "additionalProperties" : false + } + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "updated_at" : { + "anyOf" : [ { }, { } ] + } + }, + "required" : [ "id", "name", "creator", "created_at", "updated_at" ], + "additionalProperties" : false + } } } } @@ -29233,14 +32456,12 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/support-access-grant" ] - } - }, - "/api/ee/tenant" : { + "tags" : [ "/api/ee/workspace-manager" ] + }, "post" : { - "operationId" : "post-api-ee-tenant", - "summary" : "POST /api/ee/tenant", - "description" : "Create a new Tenant", + "operationId" : "post-api-ee-workspace-manager", + "summary" : "POST /api/ee/workspace-manager", + "description" : "Create a new Workspace (name only, no databases).", "parameters" : [ ], "responses" : { "2XX" : { @@ -29250,44 +32471,91 @@ "schema" : { "type" : "object", "properties" : { - "attributes" : { + "created_at" : { + "anyOf" : [ { }, { } ] + }, + "creator" : { "oneOf" : [ { "type" : "object", - "additionalProperties" : { - "type" : "string" - } + "properties" : { + "common_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "first_name", "last_name", "email" ], + "additionalProperties" : false }, { "type" : "null" } ] }, + "databases" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "output_namespace" : { + "type" : "string" + }, + "status" : { + "type" : "string", + "enum" : [ "unprovisioned", "provisioning", "provisioned", "deprovisioning" ] + } + }, + "required" : [ "database_id", "input_schemas", "output_namespace", "status" ], + "additionalProperties" : false + } + }, "id" : { "description" : "value must be an integer greater than zero.", "type" : "integer", "minimum" : 1 }, - "is_active" : { - "type" : "boolean" - }, - "member_count" : { - "description" : "value must be an integer.", - "type" : "integer" - }, "name" : { "type" : "string", "minLength" : 1 }, - "slug" : { - "description" : "invalid slug", - "type" : "string", - "pattern" : "^[-_a-z0-9]{1,255}$" - }, - "tenant_collection_id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 + "updated_at" : { + "anyOf" : [ { }, { } ] } }, - "required" : [ "id", "name", "slug", "is_active", "member_count", "attributes", "tenant_collection_id" ], + "required" : [ "id", "name", "creator", "created_at", "updated_at" ], "additionalProperties" : false } } @@ -29306,45 +32574,34 @@ "schema" : { "type" : "object", "properties" : { - "attributes" : { - "oneOf" : [ { - "type" : "object", - "additionalProperties" : { } - }, { - "type" : "null" - } ] - }, "name" : { "type" : "string", "minLength" : 1 - }, - "slug" : { - "description" : "invalid slug", - "type" : "string", - "pattern" : "^[-_a-z0-9]{1,255}$" } }, - "required" : [ "name", "slug" ], + "required" : [ "name" ], "additionalProperties" : false } } } }, - "tags" : [ "/api/ee/tenant" ] - }, + "tags" : [ "/api/ee/workspace-manager" ] + } + }, + "/api/ee/workspace-manager/{id}" : { "get" : { - "operationId" : "get-api-ee-tenant", - "summary" : "GET /api/ee/tenant", - "description" : "Get all tenants", + "operationId" : "get-api-ee-workspace-manager-id", + "summary" : "GET /api/ee/workspace-manager/{id}", + "description" : "Get a single Workspace by id.", "parameters" : [ { - "in" : "query", - "name" : "status", + "in" : "path", + "name" : "id", "required" : true, "schema" : { - "default" : "all", - "type" : "string", - "enum" : [ "all", "deactivated", "active" ] - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." } ], "responses" : { "2XX" : { @@ -29354,17 +32611,27 @@ "schema" : { "type" : "object", "properties" : { - "data" : { - "type" : "array", - "items" : { + "created_at" : { + "anyOf" : [ { }, { } ] + }, + "creator" : { + "oneOf" : [ { "type" : "object", "properties" : { - "attributes" : { + "common_name" : { "oneOf" : [ { - "type" : "object", - "additionalProperties" : { - "type" : "string" - } + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" }, { "type" : "null" } ] @@ -29374,34 +32641,61 @@ "type" : "integer", "minimum" : 1 }, - "is_active" : { - "type" : "boolean" + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "first_name", "last_name", "email" ], + "additionalProperties" : false + }, { + "type" : "null" + } ] + }, + "databases" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" }, - "member_count" : { - "description" : "value must be an integer.", - "type" : "integer" + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } }, - "name" : { - "type" : "string", - "minLength" : 1 + "output_namespace" : { + "type" : "string" }, - "slug" : { - "description" : "invalid slug", + "status" : { "type" : "string", - "pattern" : "^[-_a-z0-9]{1,255}$" - }, - "tenant_collection_id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 + "enum" : [ "unprovisioned", "provisioning", "provisioned", "deprovisioning" ] } }, - "required" : [ "id", "name", "slug", "is_active", "member_count", "attributes", "tenant_collection_id" ], + "required" : [ "database_id", "input_schemas", "output_namespace", "status" ], "additionalProperties" : false } + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "updated_at" : { + "anyOf" : [ { }, { } ] } }, - "required" : [ "data" ], + "required" : [ "id", "name", "creator", "created_at", "updated_at" ], "additionalProperties" : false } } @@ -29414,14 +32708,12 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/tenant" ] - } - }, - "/api/ee/tenant/{id}" : { + "tags" : [ "/api/ee/workspace-manager" ] + }, "put" : { - "operationId" : "put-api-ee-tenant-id", - "summary" : "PUT /api/ee/tenant/{id}", - "description" : "Update a tenant, can set name, attributes, or whether this tenant is active.", + "operationId" : "put-api-ee-workspace-manager-id", + "summary" : "PUT /api/ee/workspace-manager/{id}", + "description" : "Update a workspace's name.", "parameters" : [ { "in" : "path", "name" : "id", @@ -29440,44 +32732,91 @@ "schema" : { "type" : "object", "properties" : { - "attributes" : { + "created_at" : { + "anyOf" : [ { }, { } ] + }, + "creator" : { "oneOf" : [ { "type" : "object", - "additionalProperties" : { - "type" : "string" - } + "properties" : { + "common_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "first_name", "last_name", "email" ], + "additionalProperties" : false }, { "type" : "null" } ] }, + "databases" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "output_namespace" : { + "type" : "string" + }, + "status" : { + "type" : "string", + "enum" : [ "unprovisioned", "provisioning", "provisioned", "deprovisioning" ] + } + }, + "required" : [ "database_id", "input_schemas", "output_namespace", "status" ], + "additionalProperties" : false + } + }, "id" : { "description" : "value must be an integer greater than zero.", "type" : "integer", "minimum" : 1 }, - "is_active" : { - "type" : "boolean" - }, - "member_count" : { - "description" : "value must be an integer.", - "type" : "integer" - }, "name" : { "type" : "string", "minLength" : 1 }, - "slug" : { - "description" : "invalid slug", - "type" : "string", - "pattern" : "^[-_a-z0-9]{1,255}$" - }, - "tenant_collection_id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 + "updated_at" : { + "anyOf" : [ { }, { } ] } }, - "required" : [ "id", "name", "slug", "is_active", "member_count", "attributes", "tenant_collection_id" ], + "required" : [ "id", "name", "creator", "created_at", "updated_at" ], "additionalProperties" : false } } @@ -29496,28 +32835,9 @@ "schema" : { "type" : "object", "properties" : { - "attributes" : { - "oneOf" : [ { - "type" : "object", - "additionalProperties" : { } - }, { - "type" : "null" - } ] - }, - "is_active" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - }, "name" : { - "oneOf" : [ { - "type" : "string", - "minLength" : 1 - }, { - "type" : "null" - } ] + "type" : "string", + "minLength" : 1 } }, "additionalProperties" : false @@ -29525,12 +32845,12 @@ } } }, - "tags" : [ "/api/ee/tenant" ] + "tags" : [ "/api/ee/workspace-manager" ] }, - "get" : { - "operationId" : "get-api-ee-tenant-id", - "summary" : "GET /api/ee/tenant/{id}", - "description" : "Get info about a tenant", + "delete" : { + "operationId" : "delete-api-ee-workspace-manager-id", + "summary" : "DELETE /api/ee/workspace-manager/{id}", + "description" : "Delete a Workspace. Deprovisions all databases first (blocking).", "parameters" : [ { "in" : "path", "name" : "id", @@ -29549,45 +32869,16 @@ "schema" : { "type" : "object", "properties" : { - "attributes" : { - "oneOf" : [ { - "type" : "object", - "additionalProperties" : { - "type" : "string" - } - }, { - "type" : "null" - } ] - }, - "id" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - }, - "is_active" : { + "deleted" : { "type" : "boolean" }, - "member_count" : { - "description" : "value must be an integer.", - "type" : "integer" - }, - "name" : { - "type" : "string", - "minLength" : 1 - }, - "slug" : { - "description" : "invalid slug", - "type" : "string", - "pattern" : "^[-_a-z0-9]{1,255}$" - }, - "tenant_collection_id" : { + "id" : { "description" : "value must be an integer greater than zero.", "type" : "integer", "minimum" : 1 } }, - "required" : [ "id", "name", "slug", "is_active", "member_count", "attributes", "tenant_collection_id" ], - "additionalProperties" : false + "required" : [ "id", "deleted" ] } } } @@ -29599,26 +32890,49 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/tenant" ] + "tags" : [ "/api/ee/workspace-manager" ] } }, - "/api/ee/transforms-python/library/{path}" : { + "/api/ee/workspace-manager/{id}/config" : { "get" : { - "operationId" : "get-api-ee-transforms-python-library-path", - "summary" : "GET /api/ee/transforms-python/library/{path}", - "description" : "Get the Python library for user modules.", + "operationId" : "get-api-ee-workspace-manager-id-config", + "summary" : "GET /api/ee/workspace-manager/{id}/config", + "description" : "Download the workspace's developer-instance config as a YAML file. 409 if any\n of the workspace's databases is not `:provisioned`.", "parameters" : [ { "in" : "path", - "name" : "path", + "name" : "id", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." } ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "body" : { + "type" : "string" + }, + "headers" : { + "type" : "object", + "additionalProperties" : { + "type" : "string" + } + }, + "status" : { + "const" : 200 + } + }, + "required" : [ "status", "headers", "body" ] + } + } + } }, "4XX" : { "description" : "Client error response" @@ -29627,57 +32941,24 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/transforms-python" ] - }, - "put" : { - "operationId" : "put-api-ee-transforms-python-library-path", - "summary" : "PUT /api/ee/transforms-python/library/{path}", - "description" : "Update the Python library source code for user modules.", + "tags" : [ "/api/ee/workspace-manager" ] + } + }, + "/api/ee/workspace-manager/{id}/database" : { + "post" : { + "operationId" : "post-api-ee-workspace-manager-id-database", + "summary" : "POST /api/ee/workspace-manager/{id}/database", + "description" : "Add a database to a workspace and provision it immediately (blocking).", "parameters" : [ { "in" : "path", - "name" : "path", + "name" : "id", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" + "type" : "integer", + "minimum" : 1 }, - "5XX" : { - "description" : "Server error response" - } - }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "source" : { - "type" : "string" - } - }, - "required" : [ "source" ], - "additionalProperties" : false - } - } - } - }, - "tags" : [ "/api/ee/transforms-python" ] - } - }, - "/api/ee/transforms-python/test-run" : { - "post" : { - "operationId" : "post-api-ee-transforms-python-test-run", - "summary" : "POST /api/ee/transforms-python/test-run", - "description" : "Evaluate an ad-hoc python transform on a sample of input data.\n Intended for short runs for early feedback. Input/output/timeout limits apply.", - "parameters" : [ ], + "description" : "value must be an integer greater than zero." + } ], "responses" : { "2XX" : { "description" : "Successful response", @@ -29686,42 +32967,92 @@ "schema" : { "type" : "object", "properties" : { - "error" : { - "type" : "object", - "properties" : { - "message" : { - "anyOf" : [ { }, { } ] - } - }, - "required" : [ "message" ] - }, - "logs" : { - "type" : "string" + "created_at" : { + "anyOf" : [ { }, { } ] }, - "output" : { - "type" : "object", - "properties" : { - "cols" : { - "type" : "array", - "items" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string" - } - }, - "required" : [ "name" ] + "creator" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "common_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "first_name", "last_name", "email" ], + "additionalProperties" : false + }, { + "type" : "null" + } ] + }, + "databases" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "output_namespace" : { + "type" : "string" + }, + "status" : { + "type" : "string", + "enum" : [ "unprovisioned", "provisioning", "provisioned", "deprovisioning" ] } }, - "rows" : { - "type" : "array", - "items" : { } - } - }, - "required" : [ "cols", "rows" ] + "required" : [ "database_id", "input_schemas", "output_namespace", "status" ], + "additionalProperties" : false + } + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "updated_at" : { + "anyOf" : [ { }, { } ] } }, - "required" : [ "logs" ] + "required" : [ "id", "name", "creator", "created_at", "updated_at" ], + "additionalProperties" : false } } } @@ -29739,52 +33070,31 @@ "schema" : { "type" : "object", "properties" : { - "code" : { - "type" : "string" - }, - "output_row_limit" : { - "allOf" : [ { - "type" : "integer" - }, { - "type" : "number", - "exclusiveMinimum" : 1 - }, { - "type" : "number", - "maximum" : 100 - } ] - }, - "per_input_row_limit" : { - "allOf" : [ { - "type" : "integer" - }, { - "type" : "number", - "exclusiveMinimum" : 1 - }, { - "type" : "number", - "maximum" : 100 - } ] + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" }, - "source_tables" : { + "input_schemas" : { "type" : "array", "items" : { - "$ref" : "#/components/schemas/metabase.transforms-base.util.source-table-entry" - }, - "minItems" : 1 + "type" : "string", + "minLength" : 1 + } } }, - "required" : [ "code", "source_tables" ] + "required" : [ "database_id", "input_schemas" ], + "additionalProperties" : false } } } }, - "tags" : [ "/api/ee/transforms-python" ] + "tags" : [ "/api/ee/workspace-manager" ] } }, - "/api/ee/transforms/{id}/inspect" : { - "get" : { - "operationId" : "get-api-ee-transforms-id-inspect", - "summary" : "GET /api/ee/transforms/{id}/inspect", - "description" : "Phase 1: Discover available lenses for a transform.\n Returns structural metadata and available lens types.", + "/api/ee/workspace-manager/{id}/database/{db-id}" : { + "put" : { + "operationId" : "put-api-ee-workspace-manager-id-database-db-id", + "summary" : "PUT /api/ee/workspace-manager/{id}/database/{db-id}", + "description" : "Update a database's input namespaces. Deprovisions the old config and reprovisions\n with the new one (blocking).", "parameters" : [ { "in" : "path", "name" : "id", @@ -29794,50 +33104,15 @@ "minimum" : 1 }, "description" : "value must be an integer greater than zero." - } ], - "responses" : { - "2XX" : { - "description" : "Successful response", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.transforms-inspector.schema.discovery-response" - } - } - } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/ee/transforms" ] - } - }, - "/api/ee/transforms/{id}/inspect/{lens-id}" : { - "get" : { - "operationId" : "get-api-ee-transforms-id-inspect-lens-id", - "summary" : "GET /api/ee/transforms/{id}/inspect/{lens-id}", - "description" : "Phase 2: Get full lens contents for a transform.\n Returns sections, cards with dataset_query, and trigger definitions.\n Accepts optional params for drill lenses as query params.", - "parameters" : [ { + }, { "in" : "path", - "name" : "id", + "name" : "db-id", "required" : true, "schema" : { "type" : "integer", "minimum" : 1 }, "description" : "value must be an integer greater than zero." - }, { - "in" : "path", - "name" : "lens-id", - "required" : true, - "schema" : { - "type" : "string", - "minLength" : 1 - } } ], "responses" : { "2XX" : { @@ -29845,7 +33120,94 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase-enterprise.transforms-inspector.schema.lens" + "type" : "object", + "properties" : { + "created_at" : { + "anyOf" : [ { }, { } ] + }, + "creator" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "common_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "first_name", "last_name", "email" ], + "additionalProperties" : false + }, { + "type" : "null" + } ] + }, + "databases" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "output_namespace" : { + "type" : "string" + }, + "status" : { + "type" : "string", + "enum" : [ "unprovisioned", "provisioning", "provisioned", "deprovisioning" ] + } + }, + "required" : [ "database_id", "input_schemas", "output_namespace", "status" ], + "additionalProperties" : false + } + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "updated_at" : { + "anyOf" : [ { }, { } ] + } + }, + "required" : [ "id", "name", "creator", "created_at", "updated_at" ], + "additionalProperties" : false } } } @@ -29857,14 +33219,32 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/transforms" ] - } - }, - "/api/ee/transforms/{id}/inspect/{lens-id}/query" : { - "post" : { - "operationId" : "post-api-ee-transforms-id-inspect-lens-id-query", - "summary" : "POST /api/ee/transforms/{id}/inspect/{lens-id}/query", - "description" : "Execute a query in the context of a transform inspector lens.", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "required" : [ "input_schemas" ], + "additionalProperties" : false + } + } + } + }, + "tags" : [ "/api/ee/workspace-manager" ] + }, + "delete" : { + "operationId" : "delete-api-ee-workspace-manager-id-database-db-id", + "summary" : "DELETE /api/ee/workspace-manager/{id}/database/{db-id}", + "description" : "Deprovision and remove a database from a workspace (blocking).", "parameters" : [ { "in" : "path", "name" : "id", @@ -29876,12 +33256,13 @@ "description" : "value must be an integer greater than zero." }, { "in" : "path", - "name" : "lens-id", + "name" : "db-id", "required" : true, "schema" : { - "type" : "string", - "minLength" : 1 - } + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." } ], "responses" : { "2XX" : { @@ -29889,62 +33270,97 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/metabase.query-processor.schema.query-result" - } - } - } - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "lens_params" : { - "oneOf" : [ { - "type" : "object", - "additionalProperties" : { } - }, { - "type" : "null" - } ] - }, - "query" : { - "type" : "object", - "properties" : { - "database" : { - "oneOf" : [ { - "type" : "integer" - }, { - "type" : "null" - } ] + "type" : "object", + "properties" : { + "created_at" : { + "anyOf" : [ { }, { } ] + }, + "creator" : { + "oneOf" : [ { + "type" : "object", + "properties" : { + "common_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "first_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "last_name" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "id", "first_name", "last_name", "email" ], + "additionalProperties" : false + }, { + "type" : "null" + } ] + }, + "databases" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "database_id" : { + "$ref" : "#/components/schemas/metabase.lib.schema.id.database" + }, + "input_schemas" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "output_namespace" : { + "type" : "string" + }, + "status" : { + "type" : "string", + "enum" : [ "unprovisioned", "provisioning", "provisioned", "deprovisioning" ] + } + }, + "required" : [ "database_id", "input_schemas", "output_namespace", "status" ], + "additionalProperties" : false } + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "updated_at" : { + "anyOf" : [ { }, { } ] } - } - }, - "required" : [ "query" ] + }, + "required" : [ "id", "name", "creator", "created_at", "updated_at" ], + "additionalProperties" : false + } } } - } - }, - "tags" : [ "/api/ee/transforms" ] - } - }, - "/api/ee/upload-management/tables" : { - "get" : { - "operationId" : "get-api-ee-upload-management-tables", - "summary" : "GET /api/ee/upload-management/tables", - "description" : "Get all `Tables` visible to the current user which were created by uploading a file.", - "parameters" : [ ], - "responses" : { - "2XX" : { - "description" : "Successful response" }, "4XX" : { "description" : "Client error response" @@ -29953,14 +33369,14 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/upload-management" ] + "tags" : [ "/api/ee/workspace-manager" ] } }, - "/api/ee/upload-management/tables/{id}" : { - "delete" : { - "operationId" : "delete-api-ee-upload-management-tables-id", - "summary" : "DELETE /api/ee/upload-management/tables/{id}", - "description" : "Delete the uploaded table from the database, optionally archiving cards for which it is the primary source.", + "/api/ee/workspace-manager/{id}/metadata/export" : { + "get" : { + "operationId" : "get-api-ee-workspace-manager-id-metadata-export", + "summary" : "GET /api/ee/workspace-manager/{id}/metadata/export", + "description" : "Stream the warehouse metadata (databases, tables, fields) for the workspace's databases,\n scoped to each database's `:input` namespaces. Same flag semantics as\n `/api/ee/serialization/metadata/export` — sections must be opted into via the\n `with-databases` / `with-tables` / `with-fields` query parameters.", "parameters" : [ { "in" : "path", "name" : "id", @@ -29972,8 +33388,32 @@ "description" : "value must be an integer greater than zero." }, { "in" : "query", - "name" : "archive-cards", - "required" : false, + "name" : "with-databases", + "required" : true, + "schema" : { + "default" : false, + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "with-tables", + "required" : true, + "schema" : { + "default" : false, + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + } + }, { + "in" : "query", + "name" : "with-fields", + "required" : true, "schema" : { "default" : false, "oneOf" : [ { @@ -29985,7 +33425,14 @@ } ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.serialization.schema.export-metadata-response" + } + } + } }, "4XX" : { "description" : "Client error response" @@ -29994,7 +33441,7 @@ "description" : "Server error response" } }, - "tags" : [ "/api/ee/upload-management" ] + "tags" : [ "/api/ee/workspace-manager" ] } }, "/api/eid-translation/translate" : { @@ -30137,6 +33584,143 @@ "tags" : [ "/api/email" ] } }, + "/api/embed-mcp/drills" : { + "post" : { + "operationId" : "post-api-embed-mcp-drills", + "summary" : "POST /api/embed-mcp/drills", + "description" : "Stash a base64-encoded MBQL query for the iframe's pending drill-through and\n return a handle UUID the iframe will thread into the agent message so the\n `render_drill_through` tool can fetch it.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "encodedQuery" : { + "type" : "string", + "minLength" : 1 + } + }, + "required" : [ "encodedQuery" ] + } + } + } + }, + "tags" : [ "/api/embed-mcp" ] + } + }, + "/api/embed-mcp/feedback" : { + "post" : { + "operationId" : "post-api-embed-mcp-feedback", + "summary" : "POST /api/embed-mcp/feedback", + "description" : "Proxy MCP Apps visualization feedback to Harbormaster.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "body" : { + "type" : "null" + }, + "status" : { + "const" : 204 + } + }, + "required" : [ "status", "body" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "conversation_data" : { + "type" : "object", + "properties" : { + "prompt" : { + "oneOf" : [ { + "type" : "string", + "maxLength" : 10000 + }, { + "type" : "null" + } ] + }, + "query" : { + "oneOf" : [ { + "type" : "string", + "maxLength" : 10000 + }, { + "type" : "null" + } ] + }, + "source" : { + "const" : "mcp" + } + }, + "required" : [ "source" ] + }, + "feedback" : { + "type" : "object", + "properties" : { + "freeform_feedback" : { + "oneOf" : [ { + "type" : "string", + "maxLength" : 10000 + }, { + "type" : "null" + } ] + }, + "issue_type" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "message_id" : { + "type" : "string", + "minLength" : 1 + }, + "positive" : { + "type" : "boolean" + } + }, + "required" : [ "message_id", "positive" ] + } + }, + "required" : [ "feedback", "conversation_data" ] + } + } + } + }, + "tags" : [ "/api/embed-mcp" ] + } + }, "/api/embed-theme" : { "get" : { "operationId" : "get-api-embed-theme", @@ -31148,6 +34732,64 @@ "tags" : [ "/api/embed" ] } }, + "/api/field/table-ids" : { + "post" : { + "operationId" : "post-api-field-table-ids", + "summary" : "POST /api/field/table-ids", + "description" : "Get unique Table IDs for a list of Field IDs.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "table_ids" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + } + }, + "required" : [ "table_ids" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "field_ids" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + } + }, + "required" : [ "field_ids" ] + } + } + } + }, + "tags" : [ "/api/field" ] + } + }, "/api/field/{id}" : { "get" : { "operationId" : "get-api-field-id", @@ -32033,11 +35675,11 @@ "tags" : [ "/api/ldap" ] } }, - "/api/llm/extract-tables" : { + "/api/llm/extract-sources" : { "post" : { - "operationId" : "post-api-llm-extract-tables", - "summary" : "POST /api/llm/extract-tables", - "description" : "Parse SQL and return referenced tables with their columns.\n\n Uses Macaw to parse the SQL, resolves table names to IDs,\n and returns permission-filtered tables with column metadata.\n\n This is a lightweight endpoint that does not trigger fingerprinting\n or field value fetching.", + "operationId" : "post-api-llm-extract-sources", + "summary" : "POST /api/llm/extract-sources", + "description" : "Parse native query sources and return referenced tables and cards/models.\n\n Uses Macaw to parse the SQL, resolves table names to IDs,\n and returns permission-filtered tables with column metadata. Card and model\n references are extracted from native query template tags.\n\n This is a lightweight endpoint that does not trigger fingerprinting\n or field value fetching.", "parameters" : [ ], "responses" : { "2XX" : { @@ -32047,6 +35689,13 @@ "schema" : { "type" : "object", "properties" : { + "card_ids" : { + "type" : "array", + "items" : { + "type" : "integer", + "minimum" : 1 + } + }, "tables" : { "type" : "array", "items" : { @@ -32134,7 +35783,7 @@ } } }, - "required" : [ "tables" ] + "required" : [ "tables", "card_ids" ] } } } @@ -32158,6 +35807,22 @@ }, "sql" : { "type" : "string" + }, + "template_tags" : { + "type" : "object", + "additionalProperties" : { + "type" : "object", + "properties" : { + "card-id" : { + "type" : "integer", + "minimum" : 1 + }, + "type" : { + "type" : "string" + } + }, + "required" : [ "type" ] + } } }, "required" : [ "database_id", "sql" ] @@ -32985,6 +36650,169 @@ "tags" : [ "/api/metabot" ] } }, + "/api/metabot/conversations" : { + "get" : { + "operationId" : "get-api-metabot-conversations", + "summary" : "GET /api/metabot/conversations", + "description" : "List conversations visible in the current user's history, most-recent first.\n\n New conversations are participation-based (the user authored at least one\n message); legacy conversations created before message authors were stamped\n fall back to the conversation originator.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "data" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "created_at" : { + "type" : "string", + "format" : "date-time" + }, + "last_message_at" : { + "oneOf" : [ { + "type" : "string", + "format" : "date-time" + }, { + "type" : "null" + } ] + }, + "message_count" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "summary" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "user_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "conversation_id", "created_at", "summary", "user_id", "message_count", "last_message_at" ] + } + }, + "limit" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "offset" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + }, + "total" : { + "description" : "value must be an integer greater or equal to than zero.", + "type" : "integer", + "minimum" : 0 + } + }, + "required" : [ "data", "total", "limit", "offset" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/metabot/conversations" ] + } + }, + "/api/metabot/conversations/{id}" : { + "get" : { + "operationId" : "get-api-metabot-conversations-id", + "summary" : "GET /api/metabot/conversations/{id}", + "description" : "Return a single conversation with its flattened chat messages.\n\n Accessible to any participant in the conversation or to any superuser.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "description" : "value must be a valid UUID." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "chat_messages" : { + "type" : "array", + "items" : { + "type" : "object", + "properties" : { } + } + }, + "conversation_id" : { + "description" : "value must be a valid UUID.", + "type" : "string", + "pattern" : "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + }, + "created_at" : { + "type" : "string", + "format" : "date-time" + }, + "summary" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "user_id" : { + "oneOf" : [ { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, { + "type" : "null" + } ] + } + }, + "required" : [ "conversation_id", "created_at", "summary", "user_id", "chat_messages" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/metabot/conversations" ] + } + }, "/api/metabot/document/generate-content" : { "post" : { "operationId" : "post-api-metabot-document-generate-content", @@ -33097,11 +36925,27 @@ "post" : { "operationId" : "post-api-metabot-feedback", "summary" : "POST /api/metabot/feedback", - "description" : "Proxy Metabot feedback to Harbormaster, adding the premium embedding token.", + "description" : "Persist Metabot feedback.", "parameters" : [ ], "responses" : { "2XX" : { - "description" : "Successful response" + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "body" : { + "type" : "null" + }, + "status" : { + "const" : 204 + } + }, + "required" : [ "status", "body" ] + } + } + } }, "4XX" : { "description" : "Client error response" @@ -33115,7 +36959,35 @@ "application/json" : { "schema" : { "type" : "object", - "properties" : { } + "properties" : { + "freeform_feedback" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "issue_type" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "message_id" : { + "type" : "string", + "minLength" : 1 + }, + "metabot_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "positive" : { + "type" : "boolean" + } + }, + "required" : [ "metabot_id", "message_id", "positive" ] } } } @@ -33313,45 +37185,45 @@ } ], "responses" : { "2XX" : { + "description" : "Successful response", "content" : { "application/json" : { "schema" : { "oneOf" : [ { - "additionalProperties" : false, + "type" : "object", "properties" : { "prompt_count" : { - "minimum" : 1, - "type" : "integer" + "type" : "integer", + "minimum" : 1 }, "status" : { "const" : "generated" } }, "required" : [ "status", "prompt_count" ], - "type" : "object" + "additionalProperties" : false }, { - "additionalProperties" : false, + "type" : "object", "properties" : { "status" : { "const" : "no-library-content" } }, "required" : [ "status" ], - "type" : "object" + "additionalProperties" : false }, { - "additionalProperties" : false, + "type" : "object", "properties" : { "status" : { "const" : "ai-produced-no-prompts" } }, "required" : [ "status" ], - "type" : "object" + "additionalProperties" : false } ] } } - }, - "description" : "Successful response" + } }, "4XX" : { "description" : "Client error response" @@ -33801,6 +37673,75 @@ "tags" : [ "/api/metabot/slack" ] } }, + "/api/metabot/source-feedback" : { + "post" : { + "operationId" : "post-api-metabot-source-feedback", + "summary" : "POST /api/metabot/source-feedback", + "description" : "Persist Metabot source feedback.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "body" : { + "type" : "null" + }, + "status" : { + "const" : 204 + } + }, + "required" : [ "status", "body" ] + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "message_id" : { + "type" : "string", + "minLength" : 1 + }, + "metabot_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "positive" : { + "type" : "boolean" + }, + "source_id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "source_type" : { + "type" : "string", + "enum" : [ "table", "card", "model" ] + } + }, + "required" : [ "metabot_id", "message_id", "source_id", "source_type", "positive" ] + } + } + } + }, + "tags" : [ "/api/metabot" ] + } + }, "/api/metric" : { "get" : { "operationId" : "get-api-metric", @@ -35079,7 +39020,7 @@ "put" : { "operationId" : "put-api-notification-id", "summary" : "PUT /api/notification/{id}", - "description" : "Update a notification, can also update its subscriptions, handlers.\n Return the updated notification.", + "description" : "Update a notification, can also update its subscriptions, handlers.\n Return the updated notification.\n\n `creator_id` (owner) can be reassigned here only by superusers (e.g. the admin 'Edit alert'\n modal's owner picker). `mi/can-update?` rejects a non-superuser reassignment attempt with 403;\n the model's `before-update` hook is the backstop. Echoing back the unchanged value is fine.", "parameters" : [ { "in" : "path", "name" : "id", @@ -40252,14 +44193,237 @@ "type" : "null" } ] }, - "ids" : { - "type" : "array", - "items" : { - "description" : "value must be an integer greater than zero.", - "type" : "integer", - "minimum" : 1 - } - }, + "ids" : { + "type" : "array", + "items" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + } + }, + "display_name" : { + "oneOf" : [ { + "type" : "string", + "minLength" : 1 + }, { + "type" : "null" + } ] + }, + "data_source" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "caveats" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "entity_type" : { + "oneOf" : [ { + "description" : "value must be a valid entity type (keyword or string)." + }, { + "type" : "null" + } ] + }, + "description" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + } + }, + "required" : [ "ids" ] + } + } + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/card__:id/fks" : { + "get" : { + "operationId" : "get-api-table-card__:id-fks", + "summary" : "GET /api/table/card__:id/fks", + "description" : "Return FK info for the 'virtual' table for a Card. This is always empty, so this endpoint\n serves mainly as a placeholder to avoid having to change anything on the frontend.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/card__:id/query_metadata" : { + "get" : { + "operationId" : "get-api-table-card__:id-query_metadata", + "summary" : "GET /api/table/card__:id/query_metadata", + "description" : "Return metadata for the 'virtual' table for a Card.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + } + }, + "/api/table/{id}" : { + "get" : { + "operationId" : "get-api-table-id", + "summary" : "GET /api/table/{id}", + "description" : "Get `Table` with ID.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + }, { + "in" : "query", + "name" : "include_editable_data_model", + "required" : false, + "schema" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + } + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "tags" : [ "/api/table" ] + }, + "put" : { + "operationId" : "put-api-table-id", + "summary" : "PUT /api/table/{id}", + "description" : "Update `Table` with ID.", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "integer", + "minimum" : 1 + }, + "description" : "value must be an integer greater than zero." + } ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "points_of_interest" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "visibility_type" : { + "oneOf" : [ { + "type" : "string", + "enum" : [ "technical", "hidden", "cruft" ] + }, { + "type" : "null" + } ] + }, + "data_authority" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/metabase.warehouse-schema-rest.api.table.data-authority-write" + }, { + "type" : "null" + } ] + }, + "data_layer" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "show_in_getting_started" : { + "oneOf" : [ { + "type" : "boolean" + }, { + "type" : "null" + } ] + }, + "owner_email" : { + "oneOf" : [ { + "type" : "string" + }, { + "type" : "null" + } ] + }, + "owner_user_id" : { + "oneOf" : [ { + "type" : "integer" + }, { + "type" : "null" + } ] + }, "display_name" : { "oneOf" : [ { "type" : "string", @@ -40268,225 +44432,11 @@ "type" : "null" } ] }, - "data_source" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "caveats" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "entity_type" : { - "oneOf" : [ { - "description" : "value must be a valid entity type (keyword or string)." - }, { - "type" : "null" - } ] - }, - "description" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - } - }, - "required" : [ "ids" ] - } - } - } - }, - "tags" : [ "/api/table" ] - } - }, - "/api/table/card__:id/fks" : { - "get" : { - "operationId" : "get-api-table-card__:id-fks", - "summary" : "GET /api/table/card__:id/fks", - "description" : "Return FK info for the 'virtual' table for a Card. This is always empty, so this endpoint\n serves mainly as a placeholder to avoid having to change anything on the frontend.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/table" ] - } - }, - "/api/table/card__:id/query_metadata" : { - "get" : { - "operationId" : "get-api-table-card__:id-query_metadata", - "summary" : "GET /api/table/card__:id/query_metadata", - "description" : "Return metadata for the 'virtual' table for a Card.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/table" ] - } - }, - "/api/table/{id}" : { - "get" : { - "operationId" : "get-api-table-id", - "summary" : "GET /api/table/{id}", - "description" : "Get `Table` with ID.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - }, { - "in" : "query", - "name" : "include_editable_data_model", - "required" : false, - "schema" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - } - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "tags" : [ "/api/table" ] - }, - "put" : { - "operationId" : "put-api-table-id", - "summary" : "PUT /api/table/{id}", - "description" : "Update `Table` with ID.", - "parameters" : [ { - "in" : "path", - "name" : "id", - "required" : true, - "schema" : { - "type" : "integer", - "minimum" : 1 - }, - "description" : "value must be an integer greater than zero." - } ], - "responses" : { - "2XX" : { - "description" : "Successful response" - }, - "4XX" : { - "description" : "Client error response" - }, - "5XX" : { - "description" : "Server error response" - } - }, - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "type" : "object", - "properties" : { - "points_of_interest" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "visibility_type" : { - "oneOf" : [ { - "type" : "string", - "enum" : [ "technical", "hidden", "cruft" ] - }, { - "type" : "null" - } ] - }, - "data_authority" : { - "oneOf" : [ { - "$ref" : "#/components/schemas/metabase.warehouse-schema-rest.api.table.data-authority-write" - }, { - "type" : "null" - } ] - }, - "data_layer" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "show_in_getting_started" : { - "oneOf" : [ { - "type" : "boolean" - }, { - "type" : "null" - } ] - }, - "owner_email" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "null" - } ] - }, - "owner_user_id" : { - "oneOf" : [ { - "type" : "integer" - }, { - "type" : "null" - } ] - }, - "display_name" : { + "collection_id" : { "oneOf" : [ { - "type" : "string", - "minLength" : 1 + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 }, { "type" : "null" } ] @@ -42909,6 +46859,9 @@ } }, "created_at" : { }, + "active" : { + "type" : "boolean" + }, "description" : { "oneOf" : [ { "anyOf" : [ { @@ -42921,7 +46874,7 @@ } ] } }, - "required" : [ "id", "name", "description", "schedule", "ui_display_type", "entity_id", "created_at", "updated_at" ], + "required" : [ "id", "name", "description", "schedule", "ui_display_type", "active", "entity_id", "created_at", "updated_at" ], "additionalProperties" : false } } @@ -43148,6 +47101,9 @@ } }, "created_at" : { }, + "active" : { + "type" : "boolean" + }, "description" : { "oneOf" : [ { "anyOf" : [ { @@ -43160,7 +47116,7 @@ } ] } }, - "required" : [ "id", "name", "description", "schedule", "ui_display_type", "entity_id", "created_at", "updated_at" ], + "required" : [ "id", "name", "description", "schedule", "ui_display_type", "active", "entity_id", "created_at", "updated_at" ], "additionalProperties" : false } } @@ -43177,6 +47133,58 @@ "tags" : [ "/api/transform-job" ] } }, + "/api/transform-job/active" : { + "put" : { + "operationId" : "put-api-transform-job-active", + "summary" : "PUT /api/transform-job/active", + "description" : "Activate or deactivate every transform job. Inactive jobs do not run on schedule. Manual runs\n via `POST /api/transform-job/:job-id/run` ignore this flag.\n\n Reports per-job outcome counts: `:updated` (successfully flipped) and `:failed` (raised an\n error during the flip — the row update or Quartz write failed and was logged).", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response", + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "failed" : { + "type" : "integer" + }, + "updated" : { + "type" : "integer" + } + }, + "required" : [ "updated", "failed" ], + "additionalProperties" : false + } + } + } + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "active" : { + "type" : "boolean" + } + }, + "required" : [ "active" ] + } + } + } + }, + "tags" : [ "/api/transform-job" ] + } + }, "/api/transform-job/{job-id}" : { "put" : { "operationId" : "put-api-transform-job-job-id", @@ -43301,6 +47309,9 @@ } }, "created_at" : { }, + "active" : { + "type" : "boolean" + }, "description" : { "oneOf" : [ { "anyOf" : [ { @@ -43313,7 +47324,7 @@ } ] } }, - "required" : [ "id", "name", "description", "schedule", "ui_display_type", "entity_id", "created_at", "updated_at" ], + "required" : [ "id", "name", "description", "schedule", "ui_display_type", "active", "entity_id", "created_at", "updated_at" ], "additionalProperties" : false } } @@ -43332,6 +47343,9 @@ "schema" : { "type" : "object", "properties" : { + "active" : { + "type" : "boolean" + }, "description" : { "oneOf" : [ { "type" : "string", @@ -43517,6 +47531,9 @@ } }, "created_at" : { }, + "active" : { + "type" : "boolean" + }, "description" : { "oneOf" : [ { "anyOf" : [ { @@ -43529,7 +47546,7 @@ } ] } }, - "required" : [ "id", "name", "description", "schedule", "ui_display_type", "entity_id", "created_at", "updated_at" ], + "required" : [ "id", "name", "description", "schedule", "ui_display_type", "active", "entity_id", "created_at", "updated_at" ], "additionalProperties" : false } } diff --git a/_docs/latest/configuring-metabase/appearance.md b/_docs/latest/configuring-metabase/appearance.md index 339236ff94..0751a4f726 100644 --- a/_docs/latest/configuring-metabase/appearance.md +++ b/_docs/latest/configuring-metabase/appearance.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -171,7 +171,7 @@ What people see when Metabase prompts them to log in. ### Landing page -The landing page is what people will see whenever they login. You can set the URL to a collection, question, dashboard or whatever, just make sure that everyone has access to that URL. +The illustration people see on the landing page when they log in. To choose which page people land on, see [Homepage](./settings#homepage). - Lighthouse - No illustration diff --git a/_docs/latest/configuring-metabase/caching.md b/_docs/latest/configuring-metabase/caching.md index 0ddeac01fc..669634baca 100644 --- a/_docs/latest/configuring-metabase/caching.md +++ b/_docs/latest/configuring-metabase/caching.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/config-file.md b/_docs/latest/configuring-metabase/config-file.md index 9637c855d0..5fc5be439c 100644 --- a/_docs/latest/configuring-metabase/config-file.md +++ b/_docs/latest/configuring-metabase/config-file.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/config-template.md b/_docs/latest/configuring-metabase/config-template.md index f8ec2c3121..6aec89027e 100644 --- a/_docs/latest/configuring-metabase/config-template.md +++ b/_docs/latest/configuring-metabase/config-template.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -79,6 +79,7 @@ config: admin-email: null aggregated-query-row-limit: null ai-features-enabled: true + ai-usage-max-retention-days: null allowed-iframe-hosts: |- youtube.com, youtu.be, @@ -120,16 +121,20 @@ config: can-run-adhoc-query-check-threshold: 250 check-for-updates: true config-from-file-sync-databases: true + csp-img-allowed-hosts: '' + csp-img-enabled: false csv-field-separator: ',' custom-formatting: {} custom-geojson: null custom-geojson-enabled: true custom-homepage: false custom-homepage-dashboard: null + custom-viz-enabled: false dashboards-save-last-used-parameters: true db-connection-timeout-ms: 10000 db-query-timeout-minutes: 20 default-maps-enabled: true + disable-auto-sync: false disable-cors-on-localhost: false download-row-limit: null email-from-address: notifications@metabase.com @@ -316,6 +321,7 @@ config: sync-leaf-fields-limit: 1000 synchronous-batch-updates: false thread-interrupt-escalation-timeout-ms: 0 + transform-run-job-sql-concurrency: 3 transform-timeout: 240 transforms-enabled: false unaggregated-query-row-limit: null diff --git a/_docs/latest/configuring-metabase/custom-maps.md b/_docs/latest/configuring-metabase/custom-maps.md index 2770641c62..706770ef9d 100644 --- a/_docs/latest/configuring-metabase/custom-maps.md +++ b/_docs/latest/configuring-metabase/custom-maps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/customizing-jetty-webserver.md b/_docs/latest/configuring-metabase/customizing-jetty-webserver.md index f39db3958d..5c764deb83 100644 --- a/_docs/latest/configuring-metabase/customizing-jetty-webserver.md +++ b/_docs/latest/configuring-metabase/customizing-jetty-webserver.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/email.md b/_docs/latest/configuring-metabase/email.md index e9986046d9..9b1a9318b7 100644 --- a/_docs/latest/configuring-metabase/email.md +++ b/_docs/latest/configuring-metabase/email.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/environment-variables.md b/_docs/latest/configuring-metabase/environment-variables.md index b792bca34e..190e3e93e2 100644 --- a/_docs/latest/configuring-metabase/environment-variables.md +++ b/_docs/latest/configuring-metabase/environment-variables.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -89,6 +89,24 @@ Must be less than 1048575. See also MB_UNAGGREGATED_QUERY_ROW_LIMIT. Whether AI features are enabled. +### `MB_AI_USAGE_MAX_RETENTION_DAYS` + +- Type: integer +- Default: `null` +- [Exported as](../installation-and-operation/serialization): `ai-usage-max-retention-days`. +- [Configuration file name](./config-file): `ai-usage-max-retention-days` + +Number of days to retain rows in the ai_usage_log, metabot_conversation, and metabot_message tables. Minimum value is 30; set to 0 to retain data indefinitely. + +Sets the maximum number of days Metabase preserves rows for the following application database tables: + +- `ai_usage_log` +- `metabot_conversation` +- `metabot_message` + +Once a day, Metabase deletes rows older than this threshold. The minimum value is 30 days (Metabase will treat entered values of 1 to 29 the same as 30). +If set to 0, Metabase will keep all rows. + ### `MB_ALLOWED_IFRAME_HOSTS` - Type: string @@ -119,14 +137,34 @@ x.com` Allowed iframe hosts. +### `MB_CSP_IMG_ENABLED` + +- Type: boolean +- Default: `false` +- [Exported as](../installation-and-operation/serialization): `csp-img-enabled`. +- [Configuration file name](./config-file): `csp-img-enabled` + +When on, the browser Content Security Policy restricts `img-src` so images can only load from this Metabase instance and the domains listed in `MB_CSP_IMG_ALLOWED_HOSTS`. Must be turned on to enable Custom Visualizations. + +### `MB_CSP_IMG_ALLOWED_HOSTS` + +- Type: string +- Default: `""` +- [Exported as](../installation-and-operation/serialization): `csp-img-allowed-hosts`. +- [Configuration file name](./config-file): `csp-img-allowed-hosts` + +Comma-separated list of domains that images can load from in dashboard text cards, entity descriptions, and custom visualizations when `MB_CSP_IMG_ENABLED` is on. Empty by default, which restricts images to those hosted by your Metabase instance. See [Allowed domains for images](./settings#allowed-domains-for-images). + ### `MB_ANALYTICS_PII_RETENTION_ENABLED` +> Only available on Metabase [Pro](/product/pro) and [Enterprise](/product/enterprise) plans. + - Type: boolean - Default: `false` - [Exported as](../installation-and-operation/serialization): `analytics-pii-retention-enabled`. - [Configuration file name](./config-file): `analytics-pii-retention-enabled` -Enable logging of embed path, query parameters, user agent, and IP address of who views your internal data and embeds. This information will be shown in your usage analytics. +Enable logging of embed path, query parameters, user agent, IP address, and Metabot conversation metadata for users of your internal data and embeds. This information will be shown in your usage analytics. ### `MB_ANON_TRACKING_ENABLED` @@ -397,6 +435,17 @@ Pick one of your dashboards to serve as homepage. Users without dashboard access ID of dashboard to use as a homepage. +### `MB_CUSTOM_VIZ_ENABLED` + +> Only available on Metabase [Pro](/product/pro) and [Enterprise](/product/enterprise) plans. + +- Type: boolean +- Default: `false` +- [Exported as](../installation-and-operation/serialization): `custom-viz-enabled`. +- [Configuration file name](./config-file): `custom-viz-enabled` + +Should custom visualizations be enabled for this instance? + ### `MB_DASHBOARDS_SAVE_LAST_USED_PARAMETERS` - Type: boolean @@ -440,6 +489,13 @@ Timeout in minutes for the database's query execution, both for the Metabase app Whether or not the default GeoJSON maps are enabled. +### `MB_DISABLE_AUTO_SYNC` + +- Type: boolean +- Default: `false` + +When true, suppresses automatically-triggered syncs: the scheduled sync-and-analyze and update-field-values jobs do not run (and new triggers are not registered), and adding a new database does not kick off an initial sync. Syncs originating from an explicit request — the Sync-now REST endpoints, or a transform finalizing its output table — are unaffected. For deployments that load database metadata from disk at startup and should not have Metabase re-discover it. + ### `MB_DISABLE_CORS_ON_LOCALHOST` - Type: boolean @@ -1001,7 +1057,7 @@ When set to `true`, users who log in via JWT will automatically get a Metabase a - [Exported as](../installation-and-operation/serialization): `landing-page`. - [Configuration file name](./config-file): `landing-page` -Enter a URL of the landing page to show the user. This overrides the custom homepage setting above. +Enter a relative URL like /dashboard/1 or /collection/2. ### `MB_LANDING_PAGE_ILLUSTRATION` @@ -2162,6 +2218,18 @@ By default, this is 0 and the thread interrupt escalation does not run. Timeout in milliseconds to wait after query cancellation before escalating to thread interruption. This is used to free up threads that are stuck waiting for a DB response after a query has been cancelled. +### `MB_TRANSFORM_RUN_JOB_SQL_CONCURRENCY` + +> Only available on Metabase [Pro](/product/pro) and [Enterprise](/product/enterprise) plans. + +- Type: integer +- Default: `3` + +Maximum number of SQL-backed transforms a single transform-job run may execute in parallel. + +This setting is only configurable on instances with the transforms add-on; OSS + deployments without the add-on always use the default. + ### `MB_TRANSFORM_TIMEOUT` > Only available on Metabase [Pro](/product/pro) and [Enterprise](/product/enterprise) plans. @@ -2173,7 +2241,9 @@ The timeout for a transform job, in minutes. Controls the timeout for transform runs, including the queries they execute. This takes precedence over MB_DB_QUERY_TIMEOUT_MINUTES for queries executed inside a transform, so transforms can run longer than regular - Metabase queries. + Metabase queries. Enforced per-statement via `Statement.setQueryTimeout`; transforms also use a separate JDBC + connection pool whose c3p0 leak-detector tolerates this longer runtime, so non-transform connections continue to + use the shorter `MB_DB_QUERY_TIMEOUT_MINUTES` leak-detector. ### `MB_TRANSFORMS_ENABLED` @@ -2265,6 +2335,26 @@ Use [MB_SESSION_COOKIES](#mb_session_cookies) to also expire sessions, when brow Also see the [Changing session expiration](../people-and-groups/changing-session-expiration) documentation page. +### `MB_APPLICATION_DB_IDLE_CONNECTION_TEST_PERIOD_SECONDS` + +Type: integer
+Default: `60`
+Since: v62.0 + +How often, in seconds, to test idle connections in the application database pool. Set to `0` to disable idle connection testing. + +### `MB_APPLICATION_DB_MAX_CONNECTION_AGE_SECONDS` + +Type: integer
+Default: `3600`
+Since: v62.0 + +Maximum lifetime, in seconds, of a connection in the application database pool. After this duration the connection is closed and a new one is opened. Set to `0` to keep connections until the database closes them. + +The default of one hour is set primarily to limit memory growth (especially on PostgreSQL). + +If you are connecting with a short-lived credential (e.g. an AWS RDS IAM auth token) baked into the URL or password at startup, setting this to `0` is a partial workaround — eventual reconnects from the database or the network will still fail. Prefer [MB_DB_AWS_IAM](#mb_db_aws_iam) (AWS RDS / Aurora) or [MB_DB_AZURE_MANAGED_IDENTITY_CLIENT_ID](#mb_db_azure_managed_identity_client_id) (Azure). + ### `MB_APPLICATION_DB_MAX_CONNECTION_POOL_SIZE` Type: integer
@@ -2279,6 +2369,30 @@ To see how many connections are being used, check the Metabase logs and look for See [MB_JDBC_DATA_WAREHOUSE_MAX_CONNECTION_POOL_SIZE](#mb_jdbc_data_warehouse_max_connection_pool_size) for setting maximum connections to the databases connected to Metabase. +### `MB_APPLICATION_DB_MAX_IDLE_TIME_EXCESS_CONNECTIONS_SECONDS` + +Type: integer
+Default: `600`
+Since: v62.0 + +How long, in seconds, an idle connection beyond the minimum pool size may stay open before being culled. Set to `0` to never cull excess idle connections. + +### `MB_APPLICATION_DB_TEST_CONNECTION_ON_CHECKOUT` + +Type: boolean
+Default: `false`
+Since: v62.0 + +When `true`, each connection is validated when checked out of the pool. Adds latency to every checkout. Useful when credentials may invalidate connections behind the pool's back. + +### `MB_APPLICATION_DB_UNRETURNED_CONNECTION_TIMEOUT_SECONDS` + +Type: integer
+Default: `3600`
+Since: v62.0 + +How long, in seconds, before a checked-out but unreturned connection is forcibly reclaimed. The legacy name `MB_APPLICATION_DB_UNRETURNED_CONNECTION_TIMEOUT` continues to work; the suffixed form is preferred. + ### `MB_ASYNC_QUERY_THREAD_POOL_SIZE` Type: integer
@@ -2308,6 +2422,28 @@ Default: `true` When set to `false`, Metabase will print migrations needed to be done in the application database and exit. Those migrations need to be applied manually. When `true`, Metabase will automatically make changes to the application database. This is not related to migrating away from H2. +### `MB_DB_AWS_IAM` + +Type: boolean
+Default: `false`
+Since: v0.58.0 + +When `true`, authenticate to the application database (PostgreSQL or MySQL/MariaDB on AWS RDS or Aurora) using AWS IAM instead of a password. Omit [MB_DB_PASS](#mb_db_pass). Auth tokens are refreshed automatically. + +Requires that AWS credentials are available via the standard credential chain (e.g. EKS IRSA, EC2 instance profile, ECS task role, or `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`), that the credentials hold the `rds-db:connect` permission for your database user, and that the DB user is set up for IAM authentication. + +For MySQL/MariaDB, also set [MB_DB_SSL_CERT](#mb_db_ssl_cert), or pass the SSL parameters in [MB_DB_CONNECTION_URI](#mb_db_connection_uri). + +### `MB_DB_AZURE_MANAGED_IDENTITY_CLIENT_ID` + +Type: string
+Default: `null`
+Since: v0.51.0 + +Authenticate to a PostgreSQL or MySQL application database using an Azure Managed Identity instead of a password. Set this to the client ID of a user-assigned Managed Identity attached to your compute resource. Omit [MB_DB_PASS](#mb_db_pass). Access tokens are refreshed automatically. + +Requires the Database authentication providers Pro/Enterprise feature. + ### `MB_DB_CONNECTION_URI` Type: string
@@ -2371,6 +2507,17 @@ Default: `null` The port for [MB_DB_HOST](#mb_db_host). +### `MB_DB_SSL_CERT` + +Type: string
+Default: `null`
+Since: v0.58.0 + +SSL configuration for the application database. Used with [MB_DB_AWS_IAM](#mb_db_aws_iam) on MySQL/MariaDB, where SSL is required. + +- `"trust"` — trust the server certificate without validation. +- A filesystem path to a PEM file — validate against the supplied CA certificate. + ### `MB_DB_TYPE` Type: string (`"h2"`, `"postgres"`, `"mysql"`)
@@ -2625,7 +2772,7 @@ Comma-separated namespaces to trace. **WARNING:** Could log sensitive informatio ### `MB_PASSWORD_COMPLEXITY` -Type: string (`"weak"`, `"normal"`, `"strong"`)
+Type: string (`"weak"`, `"normal"`, `"strong"`, `"strong-enough"`)
Default: `"normal"` Enforce a password complexity rule to increase security for regular logins. This only applies to new users or users that are changing their password. Related [MB_PASSWORD_LENGTH](#mb_password_length) @@ -2633,6 +2780,7 @@ Enforce a password complexity rule to increase security for regular logins. This - `weak` no character constraints - `normal` at least 1 digit - `strong` minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character +- `strong-enough` minimum 15 characters ### `MB_PASSWORD_LENGTH` @@ -2650,6 +2798,15 @@ Path of the "plugins" directory, which is used to store the Metabase database dr The location is where custom third-party drivers should be added. Then Metabase will load the driver on startup, which can be verified in the log. +### `MB_PROMETHEUS_SERVER_PORT` + +Type: integer
+Default: `null` + +Port to serve Prometheus metrics from. If set, Prometheus collectors are registered and served from `localhost:/metrics`. + +See [Observability with Prometheus](../installation-and-operation/observability-with-prometheus). + ### `MB_QP_CACHE_BACKEND` Type: string
diff --git a/_docs/latest/configuring-metabase/fonts.md b/_docs/latest/configuring-metabase/fonts.md index d061f65f06..1b9a908ac2 100644 --- a/_docs/latest/configuring-metabase/fonts.md +++ b/_docs/latest/configuring-metabase/fonts.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -137,6 +137,12 @@ raw.githubusercontent.com/${user}/${repo}/${branch}/${path} Note that in the raw link, there is no `/blob/` directory in the URL. +### Custom fonts and Content Security Policy + +When you add a custom font hosted on another domain, Metabase automatically allows that domain in the browser's Content Security Policy for fonts. You don't need to configure anything for the font to work. + +If you don't add any custom fonts, Metabase only allows fonts served from your own instance. + ### Supporting multiple languages To support multiple character sets, for example both Latin and Cyrillic, you'll need to merge font files. diff --git a/_docs/latest/configuring-metabase/localization.md b/_docs/latest/configuring-metabase/localization.md index a9da22b68f..e69fc6bcb9 100644 --- a/_docs/latest/configuring-metabase/localization.md +++ b/_docs/latest/configuring-metabase/localization.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/log-configuration.md b/_docs/latest/configuring-metabase/log-configuration.md index 97fb427990..deb01c5789 100644 --- a/_docs/latest/configuring-metabase/log-configuration.md +++ b/_docs/latest/configuring-metabase/log-configuration.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/setting-up-metabase.md b/_docs/latest/configuring-metabase/setting-up-metabase.md index 088cc1e613..5fb4684690 100644 --- a/_docs/latest/configuring-metabase/setting-up-metabase.md +++ b/_docs/latest/configuring-metabase/setting-up-metabase.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/settings.md b/_docs/latest/configuring-metabase/settings.md index d670b0fcf1..a6d004fa44 100644 --- a/_docs/latest/configuring-metabase/settings.md +++ b/_docs/latest/configuring-metabase/settings.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -38,11 +38,13 @@ For example, say you enable HTTPS redirect for a Metabase instance at the site U > Note: if you haven't set up HTTPS on your server, Metabase will not let you enable HTTPS redirect. Instead, you'll get a warning saying "It looks like HTTPS is not properly configured." -## Custom homepage +## Homepage -Admins can pick a dashboard to serve as the homepage. If people lack permissions to view the selected dashboard, Metabase will redirect them to the default homepage. +Set the page people see when they first log in to your Metabase. Choose between: -To revert to the default Metabase homepage, simply toggle off Custom homepage. +- **Default Metabase home**: The standard Metabase homepage. +- **Dashboard**: Pick a dashboard to serve as the homepage. If people lack permissions to view the selected dashboard, Metabase will redirect them to the default homepage. +- **Custom URL**: Send people to a specific URL (a collection, question, dashboard, or other page). Make sure people have access to the URL. This option is only available on Metabase [Pro](/product/pro) and [Enterprise](/product/enterprise) plans. ## Email address for help requests @@ -93,3 +95,19 @@ docs.example.com Metabase would only allow iframes from `data.example.com` and `docs.example.com`. Metabase would block iframes from all other domains, including iframes from `example.com` and its other subdomains. See [iframes in dashboards](../dashboards/introduction#iframe-cards). + +## Restrict image domains + +When on, Metabase restricts the browser's Content Security Policy so images can only load from this Metabase instance or the domains listed in [Allowed domains for images](#allowed-domains-for-images). + +By default, images from any domain are allowed. + +You must turn on this setting to enable [Custom visualizations](../questions/visualizations/custom). While custom visualizations are enabled, you can't turn it back off. + +## Allowed domains for images + +When the [Restrict image domains](#restrict-image-domains) setting is on, Metabase will only allow images served from this Metabase instance, and any domains listed on this page. + +Leave this input empty to only allow images hosted by your Metabase instance. + +Add multiple domains separated by a comma. Domains follow the same matching rules as [Allowed domains for iframes in dashboards](#allowed-domains-for-iframes-in-dashboards): listing a domain like `example.com` also allows its subdomains, while listing a subdomain like `images.example.com` allows only that subdomain. diff --git a/_docs/latest/configuring-metabase/slack.md b/_docs/latest/configuring-metabase/slack.md index a1be9ab3c4..322794494c 100644 --- a/_docs/latest/configuring-metabase/slack.md +++ b/_docs/latest/configuring-metabase/slack.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/start.md b/_docs/latest/configuring-metabase/start.md index 957dff7bb2..0887701eef 100644 --- a/_docs/latest/configuring-metabase/start.md +++ b/_docs/latest/configuring-metabase/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false @@ -71,6 +71,10 @@ Cache query results for faster loading times. Upload custom maps to your Metabase. +## [Custom visualizations](../questions/visualizations/custom) + +Add your own chart types by uploading visualization plugins. + ## [Customizing the Metabase Jetty webserver](./customizing-jetty-webserver) Set SSL and port settings for the Jetty webserver. diff --git a/_docs/latest/configuring-metabase/timezones.md b/_docs/latest/configuring-metabase/timezones.md index a0a3139a41..71ee1c3578 100644 --- a/_docs/latest/configuring-metabase/timezones.md +++ b/_docs/latest/configuring-metabase/timezones.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/configuring-metabase/webhooks.md b/_docs/latest/configuring-metabase/webhooks.md index 30ab869350..882e972326 100644 --- a/_docs/latest/configuring-metabase/webhooks.md +++ b/_docs/latest/configuring-metabase/webhooks.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/dashboards/actions.md b/_docs/latest/dashboards/actions.md index 53ded2f88c..5e93bc1e8f 100644 --- a/_docs/latest/dashboards/actions.md +++ b/_docs/latest/dashboards/actions.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/dashboards/filters.md b/_docs/latest/dashboards/filters.md index a9916dd967..eda2979e78 100644 --- a/_docs/latest/dashboards/filters.md +++ b/_docs/latest/dashboards/filters.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -125,7 +125,15 @@ Additionally, you can select an operator for the location filter: ### ID filter -The ID filter provides a simple input box where you can type the ID of a user, order, and so on. +The ID filter lets people filter on the ID of a user, order, and so on. + +You can select how people should filter on this column: + +- Dropdown list +- Search box +- Input box + +See [Set filter input type](#set-filter-input-type). To control which values appear in the dropdown or search box, see [Change a filter's selectable values](#change-a-filters-selectable-values). You can give people the option to pick one value or multiple values. @@ -251,7 +259,7 @@ To change the widget type: 1. When viewing a dashboard, click the **pencil** icon to **Edit the dashboard**. 2. Click on the filter or parameter you want to edit. A widget editing sidebar should pop up on the right side. -3. In the sidebar, change the type of filter or parameter. Changing the widget type disconnects the widget from all cards. You'll need to reconnect to the relevant columns on each card for the new type. If you've changed the widget type by mistake and want to restore the widget and its connections to cards, you can exit dashboard edit mode without saving your changes. +3. In the sidebar, change the type of filter or parameter. Changing the widget type disconnects the widget from all cards. You'll need to reconnect the widget to the relevant columns on each card for the new type. If you've changed the widget type by mistake and want to restore the widget and its connections to cards, you can exit dashboard edit mode without saving your changes. ### Change filter operator @@ -315,11 +323,11 @@ A multi-select filter with the widget type [Dropdown list](#dropdown-list) or [S 3. Select "Dropdown list". If you don't see "Dropdown list" as an option, go to [Filter widgets: Dropdown list](#dropdown-list) for more info. 4. Click **Edit** (to the right of "Dropdown list") to specify where the values should come from: - - From connected fields - - From another model or question - - Custom list + - **From connected fields:** Use the values from the field the filter is connected to. + - **From another model or question:** Pick a model or question (built with either the query builder or SQL), then set the **Column to supply the values** that the filter should pass along. You can also set a **Column to supply the labels** to show friendly labels in the dropdown while still filtering on the underlying values. For example, you could filter on product ID while showing the product's title so people can search for products by name or ID. + - **Custom list:** Enter each value on its own line. - ![Selectable values](./images/selectable-values.png) +![Selectable values](./images/selectable-values.png) ### Set a default filter value diff --git a/_docs/latest/dashboards/images/selectable-values.png b/_docs/latest/dashboards/images/selectable-values.png index ea42a7b321adf418f794d3ac961fd89886f5460f..67bafddaf5e50f86671de5a75422465c0c788b5b 100644 GIT binary patch literal 230077 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ΠB)UHVxoJK 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 z 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

8m7KOrYY_2AE&R_-vk|Iyq5!+;; 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 Q5XHW%rlp$k+sz064;6dPa{vGU literal 87329 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 {;VCY>S?L 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 z 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 + https://github.com/metabase/metabase/blob/master/docs/developers-guide/custom-visualizations.md +layout: new-docs +summary: >- + Use the Custom Visualizations SDK to build, develop, and package your own + chart types for Metabase. +latest: true +--- + +# Building custom visualizations + +{% include plans-blockquote.html feature="Custom visualizations" %} + +You can create a custom chart type for Metabase that you build with React and TypeScript and ship as a plugin. + +You scaffold a project with the `@metabase/custom-viz` package, write your visualization, and package it into a `.tgz` bundle. An admin uploads the plugin to Metabase (see [Custom visualizations](../questions/visualizations/custom)), and you're in business. + +## Overview of a custom visualization + +A custom visualization is a small React app that Metabase renders in place of a built-in chart. + +Building a custom viz from scaffolding to adding it to your Metabase looks something like: + +1. **Scaffold** a project with the `@metabase/custom-viz` CLI. The command sets up the build, the manifest, and a working starter visualization. +2. **Develop** against a locally running Metabase with hot reload while you write your component and settings. +3. **Handle the data**: read query results from `series`, wire up clicks and tooltips, and add any settings your chart needs. +4. **Match the look** with Metabase's formatters, theme variables, and color scheme. +5. **Build and package** the project into a `.tgz` bundle. +6. **Add it to your Metabase**: an admin uploads the bundle, and your chart type becomes available in your Metabase. + +## Prerequisites + +- Node.js 22 or newer. +- Familiarity with React and TypeScript. +- A Metabase on a [Pro or Enterprise plan](/pricing/) to load your plugin into. + +## Scaffold a custom visualization project + +Generate a new project with the `@metabase/custom-viz` CLI: + +``` +npx @metabase/custom-viz init my-viz +``` + +Then install dependencies and start the dev server: + +``` +cd my-viz +npm install +npm run dev +``` + +`npm run dev` runs in watch mode and rebuilds your plugin on every change. + +### Project structure + +``` +src/ + index.tsx # Your visualization code — start here +metabase-plugin.json # Plugin manifest (name, icon, version) +public/ + assets/ + icon.svg # Visualization icon (shown in the chart type picker) +package.json +vite.config.ts # Build configuration — don't edit +pack.mjs # Packages the build into a .tgz — don't edit +tsconfig.json +``` + +Only `index.tsx` has to export the factory. For a more sophisticated plugin, you'd want to split the component, settings, types, and helpers into their own modules (check out the [calendar-heatmap example](#example-plugins), which keeps the definition in `index.tsx`, the React component in `Visualization.tsx`, and chart configuration and utilities under `src/`). + +### The starter visualization + +The scaffold ships a complete, working example: a chart that shows a thumbs-up emoji (👍) when a single numeric result meets a `threshold` setting, and a thumbs-down (👎) otherwise. + +## Develop against a running Metabase + +To develop your plugin against a live Metabase with hot reload: + +1. Start Metabase with the `MB_CUSTOM_VIZ_PLUGIN_DEV_MODE_ENABLED` environment variable set to `true`. Dev mode is meant for local development, so you can only turn it on with this environment variable. Like any Metabase that runs custom visualizations, this local instance needs a [Pro or Enterprise](/pricing/) token. +2. Run `npm run dev` in your project. By default, the dev server listens on `http://localhost:5174`. +3. In Metabase, go to **Admin** > **Settings** > **Custom visualizations** > **Development** and set the **Dev server URL** to your dev server's address. + +Your plugin shows up in the **Custom visualizations** section of the visualization sidebar (alongside any installed plugins) and is labeled as a dev visualization. + +If you're running Metabase in a Docker container, you'll need to set the **Dev server URL** to: + +``` +http://host.docker.internal:5174 +``` + +## The plugin manifest + +Every plugin includes a `metabase-plugin.json` file at the root of the project: + +```json +{ + "name": "my-viz", + "icon": "icon.svg", + "metabase": { + "version": ">=1.62.0" + } +} +``` + +| Field | Description | +| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | Unique identifier for the plugin. Metabase registers your visualization under this name and uses it to match replacement bundles. | +| `icon` | Path to the visualization icon (SVG recommended). Metabase serves the icon automatically. It's the only file Metabase serves alongside your bundle. See [Bundling assets](#bundling-assets). | +| `metabase.version` | Semver range of Metabase versions the plugin supports (for example, `">=1.62.0"`, `"^1.62"`, `">=1.62 <1.64"`). | + +## Defining a visualization + +`src/index.tsx` exports a factory function. Metabase calls the function with two helpers: `defineSetting` (for declaring settings) and the current `locale`. The factory function should return the result of `defineConfig`, which wraps your `VisualizationComponent`. + +```tsx +import { + defineConfig, + type CreateCustomVisualization, + type CustomVisualizationProps, +} from "@metabase/custom-viz"; + +type Settings = { + threshold?: number; +}; + +const createVisualization: CreateCustomVisualization = ({ + defineSetting, + locale, +}) => { + const VisualizationComponent = ({ + series, + settings, + width, + height, + }: CustomVisualizationProps) => { + // Render your visualization with React + return
{/* ... */}
; + }; + + return defineConfig({ + id: "my-viz", + getName: () => "My visualization", + minSize: { width: 2, height: 2 }, + defaultSize: { width: 6, height: 4 }, + checkRenderable(series, settings) { + // Throw if the visualization can't render with this data or these settings + if (series.length === 0) { + throw new Error("No data"); + } + }, + settings: { + threshold: defineSetting({ + id: "threshold", + title: "Threshold", + widget: "number", + }), + }, + VisualizationComponent, + }); +}; + +export default createVisualization; +``` + +### Visualization definition properties + +| Property | Type | Description | +| ------------------------ | ----------------------------------- | ------------------------------------------------------------------------------------------- | +| `id` | `string` | Identifier for the visualization definition. | +| `getName()` | `() => string` | Display name for the visualization. | +| `minSize` | `{ width, height }` | Minimum size on a dashboard grid. | +| `defaultSize` | `{ width, height }` | Default size on a dashboard grid. | +| `noHeader` | `boolean` | When `true`, hides the default card title and description header. | +| `canSavePng` | `boolean` | Set to `true` to enable PNG export of the live, interactive chart. Disabled by default. | +| `checkRenderable` | `(series, settings) => void` | Let people know the chart doesn't work with the current data or settings. | +| `settings` | `Record` | Map of setting definitions created with `defineSetting()`. | +| `VisualizationComponent` | `React.ComponentType` | The interactive React component that renders the visualization in questions and dashboards. | + +### Props passed to your component + +| Prop | Type | Description | +| ------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------- | +| `series` | `Series` | Query results — an array of series; each has `data.rows` and `data.cols`. | +| `settings` | `CustomVisualizationSettings` | The resolved visualization settings. | +| `width` | `number \| null` | Container width in pixels. `null` until the first measure — render `null` to avoid a flash. | +| `height` | `number \| null` | Container height in pixels. `null` until the first measure. | +| `colorScheme` | `"light" \| "dark"` | Metabase's current color scheme. | +| `onClick` | `(clickObject) => void` | Call to trigger drill-through actions on a data point. | +| `onHover` | `(hoverObject?) => void` | Call to show a tooltip on a data point. | + +## Handling query results + +`series` is an array of result sets, with one entry per series on the chart. A single question produces one entry; a dashboard card with [multiple series](../dashboards/multiple-series) produces several entries. Each entry has a `data` object: + +- `data.rows`: an array of rows; each row is an array of cell values in column order. Row order is preserved, so when you map rows to chart points one-to-one, a point's index maps straight back to `data.rows[i]`. Useful for grabbing the whole row, not just the clicked cell. +- `data.cols`: an array of column objects describing each value. The fields you'll reach for most: `name` (database column name), `display_name` (label shown in the UI), `base_type` (Metabase type, for example `"type/Integer"`), and `semantic_type` (for example `"type/Currency"` or `"type/Latitude"`). + +```tsx +const [{ data }] = series; +const total = data.rows.reduce((sum, [value]) => sum + Number(value), 0); +``` + +To classify a column without matching type strings by hand, use the column-type predicates the SDK exports: `isNumeric`, `isDate`, `isString`, `isBoolean`, `isCurrency`, `isLatitude`, `isCoordinate`, `isFK`, `isPK`, `isCategory`, `isURL`. These predicates take a `Column` and resolve type metadata from the host, so they only work inside a running Metabase. See [Formatting and theming](#formatting-and-theming). + +```tsx +import { isNumeric } from "@metabase/custom-viz"; + +const numericColumns = data.cols.filter(isNumeric); +``` + +## Clicks and tooltips + +Your component receives `onClick` and `onHover`. Call them with an object that identifies the data point being interacted with. Metabase positions popovers from it, and for clicks it offers the matching drill-through actions (filter by this value, view these rows, and so on). + +```tsx + + onClick({ + value: row[1], + column: cols[1], + dimensions: [{ value: row[0], column: cols[0] }], + event: event.nativeEvent, + element: event.currentTarget, + }) + } + onMouseMove={(event) => + onHover({ + element: event.currentTarget, + data: cols.map((col, i) => ({ + col, + value: row[i], + key: col.display_name, + })), + }) + } + onMouseLeave={() => onHover(null)} +/> +``` + +Pass `null` to `onHover` to dismiss the tooltip. `onClick` also takes an `origin: { row, cols }` when a drill-through needs the whole row, not just the clicked cell. It can take a `data` array of `{ col, value }` pairs (one per column) when an action needs every column's value. You can include `settings` (the current resolved settings) in the click object too, so dashboard click behaviors configured against your visualization have what they need. + +The hover object accepts more than `element` and `data`. Optional fields like `index` and `seriesIndex` (to highlight a series in the legend) and `value`, `column`, `dimensions`, and `event` (for a simpler single-point tooltip) are available when you need them. + +## Settings and widgets + +Define settings with the `defineSetting()` helper. Each setting shows up in the visualization settings sidebar. + +```tsx +settings: { + threshold: defineSetting({ + id: "threshold", + title: "Threshold", + getSection: () => "Display", + widget: "number", + getDefault: () => 0, + getProps: () => ({ + placeholder: "Enter threshold", + options: { isNonNegative: true }, + }), + }), +}, +``` + +### Setting definition properties + +| Property | Description | +| ------------------------------ | ------------------------------------------------------------------------------------------------ | +| `id` | Unique key — has to match the key in your `Settings` type. | +| `title` | Label shown in the sidebar. | +| `getSection()` | Function returning the section the setting appears under (for example, `"Data"` or `"Display"`). | +| `group` | Sub-heading within a section for grouping related settings. | +| `index` | Display order within a group. | +| `inline` | When `true`, renders the widget on the same line as `title` (handy for `"toggle"`). | +| `widget` | A [built-in widget](#built-in-widgets) name, or a [custom React component](#custom-widgets). | +| `getDefault(series, settings)` | Computes the default value when none is stored. | +| `getValue(series, settings)` | Always-computed value — overrides the stored value on every render. | +| `getProps(series, settings)` | Returns widget-specific props. | +| `isValid(series, settings)` | Return `false` to discard a stored value and fall back to `getDefault`. | +| `readDependencies` | Setting IDs that have to resolve before this one. | +| `writeDependencies` | Setting IDs whose current values are persisted when this setting changes. | +| `eraseDependencies` | Setting IDs reset to `null` when this setting changes. | +| `persistDefault` | When `true`, writes the value from `getDefault` to stored settings on first render. | + +### Built-in widgets + +Widgets for the settings UI. + +| Widget | `getProps()` return type | Description | +| -------------------- | -------------------------------------------------------------------------- | ------------------------ | +| `"input"` | `{ placeholder? }` | Text input | +| `"number"` | `{ placeholder?, options?: { isInteger?, isNonNegative? } }` | Numeric input | +| `"toggle"` | _(none — omit `getProps`)_ | Boolean toggle | +| `"radio"` | `{ options: { name, value }[] }` | Radio button group | +| `"select"` | `{ options: { name, value }[], placeholder?, placeholderNoOptions? }` | Dropdown | +| `"segmentedControl"` | `{ options: { name, value }[] }` | Segmented button control | +| `"color"` | `{ title? }` | Color picker | +| `"multiselect"` | `{ options: { label, value }[], placeholder?, placeholderNoOptions? }` | Multi-select dropdown | +| `"field"` | `{ columns, options: { name, value }[], showColumnSetting? }` | Single column picker | +| `"fields"` | `{ columns, options: { name, value }[], addAnother?, showColumnSetting? }` | Multi-column picker | + +### Custom widgets + +When the built-in widgets don't fit, set `widget` to your own React component instead of a built-in name. Metabase renders the component in the settings sidebar, inside the same [sandbox](#sandbox-restrictions) as your visualization. A widget that reaches for a blocked API is removed, so keep widgets to plain inputs and display. + +Metabase injects these props into your widget component (import the type with `BaseWidgetProps`): + +| Prop | Type | Description | +| ------------------ | --------------------- | --------------------------------------- | +| `id` | `string` | The setting's `id`. | +| `value` | `TValue \| undefined` | The setting's current value. | +| `onChange` | `(value?) => void` | Update this setting's value. | +| `onChangeSettings` | `(settings) => void` | Update other settings at the same time. | + +Add any extra props your component needs with `getProps()`. Its return type is your component's own props, minus the base props Metabase injects. + +```tsx +import { defineConfig, type BaseWidgetProps } from "@metabase/custom-viz"; + +type Settings = { label?: string }; + +function LabelWidget({ value, onChange }: BaseWidgetProps) { + return ( + onChange(e.target.value)} /> + ); +} + +// ...in your visualization's settings: +settings: { + label: defineSetting({ + id: "label", + title: "Label", + widget: LabelWidget, + }), +}, +``` + +## Formatting and theming + +Render numbers, dates, and currencies the way the rest of Metabase does with `formatValue`. Pass the cell's column to pick up that column's formatting settings, or override with options like `currency`, `decimals`, `compact`, or `date_style`: + +```tsx +import { formatValue } from "@metabase/custom-viz"; + +formatValue(row[1], { column: cols[1] }); +formatValue(0.084, { number_style: "percent", decimals: 1 }); // "8.4%" +``` + +`formatValue` and the column-type predicates (like `isNumeric` and `isDate`) read formatting and type metadata from Metabase. If you call them outside of Metabase, like in a unit test, they'll throw `Metabase Viz API not initialized`. + +For layout math (like fitting labels or sizing axes), `measureText(text, { size, family, weight })` returns `{ width, height }` in pixels. There's also `measureTextWidth` and `measureTextHeight` if you only need one dimension. + +To match Metabase's look (and follow [dark mode](../people-and-groups/account-settings#theme)), you have two paths. For anything you render as DOM or SVG, you can style with Metabase's CSS variables: `var(--mb-color-brand)` and the other `--mb-color-*` variables, and the theme follows automatically. + +Canvas-based charting libraries (like ECharts and Chart.js) can't read CSS variables, so in those cases you branch on the `colorScheme` prop (`"light"` or `"dark"`) and pass explicit colors. See the [calendar-heatmap example](#example-plugins) for one built with ECharts. + +## Bundling assets + +The build produces a single JavaScript bundle (`dist/index.js`), and the [icon](#the-visualization-icon) is the only file Metabase serves alongside it. Metabase doesn't serve arbitrary static files, so bundling images into your plugin is the most reliable approach. The [sandbox](#sandbox-restrictions) blocks scripted network access like `fetch` and `XMLHttpRequest`, but it doesn't stop the browser from loading an `` or CSS `url()`: an external image still loads as long as its domain is allowed by the image-domains Content Security Policy (see below). + +Bundled images always render, including when an admin has turned on [Restrict image domains](../configuring-metabase/settings#restrict-image-domains). That Content Security Policy setting limits which external hosts images can load from, but inline and `data:` images ship inside your bundle, so they're never blocked. + +Your `npm` dependencies are bundled in too. You can pull in a charting library (the calendar-heatmap example bundles [ECharts](https://echarts.apache.org/)), but everything ships in that single `dist/index.js`, so your code and its dependencies all count toward the packaged plugin's [size limits](#build-and-package-the-plugin). + +So anything your visualization renders has to live inside that bundle. For images, you have a few options: + +- **Inline SVG or emoji.** What the starter visualization does (it renders 👍 / 👎). Drop the SVG markup straight into your JSX. +- **Import the image.** Import an image from `src/` and the bundler inlines small files as a base64 data URL. Vite inlines assets below its `assetsInlineLimit` (4 KB by default); larger files are emitted as separate assets that won't ship in the single bundle, so keep imported images small or raise the limit. +- **Embed a data URL directly.** Paste a `data:image/png;base64,...` string into your component's `src`. + +```tsx +import logo from "./logo.svg"; // inlined as a data URL at build time + +const VisualizationComponent = () => ; +``` + +## The visualization icon + +The icon shows up in the chart type picker and elsewhere in the Metabase UI. + +- Declare it with `"icon"` in `metabase-plugin.json`. The default location is `public/assets/icon.svg`. +- Use `currentColor` for fills and strokes so the icon adapts to light and dark themes, as well as to hover and active states (like when it's highlighted in a menu): + +```svg + + + +``` + +- For more control, you can use Metabase's CSS variables inside an inline SVG, like `fill="var(--mb-color-brand)"`. +- Keep the icon simple and monochromatic. Skip gradients and multiple colors. + +## Build and package the plugin + +Run: + +``` +npm run build +``` + +This compiles `src/` to `dist/` and packages the result into `-.tgz` at the project root. The archive contains `metabase-plugin.json`, `dist/index.js`, and the whitelisted icon under `dist/assets/`, and has to come in under 5 MiB. The packaging step also rejects an archive whose uncompressed contents exceed 25 MiB. You don't need to commit `dist/`. + +For uploading and managing plugins, see [Custom visualizations](../questions/visualizations/custom). + +## Versioning and compatibility + +The Custom Visualizations SDK works with Metabase 1.62 and newer. Declare the versions your plugin supports with `metabase.version` in `metabase-plugin.json`, using [npm semver range](https://github.com/npm/node-semver#ranges) syntax — `">=1.62.0"`, `"^1.62"`, `">=1.62 <1.64"`. Write the range against the full version number (`">=1.62.0"`), not a bare major version (`">=62"`), which won't match. + +If you upload a bundle to a Metabase outside the plugin's declared range, Metabase rejects the upload. + +## Sandbox restrictions + +Metabase runs plugin code in an isolated sandbox, so a visualization works only from the `series` and `settings` it's given. The sandbox blocks: + +- **Network access**: `fetch`, `XMLHttpRequest`, `WebSocket`, `EventSource`, `Worker`, `SharedWorker`, `RTCPeerConnection`, `WebTransport`, `BroadcastChannel`, `navigator.sendBeacon`, and `FontFace.load`. You can't call Metabase's APIs or any other service. +- **Browser storage and cookies**: `localStorage`, `sessionStorage`, `indexedDB`, the Cache API, `document.cookie`, and the `CookieStore` API. +- **Device and credential APIs**: clipboard, geolocation, camera and microphone, service workers, the Credentials and Permissions APIs, USB, Bluetooth, HID, serial, WebXR, and Web Share. +- **Browser UI**: `window.open`, dialogs (`alert`, `confirm`, `prompt`, `print`), notifications, modal dialogs, fullscreen, and payment requests. +- **Navigation and the rest of the app**: history changes, the host page's URL and referrer, and any DOM outside the plugin's own container. +- **Unsafe DOM and timing APIs**: `document.write`, `execCommand`, constructable stylesheets, raw HTML parsers (`DOMParser`, `setHTMLUnsafe`, `XSLTProcessor`), and resource-timing APIs that expose other requests the page has made. + +### Custom visualizations only render in the live app + +Custom visualizations only render in the live, interactive app. Static renders, like dashboard subscriptions sent by [email](../dashboards/subscriptions), Slack, or webhook, fall back to a table for any card that uses a custom visualization. The same goes for [embedded](../embedding/introduction) questions and dashboards: a card that uses a custom visualization falls back to a table. + +## Example plugins + +- [Calendar heatmap](https://github.com/metabase/custom-viz-calendar-heatmap). Read through `src/` for an example of `checkRenderable`, settings, and rendering against `series` data. +- [Thumbs](https://github.com/metabase/custom-viz-thumbs). Thumbs up or down depending on a threshold. + +## Further reading + +- [Custom visualizations](../questions/visualizations/custom) +- [`@metabase/custom-viz` on npm](https://www.npmjs.com/package/@metabase/custom-viz) +- [Visualization overview](../questions/visualizations/visualizing-results) diff --git a/_docs/latest/developers-guide/dev-branch-docker.md b/_docs/latest/developers-guide/dev-branch-docker.md index 255197019c..cdb9e5d114 100644 --- a/_docs/latest/developers-guide/dev-branch-docker.md +++ b/_docs/latest/developers-guide/dev-branch-docker.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/devenv.md b/_docs/latest/developers-guide/devenv.md index 5bcdf1c07e..5aa91b67f2 100644 --- a/_docs/latest/developers-guide/devenv.md +++ b/_docs/latest/developers-guide/devenv.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/docs.md b/_docs/latest/developers-guide/docs.md index 3585c7ef44..5bcfbe7ad2 100644 --- a/_docs/latest/developers-guide/docs.md +++ b/_docs/latest/developers-guide/docs.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/driver-changelog.md b/_docs/latest/developers-guide/driver-changelog.md index 4e059b88ce..daf97aab9c 100644 --- a/_docs/latest/developers-guide/driver-changelog.md +++ b/_docs/latest/developers-guide/driver-changelog.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -13,8 +13,79 @@ latest: true # Driver Interface Changelog +## Metabase 0.62.0 + +- `sql.params.substitution/field->clause`, `to-clause`, `desugar-filter-clause`, `wrap-value-literals-in-mbql`, and + `date-string->filter`, introduced in 0.61.0, have been removed; they are no longer necessary. They have been + replaced by a single method, `sql.params.substitution/->honeysql`, which compiles an MBQL 5 clause to HoneySQL with + the given options. + +- The `metabase.driver.commmon.parameters` and `metabase.driver.commmon.parameters.parse` namespaces, deprecated in + 0.57.0, have been removed. Please use the Lib implementations instead. Relevant functions are aliased in + `metabase.lib.core`, for example `metabase.lib.core/parse-parameters`, `metabase.lib.core/parsed-parameter`, and + `metabase.lib.core/parsed-parameter?`. + +- The `metabase.driver.common.parameters.dates` and `metabase.driver.common.parameters.operators` namespaces, + deprecated in 0.57.0, have been removed. Use the equivalent QP namespaces instead: + `metabase.query-processor.parameters.dates` and `metabase.query-processor.parameters.operators`, respectively. These + namespaces return MBQL 5 clauses rather than MBQL 4; use `metabase.lib.core/->legacy-MBQL` if needed until your + driver has been fully updated to MBQL 5. + +- `metabase.driver.sql.parameters.substitution/align-temporal-unit-with-param-type`, deprecated in 0.49.0, has been + removed. + +- `metabase.driver-api.core/desugar-filter-clause`, `metabase.driver-api.core/negate-filter-clause`, and + `metabase.driver-api.core/simplify-compound-filter`, deprecated in 0.57.0, have been removed; use the + `metabase.lib.core` versions instead. The new versions operate on MBQL 5 instead of MBQL 4. + +- Added `metabase.driver.sql/table-qualification-style` multimethod. Returns one of + `:table-qualification-style/{table,schema-table,db-table,db-schema-table}` describing the per-driver + SQL identifier shape. Used by workspace table remapping + (`metabase-enterprise.workspaces.core/engine-namespace-positions`) to decide tuple shape when + storing `:model/TableRemapping` rows and matching AST positions during query rewriting. Defaults + to `:table-qualification-style/schema-table` -- the common case, so Postgres/Redshift/H2/ClickHouse + need no override. Drivers that emit `db.table` (MySQL) override to + `:table-qualification-style/db-table`; drivers that emit `db.schema.table` (SQL Server, BigQuery) + override to `:table-qualification-style/db-schema-table`. Drivers that emit a bare `table` use + `:table-qualification-style/table`. + +- Added `metabase.driver.sql/db-slot-value` multimethod. Returns the `:db` AST slot string (catalog, + project id, etc.) for a `Database` row. Required for `:table-qualification-style/db-table` and + `:table-qualification-style/db-schema-table` drivers; the default returns `nil`. Overridden by + MySQL and SQL Server (`(:db (:details db))`) and BigQuery (`(:project-id (:details db))`). + +- Added `metabase.driver/qualified-name-components` multimethod. Returns the ordered subset of + `#{:db :schema}` identifier positions a driver populates when referencing a table in compiled + SQL. Defaults to `[:schema]`. Drivers that emit bare table names (Mongo) override to `[]`; + MySQL overrides to `[:db]` (its "database" rides on the connection but participates as the + `:db` AST slot for cross-DB consumers); drivers that emit a 3-part `catalog.schema.table` + identifier (SQL Server, BigQuery) override to `[:db :schema]`. + ## Metabase 0.61.0 +- Added the following driver multimethods to support MBQL5 compilation migration: + - `sql.qp/compile-mbql` - Compiles an MBQL inner query to HoneySQL. + - `sql.qp/mbql-clause-with-opts` - Returns an MBQL clause in the desired MBQL format of the driver. + - `sql.qp/expression-by-name` - Gets an expression from a query or stage (`*inner-query`) by name. + - `sql.qp/aggregation-name` - Returns the name of an aggregation clause. + - `sql.qp/over-order-by->honeysql` - Returns the HoneySQL for an order by clause in the over clause of a window function. + - `sql.qp/clause-value-idx` - Returns the index of the value in a value clause. + - `sql.qp/breakout-options-index` - Returns the index of options in a breakout clause. + - `sql.params.substitution/field->clause` - Returns an MBQL field clause with the given options. + - `sql.params.substitution/to-clause` - Helper to dispatch to `params.ops/to-clause` or `qp.params.ops/to-clause`. + - `sql.params.substitution/desugar-filter-clause` - Helper to dispatch to `driver-api/desugar-filter-clause` or `lib/desugar-filter-clause`. + - `sql.params.substitution/wrap-value-literals-in-mbql` - Helper to dispatch to `driver-api/wrap-value-literals-in-mbql` or `driver-api/wrap-value-literals-in-mbql5`. + - `sql.params.substitution/date-string->filter` - Helper to dispatch to `params.dates/date-string->filter` or `qp.params.dates/date-string->filter`. + + These methods have implementations for the `:sql` and `:sql-mbql5` drivers. Concrete drivers should *not* need to + implement these methods. Drivers can opt-in to MBQL5 compilation by adding the `:sql-mbql5` driver as a parent, and updating the `sql.qp/->honeysql` + methods to handle the clause options argument as the second parameter. See the `:h2` driver in https://github.com/metabase/metabase/pull/71439 for + an example. Drivers will need to be migrated to work with MBQL5 compilation over the next three releases by v64. After v64 these methods will be deprecated + in favour of the `:sql-mbql5` implementations once all drivers have been migrated. + +- Added a `driver` parameter to `sql.qp/maybe-cast-uuid-for-text-compare`. Any drivers that call this function should + update it to pass in the `driver` parameter now. An example is in the Snowflake driver's `string-filter` function. + - `driver/field-reference-mlv2`, deprecated in 0.57.0, has now been removed. - `metabase.driver.sql/set-role-statement` has been deprecated in favor of diff --git a/_docs/latest/developers-guide/drivers/basics.md b/_docs/latest/developers-guide/drivers/basics.md index 0a92b3c5e0..4ac0a7cc9b 100644 --- a/_docs/latest/developers-guide/drivers/basics.md +++ b/_docs/latest/developers-guide/drivers/basics.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/drivers/driver-tests.md b/_docs/latest/developers-guide/drivers/driver-tests.md index f943f1afd1..9d643b4745 100644 --- a/_docs/latest/developers-guide/drivers/driver-tests.md +++ b/_docs/latest/developers-guide/drivers/driver-tests.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -237,7 +237,7 @@ be-tests-postgres-latest-ee: POSTGRES_DB: circle_test POSTGRES_HOST_AUTH_METHOD: trust steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Test Postgres driver (latest) uses: ./.github/actions/test-driver with: diff --git a/_docs/latest/developers-guide/drivers/multimethods.md b/_docs/latest/developers-guide/drivers/multimethods.md index fced8a0a04..b35a806c51 100644 --- a/_docs/latest/developers-guide/drivers/multimethods.md +++ b/_docs/latest/developers-guide/drivers/multimethods.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/drivers/plugins.md b/_docs/latest/developers-guide/drivers/plugins.md index f316f5165d..86c327d4b6 100644 --- a/_docs/latest/developers-guide/drivers/plugins.md +++ b/_docs/latest/developers-guide/drivers/plugins.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/drivers/start.md b/_docs/latest/developers-guide/drivers/start.md index 73fd775ca8..a067b32b91 100644 --- a/_docs/latest/developers-guide/drivers/start.md +++ b/_docs/latest/developers-guide/drivers/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/e2e-tests.md b/_docs/latest/developers-guide/e2e-tests.md index 50543bbe97..d67271d410 100644 --- a/_docs/latest/developers-guide/e2e-tests.md +++ b/_docs/latest/developers-guide/e2e-tests.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/emacs.md b/_docs/latest/developers-guide/emacs.md index 8bb233d622..03006e976b 100644 --- a/_docs/latest/developers-guide/emacs.md +++ b/_docs/latest/developers-guide/emacs.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/frontend.md b/_docs/latest/developers-guide/frontend.md index ebb50b1e7e..0d286a2b70 100644 --- a/_docs/latest/developers-guide/frontend.md +++ b/_docs/latest/developers-guide/frontend.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/images/custom-viz-dev.png b/_docs/latest/developers-guide/images/custom-viz-dev.png new file mode 100644 index 0000000000000000000000000000000000000000..85d1e9f3aedc5b9548b3ac672a91ccbe429653de GIT binary patch literal 216588 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 literal 0 HcmV?d00001 diff --git a/_docs/latest/developers-guide/internationalization.md b/_docs/latest/developers-guide/internationalization.md index 390085eaee..49c83a4705 100644 --- a/_docs/latest/developers-guide/internationalization.md +++ b/_docs/latest/developers-guide/internationalization.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/mage.md b/_docs/latest/developers-guide/mage.md index dcbcc7df57..7b20ee70b4 100644 --- a/_docs/latest/developers-guide/mage.md +++ b/_docs/latest/developers-guide/mage.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/mbql-library-changelog.md b/_docs/latest/developers-guide/mbql-library-changelog.md index 342acd9d23..78a2091abd 100644 --- a/_docs/latest/developers-guide/mbql-library-changelog.md +++ b/_docs/latest/developers-guide/mbql-library-changelog.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/security-token-scanner.md b/_docs/latest/developers-guide/security-token-scanner.md index d9f011a908..8e70d3bfa7 100644 --- a/_docs/latest/developers-guide/security-token-scanner.md +++ b/_docs/latest/developers-guide/security-token-scanner.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/start.md b/_docs/latest/developers-guide/start.md index 94853915db..0d2e242739 100644 --- a/_docs/latest/developers-guide/start.md +++ b/_docs/latest/developers-guide/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false @@ -52,6 +52,10 @@ This guide contains detailed information on how to work on Metabase codebase. - [Community drivers](./community-drivers) - [Guide to writing a driver](drivers/start) +## Customizing Metabase + +- [Building custom visualizations](./custom-visualizations) + ## Metabase documentation - [Developing Metabase documentation](./docs) diff --git a/_docs/latest/developers-guide/versioning.md b/_docs/latest/developers-guide/versioning.md index dc0cd4ad9a..af85eafd58 100644 --- a/_docs/latest/developers-guide/versioning.md +++ b/_docs/latest/developers-guide/versioning.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/visual-studio-code.md b/_docs/latest/developers-guide/visual-studio-code.md index 86d6c17fbe..5e7d0e1b28 100644 --- a/_docs/latest/developers-guide/visual-studio-code.md +++ b/_docs/latest/developers-guide/visual-studio-code.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/developers-guide/visual-tests.md b/_docs/latest/developers-guide/visual-tests.md index a46c9737cf..5d7cf7fb33 100644 --- a/_docs/latest/developers-guide/visual-tests.md +++ b/_docs/latest/developers-guide/visual-tests.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/documents/introduction.md b/_docs/latest/documents/introduction.md index 0f70225aa1..5ce5444ddb 100644 --- a/_docs/latest/documents/introduction.md +++ b/_docs/latest/documents/introduction.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/documents/start.md b/_docs/latest/documents/start.md index 1982dcd7b6..71852292c6 100644 --- a/_docs/latest/documents/start.md +++ b/_docs/latest/documents/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/embedding/ai-agent-resources.md b/_docs/latest/embedding/ai-agent-resources.md index 3ec78dc8d0..16730bfe54 100644 --- a/_docs/latest/embedding/ai-agent-resources.md +++ b/_docs/latest/embedding/ai-agent-resources.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/appearance.md b/_docs/latest/embedding/appearance.md index 63e22eac28..e5c9d66728 100644 --- a/_docs/latest/embedding/appearance.md +++ b/_docs/latest/embedding/appearance.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/authentication.md b/_docs/latest/embedding/authentication.md index 1448e7cae0..8758c6ca07 100644 --- a/_docs/latest/embedding/authentication.md +++ b/_docs/latest/embedding/authentication.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/components.md b/_docs/latest/embedding/components.md index 40839fda8e..4206a8f200 100644 --- a/_docs/latest/embedding/components.md +++ b/_docs/latest/embedding/components.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/eajs/snippets/MetabaseBrowserAttributes.md b/_docs/latest/embedding/eajs/snippets/MetabaseBrowserAttributes.md index d3cbe6b141..54d1822f4d 100644 --- a/_docs/latest/embedding/eajs/snippets/MetabaseBrowserAttributes.md +++ b/_docs/latest/embedding/eajs/snippets/MetabaseBrowserAttributes.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/eajs/snippets/MetabaseDashboardAttributes.md b/_docs/latest/embedding/eajs/snippets/MetabaseDashboardAttributes.md index ae7c43574c..90a632d190 100644 --- a/_docs/latest/embedding/eajs/snippets/MetabaseDashboardAttributes.md +++ b/_docs/latest/embedding/eajs/snippets/MetabaseDashboardAttributes.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -20,18 +20,19 @@ or `token` (for guest embeds), plus optional display configuration. -| Property | Type | Description | -| :--------------------------------------------------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -|
`auto-refresh-interval` | `number` | Auto-refresh interval in seconds. For example, `60` refreshes the dashboard every 60 seconds.
---
Optional
Available in Pro/Enterprise and Guest embed. | -| `custom-context` | `string` | Optional custom context string passed through to the guest token endpoint.
---
Optional
Available in Guest embed. | -| `dashboard-id` | `string` \| `number` | The ID of the dashboard to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Only for SSO embeds — guest embeds set the ID with `token`. | -| `drills` | `boolean` | Whether to enable drill-through on the dashboard.
---
Optional
Default: `true`
Available in Pro/Enterprise. | -| `enable-entity-navigation` | `boolean` | Whether to enable internal entity navigation (links to dashboards/questions). Requires `drills` to be `true`
---
Optional
Default: `false`
Available in Pro/Enterprise. | -| `hidden-parameters` | `string`[] | List of filter names to hide from the dashboard, e.g. `['productId']`.
---
Optional
Available in Pro/Enterprise. | -| `initial-parameters` | `object` | Default values for dashboard filters, e.g. `{ 'productId': '42' }`.
---
Optional
Available in Pro/Enterprise and Guest embed. | -| `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
---
Optional
Available in Guest embed. | -| `with-downloads` | `boolean` | Whether to show the button to download the dashboard as PDF and download question results.
---
Optional
Default: `true` on OSS/Starter, `false` on Pro/Enterprise
Available in Guest embed. | -| `with-subscriptions` | `boolean` | Whether to let people set up [dashboard subscriptions](/docs/latest/dashboards/subscriptions). Subscriptions sent from embedded dashboards exclude links to Metabase items.
---
Optional
Available in Pro/Enterprise. | -| `with-title` | `boolean` | Whether to show the dashboard title in the embed.
---
Optional
Default: `true`
Available in Guest embed. | +| Property | Type | Description | +| :--------------------------------------------------------------- | :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `auto-refresh-interval` | `number` | Auto-refresh interval in seconds. For example, `60` refreshes the dashboard every 60 seconds.
---
Optional
Available in Pro/Enterprise and Guest embed. | +| `custom-context` | `string` | Optional custom context string passed through to the guest token endpoint.
---
Optional
Available in Guest embed. | +| `dashboard-id` | `string` \| `number` | The ID of the dashboard to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Only for SSO embeds — guest embeds set the ID with `token`. | +| `drills` | `boolean` | Whether to enable drill-through on the dashboard.
---
Optional
Default: `true`
Available in Pro/Enterprise. | +| `enable-entity-navigation` | `boolean` | Whether to enable internal entity navigation (links to dashboards/questions). Requires `drills` to be `true`
---
Optional
Default: `false`
Available in Pro/Enterprise. | +| `hidden-parameters` | `string`[] | List of filter names to hide from the dashboard, e.g. `['productId']`.
---
Optional
Available in Pro/Enterprise. | +| `initial-parameters` | `object` | Default values for dashboard filters, e.g. `{ 'productId': '42' }`.
---
Optional
Available in Pro/Enterprise and Guest embed. | +| `parameters` | `object` | Controlled dashboard filters values, e.g. `{ 'productId': '42' }`. Setting this attribute supersedes `initial-parameters` as the seed and stays in sync with subsequent mutations. Pair with the `parameters-change` DOM event to track edits.
---
Optional
Available in Pro/Enterprise and Guest embed. | +| `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
---
Optional
Available in Guest embed. | +| `with-downloads` | `boolean` | Whether to show the button to download the dashboard as PDF and download question results.
---
Optional
Default: `true` on OSS/Starter, `false` on Pro/Enterprise
Available in Guest embed. | +| `with-subscriptions` | `boolean` | Whether to let people set up [dashboard subscriptions](/docs/latest/dashboards/subscriptions). Subscriptions sent from embedded dashboards exclude links to Metabase items.
---
Optional
Available in Pro/Enterprise. | +| `with-title` | `boolean` | Whether to show the dashboard title in the embed.
---
Optional
Default: `true`
Available in Guest embed. | diff --git a/_docs/latest/embedding/eajs/snippets/MetabaseMetabotAttributes.md b/_docs/latest/embedding/eajs/snippets/MetabaseMetabotAttributes.md index 0925932575..8d6c0c6398 100644 --- a/_docs/latest/embedding/eajs/snippets/MetabaseMetabotAttributes.md +++ b/_docs/latest/embedding/eajs/snippets/MetabaseMetabotAttributes.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/eajs/snippets/MetabaseQuestionAttributes.md b/_docs/latest/embedding/eajs/snippets/MetabaseQuestionAttributes.md index a9e95885aa..3155a91beb 100644 --- a/_docs/latest/embedding/eajs/snippets/MetabaseQuestionAttributes.md +++ b/_docs/latest/embedding/eajs/snippets/MetabaseQuestionAttributes.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -31,6 +31,7 @@ Use `question-id="new-native"` to embed the SQL editor interface. | `initial-sql-parameters` | `object` | Default values for SQL parameters, only applicable to native SQL questions, e.g. `{ "productId": "42" }`.
---
Optional
Available in Pro/Enterprise and Guest embed. | | `is-save-enabled` | `boolean` | Whether the save button is enabled.
---
Optional
Default: `false`
Available in Pro/Enterprise. | | `question-id` | `string` \| `number` | The ID of the question to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Use `"new"` to embed the query builder, or `"new-native"` to embed the SQL editor. Only for SSO embeds — guest embeds use `token`. | +| `sql-parameters` | `object` | Controlled SQL parameter values, e.g. `{ "productId": "42" }`. Setting this attribute supersedes `initial-sql-parameters` as the seed and stays in sync with subsequent mutations. Pair with the `sql-parameters-change` DOM event to track edits.
---
Optional
Available in Pro/Enterprise and Guest embed. | | `target-collection` | `string` \| `number` | The collection to save a question to. Values: regular ID, entity ID, `"personal"`, `"root"`.
---
Optional
Available in Pro/Enterprise. | | `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
---
Optional
Available in Guest embed. | | `with-alerts` | `boolean` | Whether to show the alerts button.
---
Optional
Default: `false`
Available in Pro/Enterprise. | diff --git a/_docs/latest/embedding/eajs/snippets/index.md b/_docs/latest/embedding/eajs/snippets/index.md index bdfbf3dd9b..2541665659 100644 --- a/_docs/latest/embedding/eajs/snippets/index.md +++ b/_docs/latest/embedding/eajs/snippets/index.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/full-app-embedding-quick-start-guide.md b/_docs/latest/embedding/full-app-embedding-quick-start-guide.md index b0347e69f1..a27215f7a4 100644 --- a/_docs/latest/embedding/full-app-embedding-quick-start-guide.md +++ b/_docs/latest/embedding/full-app-embedding-quick-start-guide.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/full-app-embedding.md b/_docs/latest/embedding/full-app-embedding.md index e58da9b039..c17ebbedb4 100644 --- a/_docs/latest/embedding/full-app-embedding.md +++ b/_docs/latest/embedding/full-app-embedding.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/full-app-ui-components.md b/_docs/latest/embedding/full-app-ui-components.md index e237381fad..bccfbe450f 100644 --- a/_docs/latest/embedding/full-app-ui-components.md +++ b/_docs/latest/embedding/full-app-ui-components.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/guest-embedding.md b/_docs/latest/embedding/guest-embedding.md index 395d4edacc..a144f58ff4 100644 --- a/_docs/latest/embedding/guest-embedding.md +++ b/_docs/latest/embedding/guest-embedding.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -115,7 +115,8 @@ You can set different attributes to enable/disable UI. Here are some example att | `token` | Required. The signed JWT token from your server. | | `with-title` | Show or hide the title. Values: `"true"` or `"false"`. | | `with-downloads`\* | Enable or disable downloads. Values: `"true"` or `"false"`. | -| `initial-parameters` | JSON string of parameter values. Example: `'{"category":["Gizmo"]}'`. | +| `initial-parameters` | JSON string of initial parameter values (uncontrolled). Example: `'{"category":["Gizmo"]}'`. See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). | +| `parameters` | JSON string of parameter values (controlled). Example: `'{"category":["Gizmo"]}'`. See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). | | `auto-refresh-interval` | Dashboards only. Auto-refresh interval in seconds. | | `custom-context` | Forwarded to your [`guestEmbedProviderUri`](#refreshing-or-initializing-the-jwt-from-your-server) endpoint as `customContext`. Either a string (e.g., `"gadgets-tab"`), or a JSON-stringified object like `initial-parameters` (e.g., `'{"tab":"gadgets","region":"us-east"}'`). | @@ -199,6 +200,8 @@ Fetch the JWT token from your backend and programmatically pass it to the 'metab ``` +See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components) for controlled parameters documentation. + ### Locked parameters Locked parameters let you filter data without exposing the filter to the end-user. Locking parameters is useful for restricting data based on who's viewing the embed (for example, showing each customer only their own data). diff --git a/_docs/latest/embedding/introduction.md b/_docs/latest/embedding/introduction.md index a6eab87494..70527729c3 100644 --- a/_docs/latest/embedding/introduction.md +++ b/_docs/latest/embedding/introduction.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/modular-embedding.md b/_docs/latest/embedding/modular-embedding.md index 328ae09b77..70b9a8a3cd 100644 --- a/_docs/latest/embedding/modular-embedding.md +++ b/_docs/latest/embedding/modular-embedding.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -187,6 +187,10 @@ When you're creating a new embed using **Admin > Embedding > Setup guide > Embed - **Allow alerts**: lets people set up [alerts](../questions/alerts) on embedded questions. Requires [email setup](../configuring-metabase/email). Only for authenticated (SSO) question embeds. +## Pass parameter values to embedded components + +See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). + ## Page-level config To define the configuration that applies to every embed on the page, use the `defineMetabaseConfig()` function. Its parameters include: diff --git a/_docs/latest/embedding/parameters.md b/_docs/latest/embedding/parameters.md new file mode 100644 index 0000000000..f190bb3f14 --- /dev/null +++ b/_docs/latest/embedding/parameters.md @@ -0,0 +1,185 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: Modular embedding parameters +source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/parameters.md' +layout: new-docs +summary: >- + Pass parameter values to embedded dashboards and SQL questions in modular + embedding (React SDK and web components). +latest: true +--- + +# Modular embedding parameters + +This page covers how to pass parameter values to embedded dashboards and SQL questions. + +## Modular embedding SDK (React) + +### Pass parameter values to a dashboard + +You can set initial values for embeds (uncontrolled), and optionally keep your app in sync with values as people change them (controlled). You can pick either `initialParameters` and `parameters`, but don't combine them. + +#### `initialParameters` (uncontrolled) + +Set the filter values once on load. Your app won't know when people change filters in the dashboard. Pick this when you don't need to track those changes. + +```typescript +{% include_file "{{ dirname }}/snippets/parameters/dashboards/initial-parameters.tsx" snippet="example" %} +``` + +See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### `parameters` + `onParametersChange` (controlled) + +Push values from your app, and observe every applied change via `onParametersChange`. This works like a controlled ``. Your app holds the source of truth, the dashboard re-renders when the prop changes, and you receive a callback whenever applied values change. + +```typescript +{% include_file "{{ dirname }}/snippets/parameters/dashboards/controlled-parameters.tsx" snippet="example-controlled" %} +``` + +`onParametersChange` receives the [dashboard parameter change payload](#dashboard-parameter-change-payload). + + +> Don't combine `initialParameters` and `parameters` - pick one. For controlled behavior, only use `parameters`. + +### Pass parameters to SQL questions + +You can pass [parameter](../questions/native-editor/sql-parameters) values to SQL questions in the format `{parameter_name: parameter_value}`. You can set initial values for embeds (uncontrolled), and optionally keep your app in sync with values as people change them (controlled). + +These props only work with SQL questions, not query-builder questions. + +#### `initialSqlParameters` (uncontrolled) + +Set the parameter values once on load. Your app won't know when people change parameters in the question. Pick this when you don't need to track those changes. + +```typescript +{% include_file "{{ dirname }}/snippets/parameters/questions/initial-sql-parameters.tsx" snippet="example" %} +``` + +See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### `sqlParameters` + `onSqlParametersChange` (controlled) + +Push values from your app, and observe every applied change via `onSqlParametersChange`. This works like a controlled `` - your app holds the source of truth, the question re-renders when the prop changes, and you receive a callback whenever applied values change. + +```typescript +{% include_file "{{ dirname }}/snippets/parameters/questions/controlled-sql-parameters.tsx" snippet="example-controlled" %} +``` + +`onSqlParametersChange` receives the [SQL question parameter change payload](#sql-question-parameter-change-payload). + +## Modular embedding (web components) + +### Pass parameter values to embedded components + +You can set dashboard filters and SQL parameters from your page, push new values at runtime, and listen for applied changes. + +#### Seed values once with `initial-parameters` / `initial-sql-parameters` + +Set values on mount via attributes. The component reads them once on load and ignores any subsequent changes to the attribute. User widget edits are not reflected back to your page. + +```html + + + +``` + +Attributes carry JSON. Pass an object whose keys are parameter slugs (dashboards) or SQL variable names (questions). See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### Push values at runtime with `parameters` / `sqlParameters` + +For controlled behavior, set the JS property on the element instead of the attribute. The component re-renders to apply the new values. + +```html + + + +``` + +The same pattern works for `metabase-question` via the `sqlParameters` property. + +To switch a component back to uncontrolled mode (leaving the last applied values in place), set the property to `undefined`. + +#### Clearing parameters + +To clear a single parameter, set its value to `null`. This strictly clears the parameter and ignores its default value. + +```html + +``` + +To clear every parameter, assign an empty object `{}`. + +```html + +``` + +#### Observe applied changes with `parameters-change` / `sql-parameters-change` + +Listen for events to keep your page in sync with what's actually applied: + +```html + + + +``` + +The `event.detail` carries the [dashboard parameter change payload](#dashboard-parameter-change-payload). + +For SQL questions, listen for `sql-parameters-change` on ``. Its `event.detail` carries the [SQL question parameter change payload](#sql-question-parameter-change-payload). + +## How parameter values are resolved + +These rules apply to all four props — `initialParameters` / `parameters` (dashboards) and `initialSqlParameters` / `sqlParameters` (SQL questions) — and to the matching web component attributes (`initial-parameters`, `parameters`, etc.). For each parameter slug: + +- **Set a value**: Pass a `string` for a single-option filter, and an array of `string`s for multi-option filters. +- **Clear a value:** Set to `null`: the parameter is cleared and its default is not used. +- **Reset to the default value**: Omit a value (or set to `undefined`) and the embed will fall back to the parameter's default (or `null` if it has no default). + +## Dashboard parameter change payload + +Delivered to `onParametersChange` (SDK) and as `event.detail` for the `parameters-change` event (web components). + +{% include_file "{{ dirname }}/sdk/api/snippets/ParameterChangePayload.md" snippet="properties" %} + +`source` indicates why the callback fired: + +{% include_file "{{ dirname }}/sdk/api/snippets/ParameterChangeSource.md" %} + +## SQL question parameter change payload + +Delivered to `onSqlParametersChange` (SDK) and as `event.detail` for the `sql-parameters-change` event (web components). + +{% include_file "{{ dirname }}/sdk/api/snippets/SqlParameterChangePayload.md" snippet="properties" %} + +`source` indicates why the callback fired: + +{% include_file "{{ dirname }}/sdk/api/snippets/SqlParameterChangeSource.md" %} diff --git a/_docs/latest/embedding/public-links.md b/_docs/latest/embedding/public-links.md index c405a5ebb5..3a1d2cd1d7 100644 --- a/_docs/latest/embedding/public-links.md +++ b/_docs/latest/embedding/public-links.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/ai-chat.md b/_docs/latest/embedding/sdk/ai-chat.md index 720d818b7e..2717206605 100644 --- a/_docs/latest/embedding/sdk/ai-chat.md +++ b/_docs/latest/embedding/sdk/ai-chat.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/ButtonProps.html b/_docs/latest/embedding/sdk/api/ButtonProps.html index 290516a4a4..b1d423d1d5 100644 --- a/_docs/latest/embedding/sdk/api/ButtonProps.html +++ b/_docs/latest/embedding/sdk/api/ButtonProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/ChartColor.html b/_docs/latest/embedding/sdk/api/ChartColor.html index ac1db9dd4d..36d6578a00 100644 --- a/_docs/latest/embedding/sdk/api/ChartColor.html +++ b/_docs/latest/embedding/sdk/api/ChartColor.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/ChartColorV2.html b/_docs/latest/embedding/sdk/api/ChartColorV2.html index 6da97570ff..ff648fe7ae 100644 --- a/_docs/latest/embedding/sdk/api/ChartColorV2.html +++ b/_docs/latest/embedding/sdk/api/ChartColorV2.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/CollectionBrowser.html b/_docs/latest/embedding/sdk/api/CollectionBrowser.html index 490189aa80..b11d9d79b1 100644 --- a/_docs/latest/embedding/sdk/api/CollectionBrowser.html +++ b/_docs/latest/embedding/sdk/api/CollectionBrowser.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/CollectionBrowserListColumns.html b/_docs/latest/embedding/sdk/api/CollectionBrowserListColumns.html index 3483bb2a78..3b3f43247e 100644 --- a/_docs/latest/embedding/sdk/api/CollectionBrowserListColumns.html +++ b/_docs/latest/embedding/sdk/api/CollectionBrowserListColumns.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/CollectionBrowserProps.html b/_docs/latest/embedding/sdk/api/CollectionBrowserProps.html index 8d2a18299a..d3eb1c7513 100644 --- a/_docs/latest/embedding/sdk/api/CollectionBrowserProps.html +++ b/_docs/latest/embedding/sdk/api/CollectionBrowserProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/CreateDashboardModal.html b/_docs/latest/embedding/sdk/api/CreateDashboardModal.html index 629483caea..89907b13e4 100644 --- a/_docs/latest/embedding/sdk/api/CreateDashboardModal.html +++ b/_docs/latest/embedding/sdk/api/CreateDashboardModal.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/CreateDashboardModalProps.html b/_docs/latest/embedding/sdk/api/CreateDashboardModalProps.html index d2161bce20..0a1448abe1 100644 --- a/_docs/latest/embedding/sdk/api/CreateDashboardModalProps.html +++ b/_docs/latest/embedding/sdk/api/CreateDashboardModalProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/CreateDashboardValues.html b/_docs/latest/embedding/sdk/api/CreateDashboardValues.html index e621a37442..e3eb1f1067 100644 --- a/_docs/latest/embedding/sdk/api/CreateDashboardValues.html +++ b/_docs/latest/embedding/sdk/api/CreateDashboardValues.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/CreateQuestion.html b/_docs/latest/embedding/sdk/api/CreateQuestion.html index 7cc0cb126d..a13aeae2ed 100644 --- a/_docs/latest/embedding/sdk/api/CreateQuestion.html +++ b/_docs/latest/embedding/sdk/api/CreateQuestion.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -17,19 +17,43 @@
  • Optionalheight?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

  • OptionalhiddenParameters?: string[]

    A list of parameters to hide.

  • OptionalinitialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
  • OptionalisSaveEnabled?: boolean

    Whether to show the save button.

  • OptionalonBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

  • OptionalonNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

  • OptionalonRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

  • OptionalonSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
  • OptionalonSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

  • OptionalonVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

    -
  • Optionalplugins?: MetabasePluginsConfig
  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

    +
  • Optionalplugins?: MetabasePluginsConfig
  • OptionalsqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
    +
  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

  • OptionaltargetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

  • Optionaltitle?: SdkQuestionTitleProps

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

  • Optionalwidth?: Width<string | number>

    A number or string specifying a CSS size value that specifies the width of the component

  • OptionalwithAlerts?: boolean

    Enables the ability to set up alerts on the question.

  • OptionalwithChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

  • OptionalwithDownloads?: boolean

    Enables the ability to download results in the question.

    +
  • OptionalwithEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

  • undefined
  • Returns Element

    Use <InteractiveQuestion questionId="new" /> instead.

    diff --git a/_docs/latest/embedding/sdk/api/CreateQuestionProps.html b/_docs/latest/embedding/sdk/api/CreateQuestionProps.html index 49b26da63d..df6f7673d6 100644 --- a/_docs/latest/embedding/sdk/api/CreateQuestionProps.html +++ b/_docs/latest/embedding/sdk/api/CreateQuestionProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,7 +11,7 @@ latest: true --- -CreateQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface CreateQuestionProps

    interface CreateQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className? +CreateQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface CreateQuestionProps

    interface CreateQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onSqlParametersChange?: (payload: SqlParameterChangePayload) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        sqlParameters?: SqlParameterValues;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withEditorButton?: boolean;
    }
    Index

    Properties

    className?: string

    A custom class name to be added to the root element.

    dataPicker?: EmbeddingDataPicker

    Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting dataPicker = "staged".

    entityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    hiddenParameters?: string[]

    A list of parameters to hide.

    initialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

    onRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

    Type Declaration

      • (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • display:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new display type

          -

        Returns void

    A custom style object to be added to the root element.

    +

    Returns void

    sqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
    +

    A custom style object to be added to the root element.

    targetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    width?: Width<string | number>

    A number or string specifying a CSS size value that specifies the width of the component

    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +
    withEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

    +

    diff --git a/_docs/latest/embedding/sdk/api/CustomDashboardCardMenuItem.html b/_docs/latest/embedding/sdk/api/CustomDashboardCardMenuItem.html index 79f040b79d..1ff1bce7dc 100644 --- a/_docs/latest/embedding/sdk/api/CustomDashboardCardMenuItem.html +++ b/_docs/latest/embedding/sdk/api/CustomDashboardCardMenuItem.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/DashCardMenuItem.html b/_docs/latest/embedding/sdk/api/DashCardMenuItem.html index d4b98e8f59..8fa6806a74 100644 --- a/_docs/latest/embedding/sdk/api/DashCardMenuItem.html +++ b/_docs/latest/embedding/sdk/api/DashCardMenuItem.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/DashboardCardCustomMenuItem.html b/_docs/latest/embedding/sdk/api/DashboardCardCustomMenuItem.html index f07943e21e..048bb03d10 100644 --- a/_docs/latest/embedding/sdk/api/DashboardCardCustomMenuItem.html +++ b/_docs/latest/embedding/sdk/api/DashboardCardCustomMenuItem.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/DashboardCardMenu.html b/_docs/latest/embedding/sdk/api/DashboardCardMenu.html index 9b61aeea62..f6e0bfb49c 100644 --- a/_docs/latest/embedding/sdk/api/DashboardCardMenu.html +++ b/_docs/latest/embedding/sdk/api/DashboardCardMenu.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/DashboardCardMenuCustomElement.html b/_docs/latest/embedding/sdk/api/DashboardCardMenuCustomElement.html index 5f5de50366..13c2c4be07 100644 --- a/_docs/latest/embedding/sdk/api/DashboardCardMenuCustomElement.html +++ b/_docs/latest/embedding/sdk/api/DashboardCardMenuCustomElement.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/DrillThroughQuestionProps.html b/_docs/latest/embedding/sdk/api/DrillThroughQuestionProps.html index 9b81898b13..85eebba468 100644 --- a/_docs/latest/embedding/sdk/api/DrillThroughQuestionProps.html +++ b/_docs/latest/embedding/sdk/api/DrillThroughQuestionProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -12,7 +12,7 @@ --- DrillThroughQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface DrillThroughQuestionProps

    Props for the drill-through question

    -
    interface DrillThroughQuestionProps {
        children?: ReactNode;
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    interface DrillThroughQuestionProps {
        children?: ReactNode;
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withEditorButton?: boolean;
    }
    Index

    Properties

    children?: ReactNode

    The children of the component

    className?: string

    A custom class name to be added to the root element.

    dataPicker?: EmbeddingDataPicker

    Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting dataPicker = "staged".

    entityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    initialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    @@ -49,4 +60,5 @@
    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +
    withEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

    +

    diff --git a/_docs/latest/embedding/sdk/api/EditableDashboard.html b/_docs/latest/embedding/sdk/api/EditableDashboard.html index b53317935c..6d0bd6773c 100644 --- a/_docs/latest/embedding/sdk/api/EditableDashboard.html +++ b/_docs/latest/embedding/sdk/api/EditableDashboard.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -35,17 +35,43 @@
  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
  • OptionalinitialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

  • OptionalinitialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • OptionalonLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

  • OptionalonLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
  • OptionalonParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

  • OptionalonVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    +
  • Optionalparameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
  • Optionalplugins?: MetabasePluginsConfig

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

  • OptionalrenderDrillThroughQuestion?: () => ReactNode

    A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout.

    diff --git a/_docs/latest/embedding/sdk/api/EditableDashboardProps.html b/_docs/latest/embedding/sdk/api/EditableDashboardProps.html index 4053f7685e..aafee93157 100644 --- a/_docs/latest/embedding/sdk/api/EditableDashboardProps.html +++ b/_docs/latest/embedding/sdk/api/EditableDashboardProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,7 +11,7 @@ latest: true --- -EditableDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface EditableDashboardProps

    interface EditableDashboardProps {
        autoRefreshInterval?: number;
        className?: string;
        dashboardId: string | number;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        drillThroughQuestionHeight?: Height<string | number>;
        drillThroughQuestionProps?: DrillThroughQuestionProps;
        enableEntityNavigation?: boolean;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: MetabaseDashboard | null) => void;
        onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
        onVisualizationChange?: (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        renderDrillThroughQuestion?: () => ReactNode;
        style?: CSSProperties;
        token?: string | null;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withSubscriptions?: boolean;
        withTitle?: boolean;
    }
    Index

    Properties

    autoRefreshInterval? +EditableDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface EditableDashboardProps

    interface EditableDashboardProps {
        autoRefreshInterval?: number;
        className?: string;
        dashboardId: string | number;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        drillThroughQuestionHeight?: Height<string | number>;
        drillThroughQuestionProps?: DrillThroughQuestionProps;
        enableEntityNavigation?: boolean;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: MetabaseDashboard | null) => void;
        onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
        onParametersChange?: (payload: ParameterChangePayload) => void;
        onVisualizationChange?: (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        parameters?: ParameterValues;
        plugins?: MetabasePluginsConfig;
        renderDrillThroughQuestion?: () => ReactNode;
        style?: CSSProperties;
        token?: string | null;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withSubscriptions?: boolean;
        withTitle?: boolean;
    }
    Index
  • OptionalentityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

  • Optionalheight?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

  • OptionalinitialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
  • OptionalisSaveEnabled?: boolean

    Whether to show the save button.

  • OptionalonBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

  • OptionalonRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    @@ -64,6 +76,7 @@
  • OptionalwithAlerts?: boolean

    Enables the ability to set up alerts on the question.

  • OptionalwithChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

  • OptionalwithDownloads?: boolean

    Enables the ability to download results in the question.

    +
  • OptionalwithEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

  • enableEntityNavigation?: boolean

    When true, internal click behaviors (links to dashboards/questions) are preserved. When false (default for SDK), these click behaviors are filtered out.

    hiddenParameters?: string[]

    A list of parameters to hide. @@ -73,19 +86,45 @@

  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
    initialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

    initialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
    onLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

    onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
    onParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    Type Declaration

      • (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • visualization:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new visualization type

          -

        Returns void

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    +

    Returns void

    parameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
    +

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    renderDrillThroughQuestion?: () => ReactNode

    A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout.

    A custom style object to be added to the root element.

    @@ -93,4 +132,4 @@
    withDownloads?: boolean

    Whether to hide the download button.

    withSubscriptions?: boolean

    Whether to show the subscriptions button.

    withTitle?: boolean

    Whether the dashboard should display a title.

    -

    +

    diff --git a/_docs/latest/embedding/sdk/api/EmbeddingDataPicker.html b/_docs/latest/embedding/sdk/api/EmbeddingDataPicker.html index 2bf355f3f5..01793015bc 100644 --- a/_docs/latest/embedding/sdk/api/EmbeddingDataPicker.html +++ b/_docs/latest/embedding/sdk/api/EmbeddingDataPicker.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/EmbeddingEntityType.html b/_docs/latest/embedding/sdk/api/EmbeddingEntityType.html index 5aaa029d4e..31db95c8a4 100644 --- a/_docs/latest/embedding/sdk/api/EmbeddingEntityType.html +++ b/_docs/latest/embedding/sdk/api/EmbeddingEntityType.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/EntityTypeFilterKeys.html b/_docs/latest/embedding/sdk/api/EntityTypeFilterKeys.html index aba3866b42..24cb6ae05f 100644 --- a/_docs/latest/embedding/sdk/api/EntityTypeFilterKeys.html +++ b/_docs/latest/embedding/sdk/api/EntityTypeFilterKeys.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/IconName.html b/_docs/latest/embedding/sdk/api/IconName.html index 9428dcaf4b..d007d9e3cb 100644 --- a/_docs/latest/embedding/sdk/api/IconName.html +++ b/_docs/latest/embedding/sdk/api/IconName.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,4 +11,4 @@ latest: true --- -IconName | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias IconName

    IconName:
        | "string"
        | "number"
        | "function"
        | "collection"
        | "dashboard"
        | "question"
        | "model"
        | "archive"
        | "table"
        | "bar"
        | "line"
        | "pie"
        | "scalar"
        | "area"
        | "smartscalar"
        | "gauge"
        | "progress"
        | "funnel"
        | "boxplot"
        | "waterfall"
        | "sankey"
        | "list"
        | "revert"
        | "add"
        | "add_collection"
        | "add_column"
        | "add_data"
        | "add_folder"
        | "add_list"
        | "add_row"
        | "add_to_dash"
        | "add_comment"
        | "ai"
        | "alert"
        | "alert_filled"
        | "alert_confirm"
        | "attachment"
        | "arrow_up"
        | "arrow_down"
        | "arrow_left"
        | "arrow_left_to_line"
        | "arrow_right"
        | "arrow_split"
        | "audit"
        | "badge"
        | "ban"
        | "bell"
        | "birthday"
        | "book_open"
        | "bookmark"
        | "bookmark_filled"
        | "bolt"
        | "bolt_filled"
        | "breakout"
        | "bubble"
        | "broken_link"
        | "burger"
        | "calendar"
        | "camera"
        | "chart_layout_default"
        | "chart_layout_stack"
        | "check"
        | "check_filled"
        | "code_block"
        | "chevrondown"
        | "chevronleft"
        | "chevronright"
        | "chevronup"
        | "click"
        | "clipboard"
        | "clock"
        | "clone"
        | "close"
        | "cloud"
        | "cloud_filled"
        | "collection2"
        | "compare"
        | "combine"
        | "company"
        | "comment"
        | "currency"
        | "connections"
        | "contract"
        | "copy"
        | "corner_up_right"
        | "curved"
        | "database"
        | "database_routing"
        | "dependencies"
        | "data_studio"
        | "dash"
        | "curve"
        | "document"
        | "download"
        | "dyno"
        | "edit_document"
        | "edit_document_outlined"
        | "ellipsis"
        | "embed"
        | "embed_interactive"
        | "embed_modular"
        | "embed_static"
        | "empty"
        | "enter_or_return"
        | "exit"
        | "expand"
        | "expand_arrow"
        | "extract"
        | "eye"
        | "eye_crossed_out"
        | "eye_outline"
        | "factory"
        | "field"
        | "fields"
        | "filter"
        | "filter_plus"
        | "find_replace"
        | "bug"
        | "format_code"
        | "formula"
        | "funnel_outline"
        | "folder"
        | "folder_database"
        | "folder_filled"
        | "gear"
        | "gear_settings_filled"
        | "gem"
        | "ghost"
        | "globe"
        | "glossary"
        | "git_branch"
        | "grabber"
        | "grid"
        | "grid_2x2"
        | "grid_bordered"
        | "group"
        | "google"
        | "google_drive"
        | "google_sheet"
        | "history"
        | "home"
        | "horizontal_bar"
        | "hourglass"
        | "info"
        | "info_outline"
        | "insight"
        | "int"
        | "io"
        | "join_full_outer"
        | "join_inner"
        | "join_left_outer"
        | "join_right_outer"
        | "index"
        | "key"
        | "label"
        | "layout_grid"
        | "ldap"
        | "learn"
        | "lightbulb"
        | "link"
        | "lines"
        | "lineandbar"
        | "line_style_dashed"
        | "line_style_dotted"
        | "line_style_solid"
        | "location"
        | "lock"
        | "lock_filled"
        | "mail"
        | "mail_filled"
        | "mcp"
        | "medallion"
        | "message_circle"
        | "metabot"
        | "metabot_sad"
        | "metric"
        | "mode"
        | "model_with_badge"
        | "moon"
        | "move"
        | "move_card"
        | "network"
        | "new_folder"
        | "notebook"
        | "octagon_alert"
        | "package"
        | "palette"
        | "pause"
        | "pencil"
        | "pencil_lines"
        | "permissions_limited"
        | "person"
        | "pie_slice"
        | "pin"
        | "pinmap"
        | "pivot_table"
        | "play"
        | "play_outlined"
        | "popover"
        | "popular"
        | "publish"
        | "published"
        | "pulse"
        | "receipt"
        | "recents"
        | "share"
        | "send"
        | "settings"
        | "smile"
        | "split"
        | "sql"
        | "subscription"
        | "straight"
        | "stepped"
        | "sticky_note"
        | "sort"
        | "sort_arrows"
        | "sum"
        | "sync"
        | "synced_collection"
        | "transform"
        | "quote"
        | "redo"
        | "return"
        | "reference"
        | "refresh"
        | "refresh_downstream"
        | "rename"
        | "repository"
        | "rocket"
        | "ruler"
        | "schema"
        | "search"
        | "search_check"
        | "section"
        | "segment"
        | "shield"
        | "shield_outline"
        | "shield_stroke"
        | "sidebar_closed"
        | "sidebar_open"
        | "slack"
        | "slack_colorized"
        | "snail"
        | "snippet"
        | "sparkles"
        | "star_filled"
        | "star"
        | "stop"
        | "store"
        | "sun"
        | "t-shirt"
        | "tab"
        | "table2"
        | "text_bold"
        | "text_italic"
        | "text_strike"
        | "thumbs_down"
        | "thumbs_up"
        | "time_history"
        | "trash"
        | "trash_filled"
        | "triangle_left"
        | "triangle_right"
        | "unarchive"
        | "undo"
        | "unknown"
        | "unpin"
        | "unpublish"
        | "unreferenced"
        | "unsubscribe"
        | "upload"
        | "variable"
        | "verified"
        | "official_collection"
        | "open_folder"
        | "ordered_list"
        | "verified_filled"
        | "verified_round"
        | "view_archive"
        | "warning"
        | "warning_round_filled"
        | "warning_triangle_filled"
        | "webhook"
        | "10k"
        | "1m"
        | "zap"
        | "zoom_in"
        | "zoom_out"
        | "cake"
        | "external"
        | "beaker"
        | "test_tube"
        | "eye_filled"

    +IconName | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias IconName

    IconName:
        | "string"
        | "number"
        | "function"
        | "collection"
        | "dashboard"
        | "question"
        | "model"
        | "archive"
        | "table"
        | "bar"
        | "line"
        | "pie"
        | "scalar"
        | "area"
        | "smartscalar"
        | "gauge"
        | "progress"
        | "funnel"
        | "boxplot"
        | "waterfall"
        | "sankey"
        | "list"
        | "revert"
        | "add"
        | "add_collection"
        | "add_column"
        | "add_data"
        | "add_folder"
        | "add_list"
        | "add_row"
        | "add_to_dash"
        | "add_comment"
        | "ai"
        | "alert"
        | "alert_filled"
        | "alert_confirm"
        | "attachment"
        | "arrow_up"
        | "arrow_down"
        | "arrow_left"
        | "arrow_left_to_line"
        | "arrow_right"
        | "arrow_split"
        | "audit"
        | "badge"
        | "ban"
        | "bell"
        | "birthday"
        | "book_open"
        | "bookmark"
        | "bookmark_filled"
        | "bolt"
        | "bolt_filled"
        | "breakout"
        | "bubble"
        | "broken_link"
        | "burger"
        | "calendar"
        | "camera"
        | "chart_layout_default"
        | "chart_layout_stack"
        | "check"
        | "check_filled"
        | "code_block"
        | "chevrondown"
        | "chevronleft"
        | "chevronright"
        | "chevronup"
        | "click"
        | "clipboard"
        | "clock"
        | "clone"
        | "close"
        | "cloud"
        | "cloud_filled"
        | "collection2"
        | "compare"
        | "combine"
        | "company"
        | "comment"
        | "currency"
        | "connections"
        | "contract"
        | "copy"
        | "corner_up_right"
        | "curved"
        | "database"
        | "database_routing"
        | "dependencies"
        | "dependent"
        | "data_studio"
        | "dash"
        | "curve"
        | "document"
        | "download"
        | "dyno"
        | "edit_document"
        | "edit_document_outlined"
        | "ellipsis"
        | "embed"
        | "embed_interactive"
        | "embed_modular"
        | "embed_static"
        | "empty"
        | "enter_or_return"
        | "exit"
        | "expand"
        | "expand_arrow"
        | "extract"
        | "eye"
        | "eye_crossed_out"
        | "eye_outline"
        | "factory"
        | "field"
        | "fields"
        | "filter"
        | "filter_plus"
        | "find_replace"
        | "bug"
        | "format_code"
        | "formula"
        | "funnel_outline"
        | "folder"
        | "folder_database"
        | "folder_filled"
        | "gear"
        | "gear_settings_filled"
        | "gem"
        | "ghost"
        | "globe"
        | "glossary"
        | "git_branch"
        | "grabber"
        | "grid"
        | "grid_2x2"
        | "grid_bordered"
        | "group"
        | "google"
        | "google_drive"
        | "google_sheet"
        | "history"
        | "home"
        | "horizontal_bar"
        | "hourglass"
        | "info"
        | "info_outline"
        | "insight"
        | "int"
        | "io"
        | "join_full_outer"
        | "join_inner"
        | "join_left_outer"
        | "join_right_outer"
        | "index"
        | "key"
        | "label"
        | "layout_grid"
        | "ldap"
        | "learn"
        | "lightbulb"
        | "link"
        | "lines"
        | "lineandbar"
        | "line_style_dashed"
        | "line_style_dotted"
        | "line_style_solid"
        | "location"
        | "lock"
        | "lock_filled"
        | "mail"
        | "mail_filled"
        | "mcp"
        | "medallion"
        | "message_circle"
        | "metabot"
        | "metabot_sad"
        | "metric"
        | "mode"
        | "model_with_badge"
        | "moon"
        | "move"
        | "move_card"
        | "network"
        | "new_folder"
        | "notebook"
        | "octagon_alert"
        | "package"
        | "palette"
        | "pause"
        | "pencil"
        | "pencil_lines"
        | "permissions_limited"
        | "person"
        | "pie_slice"
        | "pin"
        | "pinmap"
        | "pivot_table"
        | "play"
        | "play_outlined"
        | "popover"
        | "popular"
        | "publish"
        | "published"
        | "pulse"
        | "receipt"
        | "recents"
        | "share"
        | "send"
        | "settings"
        | "smile"
        | "split"
        | "sql"
        | "subscription"
        | "straight"
        | "stepped"
        | "sticky_note"
        | "sort"
        | "sort_arrows"
        | "sum"
        | "sync"
        | "synced_collection"
        | "transform"
        | "quote"
        | "redo"
        | "return"
        | "reference"
        | "refresh"
        | "refresh_downstream"
        | "rename"
        | "repository"
        | "rocket"
        | "ruler"
        | "schema"
        | "search"
        | "search_check"
        | "section"
        | "segment"
        | "shield"
        | "shield_outline"
        | "shield_stroke"
        | "sidebar_closed"
        | "sidebar_open"
        | "slack"
        | "slack_colorized"
        | "snail"
        | "snippet"
        | "sparkles"
        | "star_filled"
        | "star"
        | "stop"
        | "store"
        | "sun"
        | "t-shirt"
        | "tab"
        | "table2"
        | "text_bold"
        | "text_italic"
        | "text_strike"
        | "thumbs_down"
        | "thumbs_up"
        | "time_history"
        | "trash"
        | "trash_filled"
        | "triangle_left"
        | "triangle_right"
        | "unarchive"
        | "undo"
        | "unknown"
        | "unpin"
        | "unpublish"
        | "unreferenced"
        | "unsubscribe"
        | "upload"
        | "variable"
        | "verified"
        | "official_collection"
        | "open_folder"
        | "ordered_list"
        | "verified_filled"
        | "verified_round"
        | "view_archive"
        | "warning"
        | "warning_round"
        | "warning_round_filled"
        | "warning_triangle_filled"
        | "webhook"
        | "10k"
        | "1m"
        | "zap"
        | "zoom_in"
        | "zoom_out"
        | "cake"
        | "external"
        | "beaker"
        | "test_tube"
        | "eye_filled"

    diff --git a/_docs/latest/embedding/sdk/api/InitializationStatus.html b/_docs/latest/embedding/sdk/api/InitializationStatus.html index 5e86b40e1b..632afb1901 100644 --- a/_docs/latest/embedding/sdk/api/InitializationStatus.html +++ b/_docs/latest/embedding/sdk/api/InitializationStatus.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveDashboard.html b/_docs/latest/embedding/sdk/api/InteractiveDashboard.html index 9e3e0272a0..cb2c79beb5 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveDashboard.html +++ b/_docs/latest/embedding/sdk/api/InteractiveDashboard.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,8 +11,8 @@ latest: true --- -InteractiveDashboard | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Function InteractiveDashboard

    • A dashboard component with drill downs, click behaviors, and the ability to view and click into questions.

      -

      Parameters

      • props: {
            autoRefreshInterval?: number;
            dashboardId: SdkDashboardId;
            drillThroughQuestionHeight?: Height<string | number>;
            drillThroughQuestionProps?: DrillThroughQuestionProps;
            initialParameters?: ParameterValues;
            plugins?: MetabasePluginsConfig;
            renderDrillThroughQuestion?: () => ReactNode;
        } & { dashboardId?: SdkDashboardId
        | null; token?: string | null } & {
            enableEntityNavigation?: boolean;
            hiddenParameters?: string[];
            initialParameters?: ParameterValues;
            withCardTitle?: boolean;
            withDownloads?: boolean;
            withSubscriptions?: boolean;
            withTitle?: boolean;
        } & { className?: string; style?: CSSProperties } & {
            onLoad?: (dashboard: MetabaseDashboard | null) => void;
            onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
            onVisualizationChange?: (
                visualization:
                    | "object"
                    | "table"
                    | "bar"
                    | "line"
                    | "pie"
                    | "scalar"
                    | "row"
                    | "area"
                    | "combo"
                    | "pivot"
                    | "smartscalar"
                    | "gauge"
                    | "progress"
                    | "funnel"
                    | "map"
                    | "scatter"
                    | "boxplot"
                    | "waterfall"
                    | "sankey"
                    | "list",
            ) => void;
        } & { dataPickerProps?: Pick<SdkQuestionProps, "entityTypes"> } & {}
        • OptionalautoRefreshInterval?: number

          The interval between auto refreshes on the dashboard, in seconds.

          +InteractiveDashboard | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

          Function InteractiveDashboard

          • A dashboard component with drill downs, click behaviors, and the ability to view and click into questions.

            +

            Parameters

            • props: {
                  autoRefreshInterval?: number;
                  dashboardId: SdkDashboardId;
                  drillThroughQuestionHeight?: Height<string | number>;
                  drillThroughQuestionProps?: DrillThroughQuestionProps;
                  initialParameters?: ParameterValues;
                  onParametersChange?: (payload: ParameterChangePayload) => void;
                  parameters?: ParameterValues;
                  plugins?: MetabasePluginsConfig;
                  renderDrillThroughQuestion?: () => ReactNode;
              } & { dashboardId?: SdkDashboardId
              | null; token?: string | null } & {
                  enableEntityNavigation?: boolean;
                  hiddenParameters?: string[];
                  initialParameters?: ParameterValues;
                  withCardTitle?: boolean;
                  withDownloads?: boolean;
                  withSubscriptions?: boolean;
                  withTitle?: boolean;
              } & { className?: string; style?: CSSProperties } & {
                  onLoad?: (dashboard: MetabaseDashboard | null) => void;
                  onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
                  onVisualizationChange?: (
                      visualization:
                          | "object"
                          | "table"
                          | "bar"
                          | "line"
                          | "pie"
                          | "scalar"
                          | "row"
                          | "area"
                          | "combo"
                          | "pivot"
                          | "smartscalar"
                          | "gauge"
                          | "progress"
                          | "funnel"
                          | "map"
                          | "scatter"
                          | "boxplot"
                          | "waterfall"
                          | "sankey"
                          | "list",
                  ) => void;
              } & { dataPickerProps?: Pick<SdkQuestionProps, "entityTypes"> } & {}
              • OptionalautoRefreshInterval?: number

                The interval between auto refreshes on the dashboard, in seconds.

              • dashboardId: SdkDashboardId

                The ID of the dashboard.
                This is either: @@ -24,13 +24,39 @@

          • OptionaldrillThroughQuestionHeight?: Height<string | number>

            Height of a question component when drilled from the dashboard to a question level.

          • OptionaldrillThroughQuestionProps?: DrillThroughQuestionProps

            Props of a question component when drilled from the dashboard to a question level.

            -
          • OptionalinitialParameters?: ParameterValues

            Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

          • OptionalinitialParameters?: ParameterValues

            Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
            +For each parameter:

              +
            • set to a value (string for a single option, array of strings for multiple): that value is applied. +
            • +
            • set to null: strictly cleared, ignoring the parameter's default. +
            • +
            • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
              +
            • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
            • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
            +
          • OptionalonParametersChange?: (payload: ParameterChangePayload) => void

            Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

            +
          • Optionalparameters?: ParameterValues

            Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

            +
              +
            • a parameter set to a value uses that value. +
            • +
            • a parameter set to null is cleared, even if it has a default. +
            • +
            • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
              +
              +Pair with onParametersChange to stay in sync with user edits. +
            • +
            • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
            • +
            • Combining parameters and hiddenParameters to declutter the user interface is fine.
            • +
          • Optionalplugins?: MetabasePluginsConfig

            Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

          • OptionalrenderDrillThroughQuestion?: () => ReactNode

            A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout.

            diff --git a/_docs/latest/embedding/sdk/api/InteractiveDashboardProps.html b/_docs/latest/embedding/sdk/api/InteractiveDashboardProps.html index 437977372f..3a684ca61e 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveDashboardProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveDashboardProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,7 +11,7 @@ latest: true --- -InteractiveDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

            Interface InteractiveDashboardProps

            interface InteractiveDashboardProps {
                autoRefreshInterval?: number;
                className?: string;
                dashboardId: string | number;
                dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
                drillThroughQuestionHeight?: Height<string | number>;
                drillThroughQuestionProps?: DrillThroughQuestionProps;
                enableEntityNavigation?: boolean;
                hiddenParameters?: string[];
                initialParameters?: ParameterValues;
                onLoad?: (dashboard: MetabaseDashboard | null) => void;
                onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
                onVisualizationChange?: (
                    visualization:
                        | "object"
                        | "table"
                        | "bar"
                        | "line"
                        | "pie"
                        | "scalar"
                        | "row"
                        | "area"
                        | "combo"
                        | "pivot"
                        | "smartscalar"
                        | "gauge"
                        | "progress"
                        | "funnel"
                        | "map"
                        | "scatter"
                        | "boxplot"
                        | "waterfall"
                        | "sankey"
                        | "list",
                ) => void;
                plugins?: MetabasePluginsConfig;
                renderDrillThroughQuestion?: () => ReactNode;
                style?: CSSProperties;
                token?: string | null;
                withCardTitle?: boolean;
                withDownloads?: boolean;
                withSubscriptions?: boolean;
                withTitle?: boolean;
            }
            Index

            Properties

            autoRefreshInterval? +InteractiveDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

            Interface InteractiveDashboardProps

            interface InteractiveDashboardProps {
                autoRefreshInterval?: number;
                className?: string;
                dashboardId: string | number;
                dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
                drillThroughQuestionHeight?: Height<string | number>;
                drillThroughQuestionProps?: DrillThroughQuestionProps;
                enableEntityNavigation?: boolean;
                hiddenParameters?: string[];
                initialParameters?: ParameterValues;
                onLoad?: (dashboard: MetabaseDashboard | null) => void;
                onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
                onParametersChange?: (payload: ParameterChangePayload) => void;
                onVisualizationChange?: (
                    visualization:
                        | "object"
                        | "table"
                        | "bar"
                        | "line"
                        | "pie"
                        | "scalar"
                        | "row"
                        | "area"
                        | "combo"
                        | "pivot"
                        | "smartscalar"
                        | "gauge"
                        | "progress"
                        | "funnel"
                        | "map"
                        | "scatter"
                        | "boxplot"
                        | "waterfall"
                        | "sankey"
                        | "list",
                ) => void;
                parameters?: ParameterValues;
                plugins?: MetabasePluginsConfig;
                renderDrillThroughQuestion?: () => ReactNode;
                style?: CSSProperties;
                token?: string | null;
                withCardTitle?: boolean;
                withDownloads?: boolean;
                withSubscriptions?: boolean;
                withTitle?: boolean;
            }
            Index
          • OptionalentityTypes?: EmbeddingEntityType[]

            An array that specifies which entity types are available in the data picker

          • Optionalheight?: Height<string | number>

            A number or string specifying a CSS size value that specifies the height of the component

          • OptionalinitialCollection?: SdkCollectionId

            The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

            -
          • OptionalinitialSqlParameters?: SqlParameterValues

            Initial values for the SQL parameters.

            +
          • OptionalinitialSqlParameters?: SqlParameterValues

            Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
            +For each parameter: +

            +
              +
            • set to a value: that value is applied. +
            • +
            • set to null: strictly cleared, ignoring the parameter's default. +
            • +
            • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
            • +
          • OptionalisSaveEnabled?: boolean

            Whether to show the save button.

          • OptionalonBeforeSave?: (
                question: MetabaseQuestion | undefined,
                context: { isNewQuestion: boolean },
            ) => Promise<void>

            A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          • OptionalonRun?: (question: MetabaseQuestion | undefined) => void

            A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            @@ -64,6 +76,7 @@
          • OptionalwithAlerts?: boolean

            Enables the ability to set up alerts on the question.

          • OptionalwithChartTypeSelector?: boolean

            Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

          • OptionalwithDownloads?: boolean

            Enables the ability to download results in the question.

            +
          • OptionalwithEditorButton?: boolean

            Determines whether the editor button is shown. Only relevant when using the default layout.

    enableEntityNavigation?: boolean

    When true, internal click behaviors (links to dashboards/questions) are preserved. When false (default for SDK), these click behaviors are filtered out.

    hiddenParameters?: string[]

    A list of parameters to hide. @@ -73,19 +86,45 @@

  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
    initialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

    initialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
    onLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

    onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
    onParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    Type Declaration

      • (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • visualization:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new visualization type

          -

        Returns void

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    +

    Returns void

    parameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
    +

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    renderDrillThroughQuestion?: () => ReactNode

    A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout.

    A custom style object to be added to the root element.

    @@ -93,4 +132,4 @@
    withDownloads?: boolean

    Whether to hide the download button.

    withSubscriptions?: boolean

    Whether to show the subscriptions button.

    withTitle?: boolean

    Whether the dashboard should display a title.

    -

    +

    diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestion.html b/_docs/latest/embedding/sdk/api/InteractiveQuestion.html index 29034e5b4c..5673b2da5c 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestion.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestion.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -18,12 +18,23 @@
  • Optionalheight?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

  • OptionalhiddenParameters?: string[]

    A list of parameters to hide.

  • OptionalinitialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
  • OptionalisSaveEnabled?: boolean

    Whether to show the save button.

  • OptionalonBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

  • OptionalonNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

  • OptionalonRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

  • OptionalonSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
  • OptionalonSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

  • OptionalonVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

  • Optionalplugins?: MetabasePluginsConfig
  • Optionalquery?: undefined
  • OptionalquestionId?: SdkQuestionId | null

    The ID of the question.
    @@ -38,6 +49,18 @@

  • new-native to show the SQL editor for creating new native questions
  • +
  • OptionalsqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

  • OptionaltargetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

  • Optionaltitle?: SdkQuestionTitleProps

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    @@ -46,6 +69,7 @@
  • OptionalwithAlerts?: boolean

    Enables the ability to set up alerts on the question.

  • OptionalwithChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

  • OptionalwithDownloads?: boolean

    Enables the ability to download results in the question.

    +
  • OptionalwithEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

  • Returns Element

    Index

    InteractiveQuestion

    BackButton Breakout BreakoutDropdown diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionBackButtonProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionBackButtonProps.html index 38ce2d05cd..1106bbebc2 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionBackButtonProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionBackButtonProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionBreakoutDropdownProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionBreakoutDropdownProps.html index 8dbcb59fa6..24f8e41093 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionBreakoutDropdownProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionBreakoutDropdownProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionChartTypeDropdownProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionChartTypeDropdownProps.html index dda4916963..3d19a188f7 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionChartTypeDropdownProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionChartTypeDropdownProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionChartTypeSelectorProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionChartTypeSelectorProps.html index b0abeda055..69526e35e3 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionChartTypeSelectorProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionChartTypeSelectorProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionComponents.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionComponents.html index 9c48aadeb3..a50b93fa72 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionComponents.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionComponents.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionDownloadWidgetDropdownProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionDownloadWidgetDropdownProps.html index 02e21b3c8b..1e0acb07af 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionDownloadWidgetDropdownProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionDownloadWidgetDropdownProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionDownloadWidgetProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionDownloadWidgetProps.html index e77114ed8c..7a48d9bba1 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionDownloadWidgetProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionDownloadWidgetProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionEditorButtonProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionEditorButtonProps.html index 2622b95168..a504c9bd31 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionEditorButtonProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionEditorButtonProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionEditorProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionEditorProps.html index c8a7c9b23a..d7fec799e8 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionEditorProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionEditorProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionFilterDropdownProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionFilterDropdownProps.html index 5bb6b815df..9e41d2ebc4 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionFilterDropdownProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionFilterDropdownProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionFilterProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionFilterProps.html index 54f3fedf92..c1c62d92e4 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionFilterProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionFilterProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionProps.html index 6456a65444..479f359daf 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,7 +11,7 @@ latest: true --- -InteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface InteractiveQuestionProps

    interface InteractiveQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        query?: undefined;
        questionId?: SdkQuestionId
        | null;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className? +InteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface InteractiveQuestionProps

    interface InteractiveQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onSqlParametersChange?: (payload: SqlParameterChangePayload) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        query?: undefined;
        questionId?: SdkQuestionId
        | null;
        sqlParameters?: SqlParameterValues;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withEditorButton?: boolean;
    }
    Index

    Properties

    className?: string

    A custom class name to be added to the root element.

    dataPicker?: EmbeddingDataPicker

    Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting dataPicker = "staged".

    entityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    hiddenParameters?: string[]

    A list of parameters to hide.

    initialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

    onRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

    Type Declaration

      • (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • display:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new display type

        Returns void

    query?: undefined
    questionId?: SdkQuestionId | null

    The ID of the question. @@ -62,6 +76,18 @@

  • new-native to show the SQL editor for creating new native questions
  • +
    sqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +

    A custom style object to be added to the root element.

    targetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    @@ -70,4 +96,5 @@
    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +
    withEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

    +

    diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionSettingsDropdownProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionSettingsDropdownProps.html index b605a24554..4f7223da19 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionSettingsDropdownProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionSettingsDropdownProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionSettingsProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionSettingsProps.html index da865c308a..f86599b33d 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionSettingsProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionSettingsProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionVisualizationProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionVisualizationProps.html index 5af88682ee..a3cac966b5 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionVisualizationProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionQuestionVisualizationProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionResetButtonProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionResetButtonProps.html index eab755c786..9aad2ca1c1 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionResetButtonProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionResetButtonProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionSaveButtonProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionSaveButtonProps.html index 036dfa76bc..67ba82b4a4 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionSaveButtonProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionSaveButtonProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionSaveQuestionFormProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionSaveQuestionFormProps.html index bb6ce6f74b..a04e1a9f26 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionSaveQuestionFormProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionSaveQuestionFormProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionSummarizeDropdownProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionSummarizeDropdownProps.html index 0b246d7cdd..cbb57e758a 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionSummarizeDropdownProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionSummarizeDropdownProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/InteractiveQuestionTitleProps.html b/_docs/latest/embedding/sdk/api/InteractiveQuestionTitleProps.html index ff780c71f2..548785c2f0 100644 --- a/_docs/latest/embedding/sdk/api/InteractiveQuestionTitleProps.html +++ b/_docs/latest/embedding/sdk/api/InteractiveQuestionTitleProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/LoginStatus.html b/_docs/latest/embedding/sdk/api/LoginStatus.html index e04d3b3383..e69525c67b 100644 --- a/_docs/latest/embedding/sdk/api/LoginStatus.html +++ b/_docs/latest/embedding/sdk/api/LoginStatus.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseAuthConfig.html b/_docs/latest/embedding/sdk/api/MetabaseAuthConfig.html index 9a05a92fb4..35e31c41e9 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseAuthConfig.html +++ b/_docs/latest/embedding/sdk/api/MetabaseAuthConfig.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithApiKey.html b/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithApiKey.html index 38ce6abe64..664b125d97 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithApiKey.html +++ b/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithApiKey.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithJwt.html b/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithJwt.html index 557edc7db6..27e69d4a99 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithJwt.html +++ b/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithJwt.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithSaml.html b/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithSaml.html index 4350d5fdd8..e5d3acd735 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithSaml.html +++ b/_docs/latest/embedding/sdk/api/MetabaseAuthConfigWithSaml.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseClickAction.html b/_docs/latest/embedding/sdk/api/MetabaseClickAction.html index 9b49e45fae..62c789a3c0 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseClickAction.html +++ b/_docs/latest/embedding/sdk/api/MetabaseClickAction.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseClickActionPluginsConfig.html b/_docs/latest/embedding/sdk/api/MetabaseClickActionPluginsConfig.html index 686ac287ce..412cdfe99c 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseClickActionPluginsConfig.html +++ b/_docs/latest/embedding/sdk/api/MetabaseClickActionPluginsConfig.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseCollection.html b/_docs/latest/embedding/sdk/api/MetabaseCollection.html index 93b1feb2b4..2d83ac7f09 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseCollection.html +++ b/_docs/latest/embedding/sdk/api/MetabaseCollection.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseCollectionItem.html b/_docs/latest/embedding/sdk/api/MetabaseCollectionItem.html index b935836ef7..0f5ab3715d 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseCollectionItem.html +++ b/_docs/latest/embedding/sdk/api/MetabaseCollectionItem.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseColorKey.html b/_docs/latest/embedding/sdk/api/MetabaseColorKey.html index 3497bfe762..6f10fd8c68 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseColorKey.html +++ b/_docs/latest/embedding/sdk/api/MetabaseColorKey.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseColors.html b/_docs/latest/embedding/sdk/api/MetabaseColors.html index 724eb1486d..e9cf9dd7b5 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseColors.html +++ b/_docs/latest/embedding/sdk/api/MetabaseColors.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseComponentTheme.html b/_docs/latest/embedding/sdk/api/MetabaseComponentTheme.html index 651641ce06..4575fa9a84 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseComponentTheme.html +++ b/_docs/latest/embedding/sdk/api/MetabaseComponentTheme.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseDashboard.html b/_docs/latest/embedding/sdk/api/MetabaseDashboard.html index af53a2b335..aa7cd2b1f8 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseDashboard.html +++ b/_docs/latest/embedding/sdk/api/MetabaseDashboard.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseDashboardPluginsConfig.html b/_docs/latest/embedding/sdk/api/MetabaseDashboardPluginsConfig.html index f6a274d345..c1bb0e37e5 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseDashboardPluginsConfig.html +++ b/_docs/latest/embedding/sdk/api/MetabaseDashboardPluginsConfig.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseDataPointObject.html b/_docs/latest/embedding/sdk/api/MetabaseDataPointObject.html index ee94e83f94..aa2dd6863b 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseDataPointObject.html +++ b/_docs/latest/embedding/sdk/api/MetabaseDataPointObject.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseEmbeddingColorKeyV2.html b/_docs/latest/embedding/sdk/api/MetabaseEmbeddingColorKeyV2.html index 2f2235a469..124991881d 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseEmbeddingColorKeyV2.html +++ b/_docs/latest/embedding/sdk/api/MetabaseEmbeddingColorKeyV2.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseEmbeddingTheme.html b/_docs/latest/embedding/sdk/api/MetabaseEmbeddingTheme.html index ec038f2cc8..fe036a2674 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseEmbeddingTheme.html +++ b/_docs/latest/embedding/sdk/api/MetabaseEmbeddingTheme.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseEmbeddingThemeV2.html b/_docs/latest/embedding/sdk/api/MetabaseEmbeddingThemeV2.html index 4552a22824..a0e2a516e3 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseEmbeddingThemeV2.html +++ b/_docs/latest/embedding/sdk/api/MetabaseEmbeddingThemeV2.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseFetchRequestTokenFn.html b/_docs/latest/embedding/sdk/api/MetabaseFetchRequestTokenFn.html index 7892061dc3..a3076b8a11 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseFetchRequestTokenFn.html +++ b/_docs/latest/embedding/sdk/api/MetabaseFetchRequestTokenFn.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseFontFamily.html b/_docs/latest/embedding/sdk/api/MetabaseFontFamily.html index 9d7967ee82..a7b2a106ac 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseFontFamily.html +++ b/_docs/latest/embedding/sdk/api/MetabaseFontFamily.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,4 +11,4 @@ latest: true --- -MetabaseFontFamily | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias MetabaseFontFamily

    MetabaseFontFamily:
        | "Roboto"
        | "Merriweather"
        | "Open Sans"
        | "Lato"
        | "Noto Sans"
        | "Roboto Slab"
        | "Source Sans Pro"
        | "Raleway"
        | "Slabo 27px"
        | "PT Sans"
        | "Poppins"
        | "PT Serif"
        | "Roboto Mono"
        | "Roboto Condensed"
        | "Playfair Display"
        | "Oswald"
        | "Ubuntu"
        | "Montserrat"
        | "Lora"
        | "Custom"

    +MetabaseFontFamily | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias MetabaseFontFamily

    MetabaseFontFamily:
        | "Roboto"
        | "Merriweather"
        | "Open Sans"
        | "Lato"
        | "Inter"
        | "Noto Sans"
        | "Roboto Slab"
        | "Source Sans Pro"
        | "Raleway"
        | "Slabo 27px"
        | "PT Sans"
        | "Poppins"
        | "PT Serif"
        | "Roboto Mono"
        | "Roboto Condensed"
        | "Playfair Display"
        | "Oswald"
        | "Ubuntu"
        | "Montserrat"
        | "Lora"
        | "Custom"

    diff --git a/_docs/latest/embedding/sdk/api/MetabaseGlobalPluginsConfig.html b/_docs/latest/embedding/sdk/api/MetabaseGlobalPluginsConfig.html index 1bf8183221..7f0526f3ec 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseGlobalPluginsConfig.html +++ b/_docs/latest/embedding/sdk/api/MetabaseGlobalPluginsConfig.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseIsGuestAuthConfig.html b/_docs/latest/embedding/sdk/api/MetabaseIsGuestAuthConfig.html index 866c1ff205..a24164d091 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseIsGuestAuthConfig.html +++ b/_docs/latest/embedding/sdk/api/MetabaseIsGuestAuthConfig.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabasePluginsConfig.html b/_docs/latest/embedding/sdk/api/MetabasePluginsConfig.html index 97a06cce01..e56ef9dad4 100644 --- a/_docs/latest/embedding/sdk/api/MetabasePluginsConfig.html +++ b/_docs/latest/embedding/sdk/api/MetabasePluginsConfig.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseProvider.html b/_docs/latest/embedding/sdk/api/MetabaseProvider.html index 6aed33d3cc..4d85373280 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseProvider.html +++ b/_docs/latest/embedding/sdk/api/MetabaseProvider.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseProviderProps.html b/_docs/latest/embedding/sdk/api/MetabaseProviderProps.html index 58c71d441b..b64f03a304 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseProviderProps.html +++ b/_docs/latest/embedding/sdk/api/MetabaseProviderProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseQuestion.html b/_docs/latest/embedding/sdk/api/MetabaseQuestion.html index 915e45c747..5fe8da72e0 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseQuestion.html +++ b/_docs/latest/embedding/sdk/api/MetabaseQuestion.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseTheme.html b/_docs/latest/embedding/sdk/api/MetabaseTheme.html index 4fbaf6811a..0b3ad7e90d 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseTheme.html +++ b/_docs/latest/embedding/sdk/api/MetabaseTheme.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseThemePreset.html b/_docs/latest/embedding/sdk/api/MetabaseThemePreset.html index 2fc2199cec..72bca7a876 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseThemePreset.html +++ b/_docs/latest/embedding/sdk/api/MetabaseThemePreset.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabaseUser.html b/_docs/latest/embedding/sdk/api/MetabaseUser.html index 551b995097..c2b25fc651 100644 --- a/_docs/latest/embedding/sdk/api/MetabaseUser.html +++ b/_docs/latest/embedding/sdk/api/MetabaseUser.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotAgentChartMessage.html b/_docs/latest/embedding/sdk/api/MetabotAgentChartMessage.html index d80b051c24..236e08d637 100644 --- a/_docs/latest/embedding/sdk/api/MetabotAgentChartMessage.html +++ b/_docs/latest/embedding/sdk/api/MetabotAgentChartMessage.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotAgentMessage.html b/_docs/latest/embedding/sdk/api/MetabotAgentMessage.html index 47f8fee0d9..2dbed1dd30 100644 --- a/_docs/latest/embedding/sdk/api/MetabotAgentMessage.html +++ b/_docs/latest/embedding/sdk/api/MetabotAgentMessage.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotAgentTextMessage.html b/_docs/latest/embedding/sdk/api/MetabotAgentTextMessage.html index 977f6a2ec0..47441ed22c 100644 --- a/_docs/latest/embedding/sdk/api/MetabotAgentTextMessage.html +++ b/_docs/latest/embedding/sdk/api/MetabotAgentTextMessage.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotChartProps.html b/_docs/latest/embedding/sdk/api/MetabotChartProps.html index 65a68d0e3f..620255f383 100644 --- a/_docs/latest/embedding/sdk/api/MetabotChartProps.html +++ b/_docs/latest/embedding/sdk/api/MetabotChartProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotErrorMessage.html b/_docs/latest/embedding/sdk/api/MetabotErrorMessage.html index b012d5af48..2f7676a6b0 100644 --- a/_docs/latest/embedding/sdk/api/MetabotErrorMessage.html +++ b/_docs/latest/embedding/sdk/api/MetabotErrorMessage.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotMessage.html b/_docs/latest/embedding/sdk/api/MetabotMessage.html index 788eace664..3621a352b2 100644 --- a/_docs/latest/embedding/sdk/api/MetabotMessage.html +++ b/_docs/latest/embedding/sdk/api/MetabotMessage.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotQuestion.html b/_docs/latest/embedding/sdk/api/MetabotQuestion.html index 0ccc109523..f7495fbdf9 100644 --- a/_docs/latest/embedding/sdk/api/MetabotQuestion.html +++ b/_docs/latest/embedding/sdk/api/MetabotQuestion.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotQuestionProps.html b/_docs/latest/embedding/sdk/api/MetabotQuestionProps.html index 4d9bb93fdb..72936e2633 100644 --- a/_docs/latest/embedding/sdk/api/MetabotQuestionProps.html +++ b/_docs/latest/embedding/sdk/api/MetabotQuestionProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/MetabotUserTextMessage.html b/_docs/latest/embedding/sdk/api/MetabotUserTextMessage.html index 33372326c3..d5dd7220b0 100644 --- a/_docs/latest/embedding/sdk/api/MetabotUserTextMessage.html +++ b/_docs/latest/embedding/sdk/api/MetabotUserTextMessage.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/ParameterChangePayload.html b/_docs/latest/embedding/sdk/api/ParameterChangePayload.html new file mode 100644 index 0000000000..ecae665b65 --- /dev/null +++ b/_docs/latest/embedding/sdk/api/ParameterChangePayload.html @@ -0,0 +1,19 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: ParameterChangePayload +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/ParameterChangePayload.html +layout: docs-api +latest: true +--- + +ParameterChangePayload | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias ParameterChangePayload

    Payload passed to onParametersChange callback

    +
    Index

    Properties

    defaultParameters: ParameterValues
    lastUsedParameters: ParameterValues
    parameters: ParameterValues

    diff --git a/_docs/latest/embedding/sdk/api/ParameterChangeSource.html b/_docs/latest/embedding/sdk/api/ParameterChangeSource.html new file mode 100644 index 0000000000..2bbaf03009 --- /dev/null +++ b/_docs/latest/embedding/sdk/api/ParameterChangeSource.html @@ -0,0 +1,20 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: ParameterChangeSource +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/ParameterChangeSource.html +layout: docs-api +latest: true +--- + +ParameterChangeSource | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias ParameterChangeSource

    ParameterChangeSource: "initial-state" | "manual-change" | "auto-change"

    Source of a parameter-change event:

    +
      +
    • initial-state - first applied snapshot, fired once per dashboard load.
    • +
    • manual-change - user edited parameters in UI.
    • +
    • auto-change - in the case of auto-updates, e.g. to pass normalized values back to parent.
    • +
    +

    diff --git a/_docs/latest/embedding/sdk/api/ParameterValues.html b/_docs/latest/embedding/sdk/api/ParameterValues.html index accf6aba30..686c612980 100644 --- a/_docs/latest/embedding/sdk/api/ParameterValues.html +++ b/_docs/latest/embedding/sdk/api/ParameterValues.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/ProtectedColorKey.html b/_docs/latest/embedding/sdk/api/ProtectedColorKey.html index 640a981503..d655b1bcda 100644 --- a/_docs/latest/embedding/sdk/api/ProtectedColorKey.html +++ b/_docs/latest/embedding/sdk/api/ProtectedColorKey.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkCollectionId.html b/_docs/latest/embedding/sdk/api/SdkCollectionId.html index e71c295e89..29cbaac031 100644 --- a/_docs/latest/embedding/sdk/api/SdkCollectionId.html +++ b/_docs/latest/embedding/sdk/api/SdkCollectionId.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkDashboardEntityPublicProps.html b/_docs/latest/embedding/sdk/api/SdkDashboardEntityPublicProps.html index 7fa7d72e71..b5416663cb 100644 --- a/_docs/latest/embedding/sdk/api/SdkDashboardEntityPublicProps.html +++ b/_docs/latest/embedding/sdk/api/SdkDashboardEntityPublicProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkDashboardId.html b/_docs/latest/embedding/sdk/api/SdkDashboardId.html index 262785b9c4..e350d8bc53 100644 --- a/_docs/latest/embedding/sdk/api/SdkDashboardId.html +++ b/_docs/latest/embedding/sdk/api/SdkDashboardId.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkDashboardLoadEvent.html b/_docs/latest/embedding/sdk/api/SdkDashboardLoadEvent.html index b4dcaf5a3a..807c34d5a0 100644 --- a/_docs/latest/embedding/sdk/api/SdkDashboardLoadEvent.html +++ b/_docs/latest/embedding/sdk/api/SdkDashboardLoadEvent.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkEntityId.html b/_docs/latest/embedding/sdk/api/SdkEntityId.html index ef1c6645d5..59566e846a 100644 --- a/_docs/latest/embedding/sdk/api/SdkEntityId.html +++ b/_docs/latest/embedding/sdk/api/SdkEntityId.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkEntityToken.html b/_docs/latest/embedding/sdk/api/SdkEntityToken.html index 920f0fa7e9..7982df5182 100644 --- a/_docs/latest/embedding/sdk/api/SdkEntityToken.html +++ b/_docs/latest/embedding/sdk/api/SdkEntityToken.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkErrorComponent.html b/_docs/latest/embedding/sdk/api/SdkErrorComponent.html index 457ad6926d..8452c4c760 100644 --- a/_docs/latest/embedding/sdk/api/SdkErrorComponent.html +++ b/_docs/latest/embedding/sdk/api/SdkErrorComponent.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkErrorComponentProps.html b/_docs/latest/embedding/sdk/api/SdkErrorComponentProps.html index ca6c3ee2f7..ac54d43c25 100644 --- a/_docs/latest/embedding/sdk/api/SdkErrorComponentProps.html +++ b/_docs/latest/embedding/sdk/api/SdkErrorComponentProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkEventHandlersConfig.html b/_docs/latest/embedding/sdk/api/SdkEventHandlersConfig.html index 1acb68622a..dd5f8bff12 100644 --- a/_docs/latest/embedding/sdk/api/SdkEventHandlersConfig.html +++ b/_docs/latest/embedding/sdk/api/SdkEventHandlersConfig.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkQuestionEntityPublicProps.html b/_docs/latest/embedding/sdk/api/SdkQuestionEntityPublicProps.html index 3f1c4317f9..8dd6fcb938 100644 --- a/_docs/latest/embedding/sdk/api/SdkQuestionEntityPublicProps.html +++ b/_docs/latest/embedding/sdk/api/SdkQuestionEntityPublicProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkQuestionId.html b/_docs/latest/embedding/sdk/api/SdkQuestionId.html index 6ac4da68ec..f0d128fc62 100644 --- a/_docs/latest/embedding/sdk/api/SdkQuestionId.html +++ b/_docs/latest/embedding/sdk/api/SdkQuestionId.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkQuestionProps.html b/_docs/latest/embedding/sdk/api/SdkQuestionProps.html index 694dbfe0a7..e6c51de044 100644 --- a/_docs/latest/embedding/sdk/api/SdkQuestionProps.html +++ b/_docs/latest/embedding/sdk/api/SdkQuestionProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,7 +11,7 @@ latest: true --- -SdkQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface SdkQuestionProps

    interface SdkQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        questionId?: SdkQuestionId
        | null;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className? +SdkQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface SdkQuestionProps

    interface SdkQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onSqlParametersChange?: (payload: SqlParameterChangePayload) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        questionId?: SdkQuestionId
        | null;
        sqlParameters?: SqlParameterValues;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withEditorButton?: boolean;
    }
    Index

    Properties

    className?: string

    A custom class name to be added to the root element.

    dataPicker?: EmbeddingDataPicker

    Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting dataPicker = "staged".

    entityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    hiddenParameters?: string[]

    A list of parameters to hide.

    initialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

    onRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

    Type Declaration

      • (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • display:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new display type

          -

        Returns void

    questionId?: SdkQuestionId | null

    A custom style object to be added to the root element.

    +

    Returns void

    questionId?: SdkQuestionId | null
    sqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
    +

    A custom style object to be added to the root element.

    targetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    token?: string | null
    width?: Width<string | number>

    A number or string specifying a CSS size value that specifies the width of the component

    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +
    withEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

    +

    diff --git a/_docs/latest/embedding/sdk/api/SdkQuestionTitleProps.html b/_docs/latest/embedding/sdk/api/SdkQuestionTitleProps.html index 0fe598dade..a38f04ed56 100644 --- a/_docs/latest/embedding/sdk/api/SdkQuestionTitleProps.html +++ b/_docs/latest/embedding/sdk/api/SdkQuestionTitleProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SdkUserId.html b/_docs/latest/embedding/sdk/api/SdkUserId.html index 9cdd839ae9..2e5c8a0fd6 100644 --- a/_docs/latest/embedding/sdk/api/SdkUserId.html +++ b/_docs/latest/embedding/sdk/api/SdkUserId.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/SqlParameterChangePayload.html b/_docs/latest/embedding/sdk/api/SqlParameterChangePayload.html new file mode 100644 index 0000000000..0fdabe672d --- /dev/null +++ b/_docs/latest/embedding/sdk/api/SqlParameterChangePayload.html @@ -0,0 +1,18 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: SqlParameterChangePayload +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/SqlParameterChangePayload.html +layout: docs-api +latest: true +--- + +SqlParameterChangePayload | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias SqlParameterChangePayload

    Payload passed to onSqlParametersChange callback

    +
    type SqlParameterChangePayload = {
        defaultParameters: ParameterValues;
        parameters: ParameterValues;
        source: SqlParameterChangeSource;
    }
    Index

    Properties

    defaultParameters: ParameterValues
    parameters: ParameterValues

    diff --git a/_docs/latest/embedding/sdk/api/SqlParameterChangeSource.html b/_docs/latest/embedding/sdk/api/SqlParameterChangeSource.html new file mode 100644 index 0000000000..99bb6e78a8 --- /dev/null +++ b/_docs/latest/embedding/sdk/api/SqlParameterChangeSource.html @@ -0,0 +1,20 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: SqlParameterChangeSource +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/SqlParameterChangeSource.html +layout: docs-api +latest: true +--- + +SqlParameterChangeSource | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Type Alias SqlParameterChangeSource

    SqlParameterChangeSource: "initial-state" | "manual-change" | "auto-change"

    Source of a sql-parameter-change event:

    +
      +
    • initial-state - first applied state, fired once per question load.
    • +
    • manual-change - user edited parameters in UI.
    • +
    • auto-change - in the case of auto-updates, e.g. to pass normalized values back to parent.
    • +
    +

    diff --git a/_docs/latest/embedding/sdk/api/SqlParameterValues.html b/_docs/latest/embedding/sdk/api/SqlParameterValues.html index 687cf1fa7a..d24f2918a4 100644 --- a/_docs/latest/embedding/sdk/api/SqlParameterValues.html +++ b/_docs/latest/embedding/sdk/api/SqlParameterValues.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/StaticDashboard.html b/_docs/latest/embedding/sdk/api/StaticDashboard.html index 2b5bcabf0d..0109cf2ff6 100644 --- a/_docs/latest/embedding/sdk/api/StaticDashboard.html +++ b/_docs/latest/embedding/sdk/api/StaticDashboard.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -31,17 +31,43 @@
  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
  • OptionalinitialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

  • OptionalinitialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • OptionalonLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

  • OptionalonLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
  • OptionalonParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

  • OptionalonVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    +
  • Optionalparameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
  • Optionalplugins?: MetabasePluginsConfig

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

  • Optionaltoken?: string | null

    A valid JWT token for the guest embed.

    diff --git a/_docs/latest/embedding/sdk/api/StaticDashboardProps.html b/_docs/latest/embedding/sdk/api/StaticDashboardProps.html index 1a8f5af2a4..ca42d6c2fb 100644 --- a/_docs/latest/embedding/sdk/api/StaticDashboardProps.html +++ b/_docs/latest/embedding/sdk/api/StaticDashboardProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,7 +11,7 @@ latest: true --- -StaticDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface StaticDashboardProps

    interface StaticDashboardProps {
        autoRefreshInterval?: number;
        className?: string;
        dashboardId?: SdkDashboardId | null;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: MetabaseDashboard | null) => void;
        onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
        onVisualizationChange?: (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        token?: string
        | null;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withSubscriptions?: boolean;
        withTitle?: boolean;
    }
    Index

    Properties

    autoRefreshInterval? +StaticDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface StaticDashboardProps

    interface StaticDashboardProps {
        autoRefreshInterval?: number;
        className?: string;
        dashboardId?: SdkDashboardId | null;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: MetabaseDashboard | null) => void;
        onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
        onParametersChange?: (payload: ParameterChangePayload) => void;
        onVisualizationChange?: (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        parameters?: ParameterValues;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        token?: string
        | null;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withSubscriptions?: boolean;
        withTitle?: boolean;
    }
    Index
  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
    initialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

    initialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
    onLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

    onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
    onParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    Type Declaration

      • (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • visualization:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new visualization type

          -

        Returns void

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    +

    Returns void

    parameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
    +

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    A custom style object to be added to the root element.

    token?: string | null

    A valid JWT token for the guest embed.

    withCardTitle?: boolean

    Whether the dashboard cards should display a title.

    withDownloads?: boolean

    Whether to hide the download button.

    withSubscriptions?: boolean

    Whether to show the subscriptions button.

    withTitle?: boolean

    Whether the dashboard should display a title.

    -

    +

    diff --git a/_docs/latest/embedding/sdk/api/StaticQuestion.html b/_docs/latest/embedding/sdk/api/StaticQuestion.html index c2b5e7062b..8fbb881682 100644 --- a/_docs/latest/embedding/sdk/api/StaticQuestion.html +++ b/_docs/latest/embedding/sdk/api/StaticQuestion.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -15,7 +15,18 @@

    Parameters

    • props: StaticQuestionProps
      • OptionalclassName?: string

        A custom class name to be added to the root element.

      • Optionalheight?: Height<string | number>

        A number or string specifying a CSS size value that specifies the height of the component

      • OptionalhiddenParameters?: string[]

        A list of parameters to hide.

        -
      • OptionalinitialSqlParameters?: SqlParameterValues

        Initial values for the SQL parameters.

        +
      • OptionalinitialSqlParameters?: SqlParameterValues

        Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
        +For each parameter: +

        +
          +
        • set to a value: that value is applied. +
        • +
        • set to null: strictly cleared, ignoring the parameter's default. +
        • +
        • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
        • +
        +
      • OptionalonSqlParametersChange?: (payload: SqlParameterChangePayload) => void

        Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

      • Optionalquery?: undefined
      • OptionalquestionId?: SdkQuestionId | null

        The ID of the question.
        This is either: @@ -29,6 +40,18 @@

      • new-native to show the SQL editor for creating new native questions
      +
  • OptionalsqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

  • Optionaltitle?: SdkQuestionTitleProps

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

  • Optionaltoken?: string | null

    A valid JWT token for the guest embed.

    diff --git a/_docs/latest/embedding/sdk/api/StaticQuestionComponents.html b/_docs/latest/embedding/sdk/api/StaticQuestionComponents.html index 3ce47349bd..38865d907c 100644 --- a/_docs/latest/embedding/sdk/api/StaticQuestionComponents.html +++ b/_docs/latest/embedding/sdk/api/StaticQuestionComponents.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/StaticQuestionProps.html b/_docs/latest/embedding/sdk/api/StaticQuestionProps.html index d0c11d20b2..10416e5d82 100644 --- a/_docs/latest/embedding/sdk/api/StaticQuestionProps.html +++ b/_docs/latest/embedding/sdk/api/StaticQuestionProps.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,12 +11,14 @@ latest: true --- -StaticQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface StaticQuestionProps

    interface StaticQuestionProps {
        className?: string;
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialSqlParameters?: SqlParameterValues;
        query?: undefined;
        questionId?: SdkQuestionId | null;
        style?: CSSProperties;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className? +StaticQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface StaticQuestionProps

    interface StaticQuestionProps {
        className?: string;
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialSqlParameters?: SqlParameterValues;
        onSqlParametersChange?: (payload: SqlParameterChangePayload) => void;
        query?: undefined;
        questionId?: SdkQuestionId | null;
        sqlParameters?: SqlParameterValues;
        style?: CSSProperties;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className?: string

    A custom class name to be added to the root element.

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    hiddenParameters?: string[]

    A list of parameters to hide.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    +
    onSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    query?: undefined
    questionId?: SdkQuestionId | null

    The ID of the question.
    This is either: @@ -41,6 +54,18 @@

  • new-native to show the SQL editor for creating new native questions
  • +
    sqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +

    A custom style object to be added to the root element.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    token?: string | null

    A valid JWT token for the guest embed.

    @@ -48,4 +73,4 @@
    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +

    diff --git a/_docs/latest/embedding/sdk/api/UseMetabotResult.html b/_docs/latest/embedding/sdk/api/UseMetabotResult.html index 174eca306d..0c6a751aed 100644 --- a/_docs/latest/embedding/sdk/api/UseMetabotResult.html +++ b/_docs/latest/embedding/sdk/api/UseMetabotResult.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/UserBackendJwtResponse.html b/_docs/latest/embedding/sdk/api/UserBackendJwtResponse.html index 3840a19382..c4310ac3f5 100644 --- a/_docs/latest/embedding/sdk/api/UserBackendJwtResponse.html +++ b/_docs/latest/embedding/sdk/api/UserBackendJwtResponse.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/assets/navigation.js b/_docs/latest/embedding/sdk/api/assets/navigation.js index d6af4cbcb8..2755dbda4a 100644 --- a/_docs/latest/embedding/sdk/api/assets/navigation.js +++ b/_docs/latest/embedding/sdk/api/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "eJylWtty2zYQ/Rc+ezqtp0mnflN8Se3YrWrJzkMmDxC5EVGBgAIurTid/HuHupAgsLiQfbIH5+AcLAAuF6A+/ZshfMPsIrtUQkCOXMl3Wu1q0NlZlpdcFBpkdvEpyNsyLCnopxIrkZ1lGy6L7OLtrz/O/DJzrbZ1QGuPDwXP37z98dnU1MAQrlhdrhTTxYMqmPBFQVNP5gQaioWg2+H4KCkR/d1A3c5EMBaDNPA8tdvjP8tyweo6u8gK2GrIGUKRea3JcAZgOJAuck8M1wVHthJg8o5eDhRYiVuJoFmO/IVSotCA2AIZ8pzQsYCAhDN2ax5p3J3KcISWqJcS0rVisiQpNLzgxiAi25dmurH4NrK5yzQXYllq1axLz871UhIn/dTnsmQal69buNJqW6id7ZPcZaRvu2OUftcgOqGlsCe5pfpMcYhrT1E9/V0AIpfrOn2Rgj0njuKZ1w0T/DtLC9jfbaT/I9SAqVvFJo/0WrD+/xulq7gh2WOk65KjgLhVTwumwGLj2ZU2MnKU71i+SV0Gi2s5/fz7b7+8OY+4aWAb1WD6nid7THDuEtwC2totJXHQXSZ4X6mdFIoVH3mxhhGxB/r971GMdZ/qesMFgk6PmeBPdk11m+pi5+PxGXyqc5ufUp9aizvFrakqpvn3EfUE3YX2NkuzB0C2YnWbEF944T3oFfCFSziRZw2Wl0p+4et+TD5GoEIjvI9iNjJCxJoqEg6l7FCMsejcxXV7fORYzrb8A7yGdHvWNIe7Hcbk73Y4TXvBKhETbzmp6rf1+3YThybcoSRubIWR84bLMp17ILYBeya1/yw0fFg6HK8i43ZIg7NZwqiHRPKEN2LMyxIqLtehSWY1XFcrKAou1y0dns/ddbYZoQd1Xy1cKqG0qWS2pm7APZ18IE9IqtJw/LH44ptYYelNyVQBpaqtkiAxUmd1tJREuJ8DIqMe2lMUPE+XgaSoeKaUmkniMiM0RT5GSJUsBka89ft9Su3daG/7QvSe123PppKha1ODFXVoalRVd8lz2d5TgmxuESrDwE+K6Q86HXRc/QBplH7byaPaQqO1DkO5FlCBxIDwgJfiQk+zjcSUuixzxZDNeb4xSysCTNa7lsjxtT2hEXo9GNXrmIfjwAd4Na9BCTRaQ+dK/snM9HBqiVffHHl3sdJmgmaQPF00pniv1twRMhqT30qC55tZTidOA5ygNxfNmsvaV235mCPep8e8Q741jth4teFTQePpqscs73mtDPFUVeL7gAON1oqsFs1Ld0E2V1ziX6t/ICcODRZhdCV0KqGC5V5PStW/AczLR/javrSXagPyhthsBClZX0m8YRUXRFXYY6lq74VaMRFZSIKUqh9RnqS53/hz3d4Ee6quA5iq91RTJ/wn58uwR0HhbA0S9zXSA9Q1W9tPLcEYoxwUnaC3hG9hTYOQqNtOVkjWwmOqc6ZZBQj6mYkGjLeVBUR1tELIEQr3IOVAMa1FsTESuvmddQgk6HSJ8VBRzJuV4Ll7me+njfGwhmq0j1G5V6y4fhkUlSScoHmIxhrWqTG5/z5rEhL79hQVrZXu3qVDoQE0WstdSAJPUW3n8w8mCwHaSaA0nqDafQsNbj0va4SDtcJ98wgN6ssZCSdotjnIGtOhKdr3q/AmJBeLqbWe7eczkMXdDh+h3ipZGxmTxuM3Mk0Ns+1W8Hx/IjieOajrGZJ4NHcx56bO9nxhXLQ/DmlrjzpgafMMxwEUM7R+ozTbcr8pye2NXTj951P2RiDh8N1kO4JGa5D45P8hm0Myht+3xybNvAvvToAeO5Lbu7pwkrnCiKNC10ZhYEGOjH1VRd9t91BiGbNP1L4axgQT9XxSiSpP3TQ8Qt0IHCSJAeJLD5//AyT7V6k=" \ No newline at end of file +window.navigationData = "eJylWsly3DYQ/ReeVanEFTsV3WQtjrdkopHsg8sHDNkeIgMCY7ApWU7531OYjSDQ2JiTVHgP72FtNMD59G+F8A2r8+pSCQE1ciVfavXYg67OqrrlotEgq/NPUd6WYUtBP7XYieqs2nDZVOcvfv1xFpZZaLXtI1o7fCr47PmLH59tTQ0M4Yr17Uox3bxXDROhXtDUozmBxvpC0N3uhCg5Pfp7gN6MRLQvFmnieSx3239W1YL1fXVeNbDVUDOEpgpak92ZgPGOnHoe6MN1w5GtBNi8g5cHRWbitUTQrEb+QClRaERsiQx5Teg4QETCa7szjjTuD2W8h45okBLTdfrkSFJoTG3BNOsAQV+2TK5hwZ6EYtYI0rij+PPvv/3y/FlYdakGXUNQdA/Tmp/pEU1sNJrpj3poy9n7QXMh7lqthnUb2GNBSubyONa5bJnGu6ctXGm1bdSj65NdpdDXrG2lXw6IXtdy2LPccn3mOKS156ge/y4Bkct1nz9J0ZozW/GB9wMT/DvL63C4WqH/LfSAuUvFJRd6Ldn4/43SXdqQrFHoesdRQNpqpEWDdbMJrEoXKWzlS1ZvcqfB4aaCN6WggW3UgPlrnqwxw/kU4JZgssycwEFXmeF9pR6lOe0+8mYNBX2P1PvfrSh1n+t6wwWCzu8zwZ/tmus218WNx+URfK6ziU+5u9bhznEbuo5p/r0gn6CrpLyXX0UqjwxSyrXdbDLESCeU7wHZivUmjD/wJniRbuALl3AkXwzYXir5ha/HJoQYkbyS8D6IuUiBiDPBJBw7aGJ9TPXOnzq/xkeO7cWWv4WnmO7Imufw5hFT8m8ecZ72knUiJW44ueqv+1dm68UG3KNkLmyFiVuSz7KdRyC1AEcmtf4cNP76sL++JtrtkSZ334xWT4nkDbqgzXctdFyuY4PMerjuVtA0XK4NHT488+fZZcQ26i7HuVRCaVvJLs1dgDs6uSGPSK7StP2p/qUXscI2GJKptE91WyVBYiI7PNFyAuFuDIiIui/PUQjsLgvJUQkMKTWSxGNRbIhCjJgqmcIU5CrjOqXWbrK2++D8jvem5tDJ2LO0xUo6DD2q7vSIdmnegUEOrxE6yyBMSulPKu11fP0IqUjfVAqoGqhYa9+UawEdSIwIT3g5LvQwu0hK6RRlrhiyBa83dmpFgNl61xI5Ppl7JaE3gkm9E3N/iXkLT/YzM4EmM/9ayT+ZHR6OJek7A0d+eg4ykWCYBE8fTSm+U2vuCVmF2aeS4PXmoqYDpwXO0FuIYc1lH8q2QsyC8/QQd8hT44CVq013BY3nqx6ifOBYmeK5qsT3Fw8q1krMFs3Ld0G2UFziX6t/oCYuDQ6hOBM6plDRdG8k5erfANbtLXw1h/ad2oC8IRYbQcrWVxJvWMcFkRWOWK7aK6FWTCQmkiDl6ieUZ2nuFv5Cm/frQNa1B3P17nvqhn/vfXkPKCi8WIPEXY70Hvqerd1dSzBKlKOiM/Tu4Ftc0yJk6prBisk6ePYnyg9MDGCdVg6Q1NEKoUZo/IuUByXfupqNFdDt17MpkKFzCoz7jGIxrASv/U8QYVqJh9NUq7xE5Z1izfXDJKkk4QzNfW+cZh0Ls+vvoiYhsSvPUdFa6dNZOhWaQMVa/kQSeI6qGc8/mGwEaC+A0niG6ukLbnTpBVkFDs4Mj8UFGtT3PhLO0DQxyGnTvqjkldsNSD6WUjOe5qMfyObNI95Cv1WytyImjadfZIYeLrZbwevdjeBw56CeZ0jiwdzHvJc61/OBcWF+fGNyjz5i6fIsxwmUMnR+A3ax5WFTkjsa+3D+z9PchUDC8bdJ04JBa5B4H/6hoEeymj+WpwbNfgs/3QADdiR3dPXhLHOFCUeFvo3CyIQcGLusin7bHqHMNGYXqEM5jA1m6oWkMlXuT8NwC/0gcBIkJkgoPHz+D9w00Bk=" \ No newline at end of file diff --git a/_docs/latest/embedding/sdk/api/assets/search.js b/_docs/latest/embedding/sdk/api/assets/search.js index c2337b3e87..8e145947b8 100644 --- a/_docs/latest/embedding/sdk/api/assets/search.js +++ b/_docs/latest/embedding/sdk/api/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "eJy9nVuT47iR779L9WttH+Gmy7yN2+Nd79rrOZ5Z70OHY4IlsaroVpGySFW77fB3PwFQoIDEH2RSks/T9JSAzCSZxCV/ieQ/Ho7N1/bhu8//ePhS1buH75b68aEu3sqH7x4+Nft9ue2qpv6VbVQeHx4fTsc9+uXja/e2f3h82O6Lti3bh+8eHv75iEQey6Irf120r09Ncdz9vtkV+4tU8OM8wf/3VLbWKiLS/5krbFc+V3X5+7Irnoq2/P7UvX5q6ufqZRCba8BV8MOu6oqn/eVaB8nJL1yRv6278lhsu+odSEU/XiE4ub3gt1GxYiEvgr/fl8eu/dWp6xgSPxSu9ZNvHYh/fDgUx7LuMrZmtP+q2H7h6n4qtl/uqPlYFl+aU8fQe2l5N62/PjaHXfOVc9XnHrtLj5ut+PRaHLufvx1Kvhlb26X7dij/JXb8VNqBrDnOsKO9dLnZjl83X+t9U+z+t9q9lAyP2J3bf/Xt72wB/7HEltzz2dghkPNASt/uThq5o0Gv937jwW+qfVcyrvfZt7uTRv6z7jXf8xn/d/FevRRuATFjHK6HXvcdkf+76cqnpvnCsODS8m5a2Vd/bn+/6/a//1R2XVW/tNM2/PX8f+2lx92t4PslteaeHup//1PVnop99feCtfAZTHon3W62549lW3ZcVznaxvfzk5+K95Krui3ey/tq9m1+0xzfePr9Q3jue9xuxV/3PxbH4q3symP7u6plTNTtX/eHocu+73K7Hae3t+JY/b1k6A+a3k8v/9Uc9N/znfy56vaMa+/OzW7WF7373BcgevNvehOCTZjfav54bN6rXbBaoD9wd3WuX9MlOzryd664n7qiq7bpxpP8fZ64xLj4zzfuNIEw3iaTGMfd5SF9kxu8ebqS13NM5+SLydOd39Eh5fzN3EztyT5uVPvkFo6nPbN7Q6qZG7dr9LJu/MztGs8OsnNBeic2LXP0sK6TuVXh6c2uj5Fm9tL4Ot2sq5+9IJ5nC14LjxnCWwbzrEArYKSbs/jlacyv+5Be/pKPqT1Z7UGtkwu9mdpYjsZf3vG0xys7pHF8UZfVEiwqTm35/eGwr7bOGf/b/tErTH/irlRsz/ei2tuY/W+aumsjmdEvM0QSEvL9oQrFpr/OEX062nv2PyHOif88Q1hIQOwjOEWXn/46V3TTJfKablSINMs8v/rx2BwuFuKf+atK1yJyoxGJH1zrum+NfThjbk770Pq3O54Bw2/V7k42/PB26L59auqurLtPzduhqa0UjjGl7bnte26Dnvewqqk/7avtF5YdTb09t72H5kPxUv4UDthjqm3jdmzcnqe77b7teYp9y3tofa/a6mlffmr2p7ea9Wp9OHfZDl3uaMcPdVd13+x+YJYtpevWnbtdaU808gCSTQafXAv++FPVVVcV+09wIBgV/+HclTckZK8lZ1f7h0NJEXzelLbpW99Ju337m7bkqrcDQN/8fvpdlxkG+PZ3sqArji9ld3ELriV9v23Y73qLRt6GPxX7U5l9E/pfZ8zCDPcPZDKnQWhxxoJd2W6P1WHsVocGxM3voL+OliB5xeOLjwmN6fP0i200rkW/3bSiyojjLKeAlbknWHTFj9X2S5jhlFNs2x5825s1l2jCyqlmTVN83a9l9fLaTasd2t2usdrtyvqypWbodj0OYY+brUjmzWkzkvnyjnZEQQa2KVGw4S7WtJa1/VDb7SodSJEZrQVt5dD8Zv1N/avyuTmW1opp9U395Fq3fes7aD9nJJQ2H4Gj/5yLUD4VY9uHORb88cTwxKY+nu7ifU3NvdP3u8eRq396LeoXngGhr299tzvYE8Uz+fZEQc372XPYn16qmjEEXBrerLOdN/jcfdQhu9as3vEtK1/fxNoYqJ65KuZZEUU786pHQ54z9H2tdt3rtD7f7A76uteeuXKUdq+Fb3sXzXkmOGoEHw7OtMfTOubN2AXN76IfZjeOmsDKcBy3Itwv/PpY7fc/vx6b08sr3jVkW8zYO7xW+90xiDuMy/wQtMfXl7eavXuZMmFyDzPbBrCTmTCCsZ+ZbQXa1UyYwdnbzLaD7HAmTJjY58zWnt9nTBjC321caxPec/DM4q0B5lsG9x9TJrF2IbNtgXuRCVNYO5IrLAl3BZMmjO0NrtA97/rve+V0NTyhfmpNPFt/vDKd0D6+Pp2tO7tKnTCDvVadb1G0Yp0yY3TdOlt3vHqd0D2+hr1Cd7KSnTRgcj17lRX5VS3DIP7a9irb0hUuw6bpde5VtsDVLsMc1pqXY1G48k1Oc8bLXvwzf81bnLrmj+XzsWxfXSbxe3CYdkT2B9vv2PerLv3wJWcugb0GHrNjegE8T/vOt/rtyIHaaO17/tsICpprgV9/s590sAI/nPvcxRLgqv8Rr4dHjbLdu767T+abWCDfbt+MewbMu+fd65eUfTrB5away7S+a7+fqcOu97ArS1DGLGJDlHm2nPcDM40597q7NU39u6bgvfaNm3fuqvd/q+61OXWfiuOOdxuacza267Y9d7uPPdkQ+7g97BD7XHvGouzjJs0JtM+z6jDPae/urXR3M6p8YmszT/OxrHc2lz4dfVnG9N3R8Hsn++J915gp45uueVq75kvJuwG+5T20unV9cdzF2c9j2t1ivjjuxrdY861IV/BTVkwv3+db8dPpaciN4VvSkl73smbeU7nxiYS7BlStJV4aZVvcZ+8wLn7W9iF/LewdxIQ105uI2TagfcSEFZytxBV24N3EpC28DcV8e6b3FFOmzd9W3MXKefdv9uZito0T+4sJA2duMWZbl91lTNjF3mjMtii/15gwib/dmG0T2XFMGDKx6bhSO9x3sCxhbT2usCq7+5i0ir0BucKqsT3IpGFztiGzbQM7kQmD/hW+TPcjUyZMbElm62fsSiZMumJjMtvKeG8yYdD49mS27niHMqF7fJMyWzfep0zYwNuqXGVLulth2DK9YbnKFrxnYdjD27ZcZdPs53T7M8rsX/xbnFSJyC7Ixnvw9ze78rk47Tt7FKmEkzRD0YezkMYLmbw/E9ebnZ+smflpiWNqU1sr+bPTlZbedDv/Bfdxyu/82dJxXxta8f2LW72UyL66jmlwJRmLeJX0qD3XVdJjWMOocprYckW9U74lnOJVOYuuqWI1bdmsaqjUtJvqos6wjVMhNWvbNbVSp23jV02lhl1fP3WuVdc80ttrqk5bOV1dlVo1v84q14r5o9W1tVenLZquwkptmV+PlWvFNb5zfY3WaavmVmultt1at5VhIaOCa2LVFbVc+ZZccZeuru86bZVvyan0Su26pebrfMuu8f171IHlW8quCJsz8+rasNM2MqvEUsuurBc7bQ+vciw157oasjxrfOuparLIpmvryjIsm1NhNjHtllqzDNs4VWcTm66pPzvDlmuGiZtq0k7bNlmdltozu07ttA0zK9ZSi26sXQvtm9ihhyvByaBQ0pi/XydVadjCpwrUsC4pG/eJK1XxjZqqWzXTKtYzYj6dmc/ltWi90zJmCqriw2vReqe9YsoILyz7jGxlwG+zjGrq4tznRksmnsvkE5n5LEZzL646wJg1mn9+cdwExvHFuTag04vjRnAO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"; \ No newline at end of file diff --git a/_docs/latest/embedding/sdk/api/defineMetabaseAuthConfig.html b/_docs/latest/embedding/sdk/api/defineMetabaseAuthConfig.html index 0c8cb52c7b..f955511dc5 100644 --- a/_docs/latest/embedding/sdk/api/defineMetabaseAuthConfig.html +++ b/_docs/latest/embedding/sdk/api/defineMetabaseAuthConfig.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/index.html b/_docs/latest/embedding/sdk/api/index.html index 051d268ab4..6a2b1a8124 100644 --- a/_docs/latest/embedding/sdk/api/index.html +++ b/_docs/latest/embedding/sdk/api/index.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -11,4 +11,4 @@ latest: true --- -Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Embedded analytics SDK API

    CollectionBrowser

    CollectionBrowser
    CollectionBrowserProps

    CreateDashboardModal

    CreateDashboardModal
    CreateDashboardModalProps

    CreateQuestion

    CreateQuestion
    CreateQuestionProps

    Dashboard

    EditableDashboard
    InteractiveDashboard
    StaticDashboard
    EditableDashboardProps
    InteractiveDashboardProps
    StaticDashboardProps

    InteractiveQuestion

    InteractiveQuestion
    DrillThroughQuestionProps
    InteractiveQuestionChartTypeDropdownProps
    InteractiveQuestionEditorButtonProps
    InteractiveQuestionEditorProps
    InteractiveQuestionProps
    InteractiveQuestionQuestionSettingsDropdownProps
    InteractiveQuestionQuestionVisualizationProps
    InteractiveQuestionResetButtonProps
    InteractiveQuestionSaveQuestionFormProps
    InteractiveQuestionTitleProps
    SdkQuestionProps
    InteractiveQuestionBackButtonProps
    InteractiveQuestionBreakoutDropdownProps
    InteractiveQuestionChartTypeSelectorProps
    InteractiveQuestionDownloadWidgetDropdownProps
    InteractiveQuestionDownloadWidgetProps
    InteractiveQuestionFilterDropdownProps
    InteractiveQuestionFilterProps
    InteractiveQuestionQuestionSettingsProps
    InteractiveQuestionSaveButtonProps
    InteractiveQuestionSummarizeDropdownProps

    MetabaseProvider

    defineMetabaseAuthConfig
    MetabaseProvider
    MetabaseProviderProps
    MetabaseAuthConfig
    MetabaseAuthConfigWithApiKey
    MetabaseAuthConfigWithJwt
    MetabaseAuthConfigWithSaml
    MetabaseIsGuestAuthConfig

    MetabotQuestion

    MetabotQuestion
    MetabotQuestionProps

    StaticQuestion

    StaticQuestion
    StaticQuestionProps

    Theming

    MetabaseEmbeddingThemeV2
    ChartColorV2
    MetabaseColorKey
    MetabaseEmbeddingTheme

    other

    InteractiveQuestionComponents
    MetabaseColors
    MetabaseQuestion
    MetabaseTheme
    StaticQuestionComponents
    ButtonProps
    ChartColor
    CollectionBrowserListColumns
    CustomDashboardCardMenuItem
    DashboardCardCustomMenuItem
    DashboardCardMenu
    DashboardCardMenuCustomElement
    DashCardMenuItem
    EmbeddingDataPicker
    EmbeddingEntityType
    EntityTypeFilterKeys
    IconName
    InitializationStatus
    LoginStatus
    MetabaseClickAction
    MetabaseClickActionPluginsConfig
    MetabaseCollection
    MetabaseCollectionItem
    MetabaseComponentTheme
    MetabaseDashboard
    MetabaseDashboardPluginsConfig
    MetabaseDataPointObject
    MetabaseEmbeddingColorKeyV2
    MetabaseFetchRequestTokenFn
    MetabaseFontFamily
    MetabaseGlobalPluginsConfig
    MetabasePluginsConfig
    MetabaseThemePreset
    MetabaseUser
    MetabotAgentChartMessage
    MetabotAgentMessage
    MetabotAgentTextMessage
    MetabotUserTextMessage
    ParameterValues
    ProtectedColorKey
    SdkCollectionId
    SdkDashboardEntityPublicProps
    SdkDashboardId
    SdkDashboardLoadEvent
    SdkEntityId
    SdkEntityToken
    SdkErrorComponent
    SdkErrorComponentProps
    SdkEventHandlersConfig
    SdkQuestionEntityPublicProps
    SdkQuestionId
    SdkQuestionTitleProps
    SdkUserId
    SqlParameterValues
    UserBackendJwtResponse

    useApplicationName

    useApplicationName

    useAvailableFonts

    useAvailableFonts

    useCreateDashboardApi

    useCreateDashboardApi
    CreateDashboardValues

    useCurrentUser

    useCurrentUser

    useMetabaseAuthStatus

    useMetabaseAuthStatus

    useMetabot

    useMetabot
    MetabotChartProps
    MetabotErrorMessage
    MetabotMessage
    UseMetabotResult

    +Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Embedded analytics SDK API

    CollectionBrowser

    CollectionBrowser
    CollectionBrowserProps

    CreateDashboardModal

    CreateDashboardModal
    CreateDashboardModalProps

    CreateQuestion

    CreateQuestion
    CreateQuestionProps

    Dashboard

    EditableDashboard
    InteractiveDashboard
    StaticDashboard
    EditableDashboardProps
    InteractiveDashboardProps
    StaticDashboardProps
    ParameterChangePayload
    ParameterChangeSource

    InteractiveQuestion

    InteractiveQuestion
    DrillThroughQuestionProps
    InteractiveQuestionChartTypeDropdownProps
    InteractiveQuestionEditorButtonProps
    InteractiveQuestionEditorProps
    InteractiveQuestionProps
    InteractiveQuestionQuestionSettingsDropdownProps
    InteractiveQuestionQuestionVisualizationProps
    InteractiveQuestionResetButtonProps
    InteractiveQuestionSaveQuestionFormProps
    InteractiveQuestionTitleProps
    SdkQuestionProps
    InteractiveQuestionBackButtonProps
    InteractiveQuestionBreakoutDropdownProps
    InteractiveQuestionChartTypeSelectorProps
    InteractiveQuestionDownloadWidgetDropdownProps
    InteractiveQuestionDownloadWidgetProps
    InteractiveQuestionFilterDropdownProps
    InteractiveQuestionFilterProps
    InteractiveQuestionQuestionSettingsProps
    InteractiveQuestionSaveButtonProps
    InteractiveQuestionSummarizeDropdownProps
    SqlParameterChangePayload
    SqlParameterChangeSource

    MetabaseProvider

    defineMetabaseAuthConfig
    MetabaseProvider
    MetabaseProviderProps
    MetabaseAuthConfig
    MetabaseAuthConfigWithApiKey
    MetabaseAuthConfigWithJwt
    MetabaseAuthConfigWithSaml
    MetabaseIsGuestAuthConfig

    MetabotQuestion

    MetabotQuestion
    MetabotQuestionProps

    StaticQuestion

    StaticQuestion
    StaticQuestionProps

    Theming

    MetabaseEmbeddingThemeV2
    ChartColorV2
    MetabaseColorKey
    MetabaseEmbeddingTheme

    other

    InteractiveQuestionComponents
    MetabaseColors
    MetabaseQuestion
    MetabaseTheme
    StaticQuestionComponents
    ButtonProps
    ChartColor
    CollectionBrowserListColumns
    CustomDashboardCardMenuItem
    DashboardCardCustomMenuItem
    DashboardCardMenu
    DashboardCardMenuCustomElement
    DashCardMenuItem
    EmbeddingDataPicker
    EmbeddingEntityType
    EntityTypeFilterKeys
    IconName
    InitializationStatus
    LoginStatus
    MetabaseClickAction
    MetabaseClickActionPluginsConfig
    MetabaseCollection
    MetabaseCollectionItem
    MetabaseComponentTheme
    MetabaseDashboard
    MetabaseDashboardPluginsConfig
    MetabaseDataPointObject
    MetabaseEmbeddingColorKeyV2
    MetabaseFetchRequestTokenFn
    MetabaseFontFamily
    MetabaseGlobalPluginsConfig
    MetabasePluginsConfig
    MetabaseThemePreset
    MetabaseUser
    MetabotAgentChartMessage
    MetabotAgentMessage
    MetabotAgentTextMessage
    MetabotUserTextMessage
    ParameterValues
    ProtectedColorKey
    SdkCollectionId
    SdkDashboardEntityPublicProps
    SdkDashboardId
    SdkDashboardLoadEvent
    SdkEntityId
    SdkEntityToken
    SdkErrorComponent
    SdkErrorComponentProps
    SdkEventHandlersConfig
    SdkQuestionEntityPublicProps
    SdkQuestionId
    SdkQuestionTitleProps
    SdkUserId
    SqlParameterValues
    UserBackendJwtResponse

    useApplicationName

    useApplicationName

    useAvailableFonts

    useAvailableFonts

    useCreateDashboardApi

    useCreateDashboardApi
    CreateDashboardValues

    useCurrentUser

    useCurrentUser

    useMetabaseAuthStatus

    useMetabaseAuthStatus

    useMetabot

    useMetabot
    MetabotChartProps
    MetabotErrorMessage
    MetabotMessage
    UseMetabotResult

    diff --git a/_docs/latest/embedding/sdk/api/snippets/ButtonProps.md b/_docs/latest/embedding/sdk/api/snippets/ButtonProps.md index 55bb774b73..1304bc444e 100644 --- a/_docs/latest/embedding/sdk/api/snippets/ButtonProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/ButtonProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/ChartColor.md b/_docs/latest/embedding/sdk/api/snippets/ChartColor.md index 041ad74a46..bbda8b1901 100644 --- a/_docs/latest/embedding/sdk/api/snippets/ChartColor.md +++ b/_docs/latest/embedding/sdk/api/snippets/ChartColor.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/ChartColorV2.md b/_docs/latest/embedding/sdk/api/snippets/ChartColorV2.md index 341dfaff93..b5faf37bf3 100644 --- a/_docs/latest/embedding/sdk/api/snippets/ChartColorV2.md +++ b/_docs/latest/embedding/sdk/api/snippets/ChartColorV2.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/CollectionBrowser.md b/_docs/latest/embedding/sdk/api/snippets/CollectionBrowser.md index c1890719e9..30b465e3a7 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CollectionBrowser.md +++ b/_docs/latest/embedding/sdk/api/snippets/CollectionBrowser.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/CollectionBrowserListColumns.md b/_docs/latest/embedding/sdk/api/snippets/CollectionBrowserListColumns.md index d533493e17..d8b673a916 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CollectionBrowserListColumns.md +++ b/_docs/latest/embedding/sdk/api/snippets/CollectionBrowserListColumns.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/CollectionBrowserProps.md b/_docs/latest/embedding/sdk/api/snippets/CollectionBrowserProps.md index f016dfd963..9f5d80742a 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CollectionBrowserProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/CollectionBrowserProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/CreateDashboardModal.md b/_docs/latest/embedding/sdk/api/snippets/CreateDashboardModal.md index 7381e4cba7..df0a57b468 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CreateDashboardModal.md +++ b/_docs/latest/embedding/sdk/api/snippets/CreateDashboardModal.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/CreateDashboardModalProps.md b/_docs/latest/embedding/sdk/api/snippets/CreateDashboardModalProps.md index d1444908d6..d9632df6db 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CreateDashboardModalProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/CreateDashboardModalProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/CreateDashboardValues.md b/_docs/latest/embedding/sdk/api/snippets/CreateDashboardValues.md index 8751f41748..4bdfe5a9aa 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CreateDashboardValues.md +++ b/_docs/latest/embedding/sdk/api/snippets/CreateDashboardValues.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/CreateQuestion.md b/_docs/latest/embedding/sdk/api/snippets/CreateQuestion.md index cdd8314817..92bb8fa809 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CreateQuestion.md +++ b/_docs/latest/embedding/sdk/api/snippets/CreateQuestion.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/CreateQuestionProps.md b/_docs/latest/embedding/sdk/api/snippets/CreateQuestionProps.md index a93121c76c..afae3f7774 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CreateQuestionProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/CreateQuestionProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -17,28 +17,31 @@ latest: true -| Property | Type | Description | -| :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dataPicker?` | [`EmbeddingDataPicker`](./api/EmbeddingDataPicker) | Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting `dataPicker = "staged"`. | -| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | -| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | -| `hiddenParameters?` | `string`[] | A list of parameters to hide. | -| `initialCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to preselect in the save modal's collection picker. Unlike `targetCollection`, the picker remains visible and the user can choose a different collection. Ignored when `targetCollection` is set. | -| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | -| `isSaveEnabled?` | `boolean` | Whether to show the save button. | -| `onBeforeSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`, `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | -| `onNavigateBack?` | () => `void` | A callback function that triggers when a user clicks the back button. | -| `onRun?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | -| `onVisualizationChange?` | (`display`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when the visualization type changes. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | -| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. | -| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | -| `withAlerts?` | `boolean` | Enables the ability to set up alerts on the question. | -| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | -| `withDownloads?` | `boolean` | Enables the ability to download results in the question. | +| Property | Type | Description | +| :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dataPicker?` | [`EmbeddingDataPicker`](./api/EmbeddingDataPicker) | Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting `dataPicker = "staged"`. | +| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | +| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | +| `hiddenParameters?` | `string`[] | A list of parameters to hide. | +| `initialCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to preselect in the save modal's collection picker. Unlike `targetCollection`, the picker remains visible and the user can choose a different collection. Ignored when `targetCollection` is set. | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
    For each parameter:
    - set to a value: that value is applied.
    - set to `null`: strictly cleared, ignoring the parameter's default.
    - omitted (or set to `undefined`): falls back to the parameter's default (or `null` if it has no default). | +| `isSaveEnabled?` | `boolean` | Whether to show the save button. | +| `onBeforeSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`, `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | +| `onNavigateBack?` | () => `void` | A callback function that triggers when a user clicks the back button. | +| `onRun?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `onSqlParametersChange?` | (`payload`: [`SqlParameterChangePayload`](./api/SqlParameterChangePayload)) => `void` | Fires on SQL parameters change. The payload's `source` distinguishes the initial state on load (`'initial-state'`), user edits in the UI (`'manual-change'`), and auto-updates (`'auto-change'`). | +| `onVisualizationChange?` | (`display`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when the visualization type changes. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | +| `sqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values:
    - a parameter set to a value uses that value.
    - a parameter set to `null` is cleared, even if it has a default.
    - a parameter omitted from the object (or set to `undefined`) uses its default (or `null` if it has no default).

    Pair with `onSqlParametersChange` to stay in sync with user edits. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | +| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. | +| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | +| `withAlerts?` | `boolean` | Enables the ability to set up alerts on the question. | +| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | +| `withDownloads?` | `boolean` | Enables the ability to download results in the question. | +| `withEditorButton?` | `boolean` | Determines whether the editor button is shown. Only relevant when using the default layout. | diff --git a/_docs/latest/embedding/sdk/api/snippets/CustomDashboardCardMenuItem.md b/_docs/latest/embedding/sdk/api/snippets/CustomDashboardCardMenuItem.md index 0af9263a86..9628e89ec3 100644 --- a/_docs/latest/embedding/sdk/api/snippets/CustomDashboardCardMenuItem.md +++ b/_docs/latest/embedding/sdk/api/snippets/CustomDashboardCardMenuItem.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/DashCardMenuItem.md b/_docs/latest/embedding/sdk/api/snippets/DashCardMenuItem.md index c3a3f1aa98..2bd6df00b8 100644 --- a/_docs/latest/embedding/sdk/api/snippets/DashCardMenuItem.md +++ b/_docs/latest/embedding/sdk/api/snippets/DashCardMenuItem.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/DashboardCardCustomMenuItem.md b/_docs/latest/embedding/sdk/api/snippets/DashboardCardCustomMenuItem.md index 0d277327af..cf1094fe56 100644 --- a/_docs/latest/embedding/sdk/api/snippets/DashboardCardCustomMenuItem.md +++ b/_docs/latest/embedding/sdk/api/snippets/DashboardCardCustomMenuItem.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/DashboardCardMenu.md b/_docs/latest/embedding/sdk/api/snippets/DashboardCardMenu.md index 25167e3ce4..03f9c29753 100644 --- a/_docs/latest/embedding/sdk/api/snippets/DashboardCardMenu.md +++ b/_docs/latest/embedding/sdk/api/snippets/DashboardCardMenu.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/DashboardCardMenuCustomElement.md b/_docs/latest/embedding/sdk/api/snippets/DashboardCardMenuCustomElement.md index 4b23de8ffc..f9c68d3676 100644 --- a/_docs/latest/embedding/sdk/api/snippets/DashboardCardMenuCustomElement.md +++ b/_docs/latest/embedding/sdk/api/snippets/DashboardCardMenuCustomElement.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/DrillThroughQuestionProps.md b/_docs/latest/embedding/sdk/api/snippets/DrillThroughQuestionProps.md index a0bd726939..bf5bfe318e 100644 --- a/_docs/latest/embedding/sdk/api/snippets/DrillThroughQuestionProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/DrillThroughQuestionProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -19,26 +19,27 @@ Props for the drill-through question -| Property | Type | Description | -| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `children?` | [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | The children of the component | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dataPicker?` | [`EmbeddingDataPicker`](./api/EmbeddingDataPicker) | Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting `dataPicker = "staged"`. | -| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | -| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | -| `initialCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to preselect in the save modal's collection picker. Unlike `targetCollection`, the picker remains visible and the user can choose a different collection. Ignored when `targetCollection` is set. | -| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | -| `isSaveEnabled?` | `boolean` | Whether to show the save button. | -| `onBeforeSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`, `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | -| `onRun?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | -| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. | -| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | -| `withAlerts?` | `boolean` | Enables the ability to set up alerts on the question. | -| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | -| `withDownloads?` | `boolean` | Enables the ability to download results in the question. | +| Property | Type | Description | +| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `children?` | [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | The children of the component | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dataPicker?` | [`EmbeddingDataPicker`](./api/EmbeddingDataPicker) | Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting `dataPicker = "staged"`. | +| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | +| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | +| `initialCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to preselect in the save modal's collection picker. Unlike `targetCollection`, the picker remains visible and the user can choose a different collection. Ignored when `targetCollection` is set. | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
    For each parameter:
    - set to a value: that value is applied.
    - set to `null`: strictly cleared, ignoring the parameter's default.
    - omitted (or set to `undefined`): falls back to the parameter's default (or `null` if it has no default). | +| `isSaveEnabled?` | `boolean` | Whether to show the save button. | +| `onBeforeSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`, `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | +| `onRun?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | +| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. | +| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | +| `withAlerts?` | `boolean` | Enables the ability to set up alerts on the question. | +| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | +| `withDownloads?` | `boolean` | Enables the ability to download results in the question. | +| `withEditorButton?` | `boolean` | Determines whether the editor button is shown. Only relevant when using the default layout. | diff --git a/_docs/latest/embedding/sdk/api/snippets/EditableDashboard.md b/_docs/latest/embedding/sdk/api/snippets/EditableDashboard.md index cc562f743e..67d6bd5133 100644 --- a/_docs/latest/embedding/sdk/api/snippets/EditableDashboard.md +++ b/_docs/latest/embedding/sdk/api/snippets/EditableDashboard.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/EditableDashboardProps.md b/_docs/latest/embedding/sdk/api/snippets/EditableDashboardProps.md index 1c2ccd6b73..421651053d 100644 --- a/_docs/latest/embedding/sdk/api/snippets/EditableDashboardProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/EditableDashboardProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -17,27 +17,29 @@ latest: true -| Property | Type | Description | -| :-------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `autoRefreshInterval?` | `number` | The interval between auto refreshes on the dashboard, in seconds. | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId` | `string` \| `number` | The ID of the dashboard.
    This is either:
    - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
    - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | -| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | -| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | -| `enableEntityNavigation?` | `boolean` | When true, internal click behaviors (links to dashboards/questions) are preserved. When false (default for SDK), these click behaviors are filtered out. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/latest/embedding/public-links#appearance-parameters).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `onVisualizationChange?` | (`visualization`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `token?` | `string` \| `null` | - | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withSubscriptions?` | `boolean` | Whether to show the subscriptions button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :-------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `autoRefreshInterval?` | `number` | The interval between auto refreshes on the dashboard, in seconds. | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId` | `string` \| `number` | The ID of the dashboard.
    This is either:
    - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
    - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | +| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | +| `enableEntityNavigation?` | `boolean` | When true, internal click behaviors (links to dashboards/questions) are preserved. When false (default for SDK), these click behaviors are filtered out. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/latest/embedding/public-links#appearance-parameters).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
    For each parameter:
    - set to a value (string for a single option, array of strings for multiple): that value is applied.
    - set to `null`: strictly cleared, ignoring the parameter's default.
    - omitted (or set to `undefined`): falls back to the parameter's default (or `null` if it has no default).

    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `onParametersChange?` | (`payload`: [`ParameterChangePayload`](./api/ParameterChangePayload)) => `void` | Fires on parameters change. The payload's `source` distinguishes the initial state on load (`'initial-state'`), user edits in the UI (`'manual-change'`), and auto-updates (`'auto-change'`). | +| `onVisualizationChange?` | (`visualization`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. | +| `parameters?` | [`ParameterValues`](./api/ParameterValues) | Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values:
    - a parameter set to a value uses that value.
    - a parameter set to `null` is cleared, even if it has a default.
    - a parameter omitted from the object (or set to `undefined`) uses its default (or `null` if it has no default).

    Pair with [onParametersChange](./api/InteractiveDashboardProps#onparameterschange) to stay in sync with user edits.
    - Combining [parameters](./api/InteractiveDashboardProps#parameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [parameters](./api/InteractiveDashboardProps#parameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `token?` | `string` \| `null` | - | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withSubscriptions?` | `boolean` | Whether to show the subscriptions button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/latest/embedding/sdk/api/snippets/EmbeddingDataPicker.md b/_docs/latest/embedding/sdk/api/snippets/EmbeddingDataPicker.md index e62a93a999..705817871d 100644 --- a/_docs/latest/embedding/sdk/api/snippets/EmbeddingDataPicker.md +++ b/_docs/latest/embedding/sdk/api/snippets/EmbeddingDataPicker.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/EmbeddingEntityType.md b/_docs/latest/embedding/sdk/api/snippets/EmbeddingEntityType.md index eba51547cd..18b2f8f5fb 100644 --- a/_docs/latest/embedding/sdk/api/snippets/EmbeddingEntityType.md +++ b/_docs/latest/embedding/sdk/api/snippets/EmbeddingEntityType.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/EntityTypeFilterKeys.md b/_docs/latest/embedding/sdk/api/snippets/EntityTypeFilterKeys.md index ba1db33d2d..859c598a50 100644 --- a/_docs/latest/embedding/sdk/api/snippets/EntityTypeFilterKeys.md +++ b/_docs/latest/embedding/sdk/api/snippets/EntityTypeFilterKeys.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/IconName.md b/_docs/latest/embedding/sdk/api/snippets/IconName.md index 0ccf8b0f30..18dd00ef62 100644 --- a/_docs/latest/embedding/sdk/api/snippets/IconName.md +++ b/_docs/latest/embedding/sdk/api/snippets/IconName.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -102,6 +102,7 @@ type IconName = | "database" | "database_routing" | "dependencies" + | "dependent" | "data_studio" | "dash" | "curve" @@ -294,6 +295,7 @@ type IconName = | "verified_round" | "view_archive" | "warning" + | "warning_round" | "warning_round_filled" | "warning_triangle_filled" | "webhook" diff --git a/_docs/latest/embedding/sdk/api/snippets/InitializationStatus.md b/_docs/latest/embedding/sdk/api/snippets/InitializationStatus.md index 4c930543b1..bf926a05ec 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InitializationStatus.md +++ b/_docs/latest/embedding/sdk/api/snippets/InitializationStatus.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveDashboard.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveDashboard.md index 26578ff539..86fddbb7aa 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveDashboard.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveDashboard.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -19,6 +19,8 @@ function InteractiveDashboard( drillThroughQuestionHeight?: Height; drillThroughQuestionProps?: DrillThroughQuestionProps; initialParameters?: ParameterValues; + onParametersChange?: (payload: ParameterChangePayload) => void; + parameters?: ParameterValues; plugins?: MetabasePluginsConfig; renderDrillThroughQuestion?: () => ReactNode; } & { @@ -73,9 +75,9 @@ A dashboard component with drill downs, click behaviors, and the ability to view -| Parameter | Type | Description | -| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------- | -| `props` | \{ `autoRefreshInterval?`: `number`; `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId?`: [`SdkDashboardId`](./api/SdkDashboardId) \| `null`; `token?`: `string` \| `null`; \} & \{ `enableEntityNavigation?`: `boolean`; `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withSubscriptions?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void`; `onLoadWithoutCards?`: (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void`; `onVisualizationChange?`: (`visualization`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void`; \} & \{ `dataPickerProps?`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\>; \} & \{ \} | | +| Parameter | Type | Description | +| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | +| `props` | \{ `autoRefreshInterval?`: `number`; `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `onParametersChange?`: (`payload`: [`ParameterChangePayload`](./api/ParameterChangePayload)) => `void`; `parameters?`: [`ParameterValues`](./api/ParameterValues); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId?`: [`SdkDashboardId`](./api/SdkDashboardId) \| `null`; `token?`: `string` \| `null`; \} & \{ `enableEntityNavigation?`: `boolean`; `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withSubscriptions?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void`; `onLoadWithoutCards?`: (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void`; `onVisualizationChange?`: (`visualization`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void`; \} & \{ `dataPickerProps?`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\>; \} & \{ \} | | diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveDashboardProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveDashboardProps.md index f6ceb6be0c..fe20f64962 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveDashboardProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveDashboardProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -17,27 +17,29 @@ latest: true -| Property | Type | Description | -| :-------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `autoRefreshInterval?` | `number` | The interval between auto refreshes on the dashboard, in seconds. | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId` | `string` \| `number` | The ID of the dashboard.
    This is either:
    - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
    - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | -| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | -| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | -| `enableEntityNavigation?` | `boolean` | When true, internal click behaviors (links to dashboards/questions) are preserved. When false (default for SDK), these click behaviors are filtered out. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/latest/embedding/public-links#appearance-parameters).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `onVisualizationChange?` | (`visualization`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `token?` | `string` \| `null` | - | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withSubscriptions?` | `boolean` | Whether to show the subscriptions button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :-------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `autoRefreshInterval?` | `number` | The interval between auto refreshes on the dashboard, in seconds. | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId` | `string` \| `number` | The ID of the dashboard.
    This is either:
    - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
    - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | +| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | +| `enableEntityNavigation?` | `boolean` | When true, internal click behaviors (links to dashboards/questions) are preserved. When false (default for SDK), these click behaviors are filtered out. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/latest/embedding/public-links#appearance-parameters).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
    For each parameter:
    - set to a value (string for a single option, array of strings for multiple): that value is applied.
    - set to `null`: strictly cleared, ignoring the parameter's default.
    - omitted (or set to `undefined`): falls back to the parameter's default (or `null` if it has no default).

    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `onParametersChange?` | (`payload`: [`ParameterChangePayload`](./api/ParameterChangePayload)) => `void` | Fires on parameters change. The payload's `source` distinguishes the initial state on load (`'initial-state'`), user edits in the UI (`'manual-change'`), and auto-updates (`'auto-change'`). | +| `onVisualizationChange?` | (`visualization`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. | +| `parameters?` | [`ParameterValues`](./api/ParameterValues) | Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values:
    - a parameter set to a value uses that value.
    - a parameter set to `null` is cleared, even if it has a default.
    - a parameter omitted from the object (or set to `undefined`) uses its default (or `null` if it has no default).

    Pair with [onParametersChange](./api/InteractiveDashboardProps#onparameterschange) to stay in sync with user edits.
    - Combining [parameters](./api/InteractiveDashboardProps#parameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [parameters](./api/InteractiveDashboardProps#parameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `token?` | `string` \| `null` | - | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withSubscriptions?` | `boolean` | Whether to show the subscriptions button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestion.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestion.md index c1d78315c1..a9d8c72ff4 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestion.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestion.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md index a6916352e2..55a08451db 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md index 0b54308d8e..637447552d 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md index e7c9ab0df1..bdb65a1e9a 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md index 70ef22d34a..63f5a8a37b 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionComponents.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionComponents.md index 94a9b39ecb..82e7850842 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionComponents.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionComponents.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md index 4305a1aefd..7bc21c2444 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md index 428a507017..77878303b9 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md index f3ec406c6e..b99901bb74 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md index 30d5395b6d..c874d2406f 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md index ed4d5ebe68..d1f8fd92c3 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md index 358484f6dc..4ce9a5a49d 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionProps.md index 059dec859d..be2dcb4478 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -25,16 +25,18 @@ latest: true | `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | | `hiddenParameters?` | `string`[] | A list of parameters to hide. | | `initialCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to preselect in the save modal's collection picker. Unlike `targetCollection`, the picker remains visible and the user can choose a different collection. Ignored when `targetCollection` is set. | -| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
    For each parameter:
    - set to a value: that value is applied.
    - set to `null`: strictly cleared, ignoring the parameter's default.
    - omitted (or set to `undefined`): falls back to the parameter's default (or `null` if it has no default). | | `isSaveEnabled?` | `boolean` | Whether to show the save button. | | `onBeforeSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`, `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | | `onNavigateBack?` | () => `void` | A callback function that triggers when a user clicks the back button. | | `onRun?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | | `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `onSqlParametersChange?` | (`payload`: [`SqlParameterChangePayload`](./api/SqlParameterChangePayload)) => `void` | Fires on SQL parameters change. The payload's `source` distinguishes the initial state on load (`'initial-state'`), user edits in the UI (`'manual-change'`), and auto-updates (`'auto-change'`). | | `onVisualizationChange?` | (`display`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when the visualization type changes. | | `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | | `query?` | `undefined` | - | | `questionId?` | [`SdkQuestionId`](./api/SdkQuestionId) \| `null` | The ID of the question.
    This is either:
    - the numerical ID when accessing a question link, i.e. `http://localhost:3000/question/1-my-question` where the ID is `1`
    - the string ID found in the `entity_id` key of the question object when using the API directly or using the SDK Collection Browser to return data
    - `new` to show the notebook editor for creating new questions
    - `new-native` to show the SQL editor for creating new native questions | +| `sqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values:
    - a parameter set to a value uses that value.
    - a parameter set to `null` is cleared, even if it has a default.
    - a parameter omitted from the object (or set to `undefined`) uses its default (or `null` if it has no default).

    Pair with `onSqlParametersChange` to stay in sync with user edits. | | `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | | `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | | `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. | @@ -43,5 +45,6 @@ latest: true | `withAlerts?` | `boolean` | Enables the ability to set up alerts on the question. | | `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | | `withDownloads?` | `boolean` | Enables the ability to download results in the question. | +| `withEditorButton?` | `boolean` | Determines whether the editor button is shown. Only relevant when using the default layout. | diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md index f7f725457d..f4c8a2ef44 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md index 8917ccceee..7d2e0b0c07 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md index 8e75736bd2..7fef0ff95b 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md index 0dfb747cad..3cc1ce543d 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md index 544c197a80..157e4b2459 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md index 76af7a9111..4de49b664c 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md index dd49d7ef4c..346eaab1c4 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md index 634a638c98..e2c02c71e6 100644 --- a/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/LoginStatus.md b/_docs/latest/embedding/sdk/api/snippets/LoginStatus.md index bf7d4d0f18..eeadc00e9e 100644 --- a/_docs/latest/embedding/sdk/api/snippets/LoginStatus.md +++ b/_docs/latest/embedding/sdk/api/snippets/LoginStatus.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfig.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfig.md index de9f5a2488..abdb70f230 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfig.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfig.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md index ca9b5faaa7..35e065fe5c 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithJwt.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithJwt.md index 127090a484..7531c4ff53 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithJwt.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithJwt.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md index 77a5922779..fe66592195 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseClickAction.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseClickAction.md index d95bf7a8f6..ec7d57e5c4 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseClickAction.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseClickAction.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseClickActionPluginsConfig.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseClickActionPluginsConfig.md index c2fd814378..4bc0f1ec3e 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseClickActionPluginsConfig.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseClickActionPluginsConfig.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseCollection.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseCollection.md index d534355e76..4db0a77f7f 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseCollection.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseCollection.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseCollectionItem.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseCollectionItem.md index 47daa484d0..ead6e0e373 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseCollectionItem.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseCollectionItem.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseColorKey.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseColorKey.md index e833366d9e..1b11da76f8 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseColorKey.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseColorKey.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseColors.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseColors.md index c4c6ed541c..e9e2ebdc36 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseColors.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseColors.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseComponentTheme.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseComponentTheme.md index 5c29199e53..db2604bd1d 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseComponentTheme.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseComponentTheme.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseDashboard.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseDashboard.md index fb32666dfe..5aa740fb96 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseDashboard.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseDashboard.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseDashboardPluginsConfig.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseDashboardPluginsConfig.md index 928863e535..5566bc296a 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseDashboardPluginsConfig.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseDashboardPluginsConfig.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseDataPointObject.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseDataPointObject.md index 4a5da1a811..bdf4113620 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseDataPointObject.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseDataPointObject.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md index 131556f244..413f9c3883 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md index c06e0b958b..6e45adbd0c 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingThemeV2.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingThemeV2.md index a12939c2fa..a8f2a70d33 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingThemeV2.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseEmbeddingThemeV2.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md index 1e2be1adca..6442605bd6 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseFontFamily.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseFontFamily.md index 9e9a4035c4..7e733cf071 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseFontFamily.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseFontFamily.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -17,6 +17,7 @@ type MetabaseFontFamily = | "Merriweather" | "Open Sans" | "Lato" + | "Inter" | "Noto Sans" | "Roboto Slab" | "Source Sans Pro" diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md index b597cda8bc..8b4086c5e6 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md index 7d3bc0a1a9..cc3248fa6a 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabasePluginsConfig.md b/_docs/latest/embedding/sdk/api/snippets/MetabasePluginsConfig.md index bae90d2aa4..d7c0593831 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabasePluginsConfig.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabasePluginsConfig.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseProvider.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseProvider.md index 6b86de4f61..17b058cffc 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseProvider.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseProvider.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseProviderProps.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseProviderProps.md index 137afd4137..b1f587e087 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseProviderProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseProviderProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseQuestion.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseQuestion.md index 1d21c187da..bb6c957557 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseQuestion.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseQuestion.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseTheme.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseTheme.md index ae9fedccd3..4d15561912 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseTheme.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseTheme.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseThemePreset.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseThemePreset.md index 07d1bacdfd..4181d5c2d0 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseThemePreset.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseThemePreset.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabaseUser.md b/_docs/latest/embedding/sdk/api/snippets/MetabaseUser.md index 1159bebdf8..3c370d9efa 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabaseUser.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabaseUser.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotAgentChartMessage.md b/_docs/latest/embedding/sdk/api/snippets/MetabotAgentChartMessage.md index e831b040c8..20d209456d 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotAgentChartMessage.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotAgentChartMessage.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotAgentMessage.md b/_docs/latest/embedding/sdk/api/snippets/MetabotAgentMessage.md index 9bbf3b6f14..9a08ac6e75 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotAgentMessage.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotAgentMessage.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotAgentTextMessage.md b/_docs/latest/embedding/sdk/api/snippets/MetabotAgentTextMessage.md index 68ad948f9e..3986efe38e 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotAgentTextMessage.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotAgentTextMessage.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotChartProps.md b/_docs/latest/embedding/sdk/api/snippets/MetabotChartProps.md index 885c70d18c..adea65aef2 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotChartProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotChartProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotErrorMessage.md b/_docs/latest/embedding/sdk/api/snippets/MetabotErrorMessage.md index e56849b831..d0d4fd4682 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotErrorMessage.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotErrorMessage.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotMessage.md b/_docs/latest/embedding/sdk/api/snippets/MetabotMessage.md index bb6a9acf2c..8c9387cec1 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotMessage.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotMessage.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotQuestion.md b/_docs/latest/embedding/sdk/api/snippets/MetabotQuestion.md index 0b07c06c0b..f07f788393 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotQuestion.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotQuestion.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotQuestionProps.md b/_docs/latest/embedding/sdk/api/snippets/MetabotQuestionProps.md index f1a5c9400e..8d230f3f30 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotQuestionProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotQuestionProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/MetabotUserTextMessage.md b/_docs/latest/embedding/sdk/api/snippets/MetabotUserTextMessage.md index 27d785a87e..f4254167c9 100644 --- a/_docs/latest/embedding/sdk/api/snippets/MetabotUserTextMessage.md +++ b/_docs/latest/embedding/sdk/api/snippets/MetabotUserTextMessage.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/ParameterChangePayload.md b/_docs/latest/embedding/sdk/api/snippets/ParameterChangePayload.md new file mode 100644 index 0000000000..997a4dafb8 --- /dev/null +++ b/_docs/latest/embedding/sdk/api/snippets/ParameterChangePayload.md @@ -0,0 +1,36 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: ParameterChangePayload +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ParameterChangePayload.md +layout: new-docs +latest: true +--- + +```ts +type ParameterChangePayload = { + defaultParameters: ParameterValues; + lastUsedParameters: ParameterValues; + parameters: ParameterValues; + source: ParameterChangeSource; +}; +``` + +Payload passed to `onParametersChange` callback + +## Properties + + + +| Property | Type | +| :--------------------------------------------------- | :-------------------------------------------------------- | +| `defaultParameters` | [`ParameterValues`](./api/ParameterValues) | +| `lastUsedParameters` | [`ParameterValues`](./api/ParameterValues) | +| `parameters` | [`ParameterValues`](./api/ParameterValues) | +| `source` | [`ParameterChangeSource`](./api/ParameterChangeSource) | + + diff --git a/_docs/latest/embedding/sdk/api/snippets/ParameterChangeSource.md b/_docs/latest/embedding/sdk/api/snippets/ParameterChangeSource.md new file mode 100644 index 0000000000..33b597d6b9 --- /dev/null +++ b/_docs/latest/embedding/sdk/api/snippets/ParameterChangeSource.md @@ -0,0 +1,22 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: ParameterChangeSource +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ParameterChangeSource.md +layout: new-docs +latest: true +--- + +```ts +type ParameterChangeSource = "initial-state" | "manual-change" | "auto-change"; +``` + +Source of a parameter-change event: + +- `initial-state` - first applied snapshot, fired once per dashboard load. +- `manual-change` - user edited parameters in UI. +- `auto-change` - in the case of auto-updates, e.g. to pass normalized values back to parent. diff --git a/_docs/latest/embedding/sdk/api/snippets/ParameterValues.md b/_docs/latest/embedding/sdk/api/snippets/ParameterValues.md index 5c499ba7b2..208d99b68c 100644 --- a/_docs/latest/embedding/sdk/api/snippets/ParameterValues.md +++ b/_docs/latest/embedding/sdk/api/snippets/ParameterValues.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/ProtectedColorKey.md b/_docs/latest/embedding/sdk/api/snippets/ProtectedColorKey.md index 2b821aa5c8..a9e423357f 100644 --- a/_docs/latest/embedding/sdk/api/snippets/ProtectedColorKey.md +++ b/_docs/latest/embedding/sdk/api/snippets/ProtectedColorKey.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkCollectionId.md b/_docs/latest/embedding/sdk/api/snippets/SdkCollectionId.md index 6ae5536a48..a185414ae2 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkCollectionId.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkCollectionId.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkDashboardEntityPublicProps.md b/_docs/latest/embedding/sdk/api/snippets/SdkDashboardEntityPublicProps.md index f80e4f0d53..aaf4488c98 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkDashboardEntityPublicProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkDashboardEntityPublicProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkDashboardId.md b/_docs/latest/embedding/sdk/api/snippets/SdkDashboardId.md index ce22bf93a1..060fd39113 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkDashboardId.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkDashboardId.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkDashboardLoadEvent.md b/_docs/latest/embedding/sdk/api/snippets/SdkDashboardLoadEvent.md index 4c5cfd8a17..3502ee354e 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkDashboardLoadEvent.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkDashboardLoadEvent.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkEntityId.md b/_docs/latest/embedding/sdk/api/snippets/SdkEntityId.md index af65483926..cb0be49263 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkEntityId.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkEntityId.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkEntityToken.md b/_docs/latest/embedding/sdk/api/snippets/SdkEntityToken.md index 7cb3e57a78..69ae4a2adb 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkEntityToken.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkEntityToken.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkErrorComponent.md b/_docs/latest/embedding/sdk/api/snippets/SdkErrorComponent.md index 19e8ae7b61..ef2b8db45e 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkErrorComponent.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkErrorComponent.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkErrorComponentProps.md b/_docs/latest/embedding/sdk/api/snippets/SdkErrorComponentProps.md index b37c660fd7..8eabe11767 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkErrorComponentProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkErrorComponentProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkEventHandlersConfig.md b/_docs/latest/embedding/sdk/api/snippets/SdkEventHandlersConfig.md index 87d1ec1d55..21908aaad7 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkEventHandlersConfig.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkEventHandlersConfig.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkQuestionEntityPublicProps.md b/_docs/latest/embedding/sdk/api/snippets/SdkQuestionEntityPublicProps.md index a2461197e1..d42b7fc373 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkQuestionEntityPublicProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkQuestionEntityPublicProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkQuestionId.md b/_docs/latest/embedding/sdk/api/snippets/SdkQuestionId.md index 5be69d51c9..5b24fab436 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkQuestionId.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkQuestionId.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkQuestionProps.md b/_docs/latest/embedding/sdk/api/snippets/SdkQuestionProps.md index c19d7b0022..4973ff1a25 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkQuestionProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkQuestionProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -17,30 +17,33 @@ latest: true -| Property | Type | Description | -| :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dataPicker?` | [`EmbeddingDataPicker`](./api/EmbeddingDataPicker) | Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting `dataPicker = "staged"`. | -| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | -| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | -| `hiddenParameters?` | `string`[] | A list of parameters to hide. | -| `initialCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to preselect in the save modal's collection picker. Unlike `targetCollection`, the picker remains visible and the user can choose a different collection. Ignored when `targetCollection` is set. | -| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | -| `isSaveEnabled?` | `boolean` | Whether to show the save button. | -| `onBeforeSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`, `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | -| `onNavigateBack?` | () => `void` | A callback function that triggers when a user clicks the back button. | -| `onRun?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | -| `onVisualizationChange?` | (`display`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when the visualization type changes. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | -| `questionId?` | [`SdkQuestionId`](./api/SdkQuestionId) \| `null` | - | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | -| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. | -| `token?` | `string` \| `null` | - | -| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | -| `withAlerts?` | `boolean` | Enables the ability to set up alerts on the question. | -| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | -| `withDownloads?` | `boolean` | Enables the ability to download results in the question. | +| Property | Type | Description | +| :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dataPicker?` | [`EmbeddingDataPicker`](./api/EmbeddingDataPicker) | Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting `dataPicker = "staged"`. | +| `entityTypes?` | [`EmbeddingEntityType`](./api/EmbeddingEntityType)[] | An array that specifies which entity types are available in the data picker | +| `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | +| `hiddenParameters?` | `string`[] | A list of parameters to hide. | +| `initialCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to preselect in the save modal's collection picker. Unlike `targetCollection`, the picker remains visible and the user can choose a different collection. Ignored when `targetCollection` is set. | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
    For each parameter:
    - set to a value: that value is applied.
    - set to `null`: strictly cleared, ignoring the parameter's default.
    - omitted (or set to `undefined`): falls back to the parameter's default (or `null` if it has no default). | +| `isSaveEnabled?` | `boolean` | Whether to show the save button. | +| `onBeforeSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`, `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | +| `onNavigateBack?` | () => `void` | A callback function that triggers when a user clicks the back button. | +| `onRun?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion) \| `undefined`) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `onSqlParametersChange?` | (`payload`: [`SqlParameterChangePayload`](./api/SqlParameterChangePayload)) => `void` | Fires on SQL parameters change. The payload's `source` distinguishes the initial state on load (`'initial-state'`), user edits in the UI (`'manual-change'`), and auto-updates (`'auto-change'`). | +| `onVisualizationChange?` | (`display`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when the visualization type changes. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | +| `questionId?` | [`SdkQuestionId`](./api/SdkQuestionId) \| `null` | - | +| `sqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values:
    - a parameter set to a value uses that value.
    - a parameter set to `null` is cleared, even if it has a default.
    - a parameter omitted from the object (or set to `undefined`) uses its default (or `null` if it has no default).

    Pair with `onSqlParametersChange` to stay in sync with user edits. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | +| `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. | +| `token?` | `string` \| `null` | - | +| `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | +| `withAlerts?` | `boolean` | Enables the ability to set up alerts on the question. | +| `withChartTypeSelector?` | `boolean` | Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout. | +| `withDownloads?` | `boolean` | Enables the ability to download results in the question. | +| `withEditorButton?` | `boolean` | Determines whether the editor button is shown. Only relevant when using the default layout. | diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkQuestionTitleProps.md b/_docs/latest/embedding/sdk/api/snippets/SdkQuestionTitleProps.md index eedf4f5b6b..b183a5dc78 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkQuestionTitleProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkQuestionTitleProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SdkUserId.md b/_docs/latest/embedding/sdk/api/snippets/SdkUserId.md index b074aea910..95f555de82 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SdkUserId.md +++ b/_docs/latest/embedding/sdk/api/snippets/SdkUserId.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/SqlParameterChangePayload.md b/_docs/latest/embedding/sdk/api/snippets/SqlParameterChangePayload.md new file mode 100644 index 0000000000..7c944797b3 --- /dev/null +++ b/_docs/latest/embedding/sdk/api/snippets/SqlParameterChangePayload.md @@ -0,0 +1,34 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: SqlParameterChangePayload +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SqlParameterChangePayload.md +layout: new-docs +latest: true +--- + +```ts +type SqlParameterChangePayload = { + defaultParameters: ParameterValues; + parameters: ParameterValues; + source: SqlParameterChangeSource; +}; +``` + +Payload passed to `onSqlParametersChange` callback + +## Properties + + + +| Property | Type | +| :------------------------------------------------- | :-------------------------------------------------------------- | +| `defaultParameters` | [`ParameterValues`](./api/ParameterValues) | +| `parameters` | [`ParameterValues`](./api/ParameterValues) | +| `source` | [`SqlParameterChangeSource`](./api/SqlParameterChangeSource) | + + diff --git a/_docs/latest/embedding/sdk/api/snippets/SqlParameterChangeSource.md b/_docs/latest/embedding/sdk/api/snippets/SqlParameterChangeSource.md new file mode 100644 index 0000000000..54b9acd060 --- /dev/null +++ b/_docs/latest/embedding/sdk/api/snippets/SqlParameterChangeSource.md @@ -0,0 +1,25 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: SqlParameterChangeSource +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SqlParameterChangeSource.md +layout: new-docs +latest: true +--- + +```ts +type SqlParameterChangeSource = + | "initial-state" + | "manual-change" + | "auto-change"; +``` + +Source of a sql-parameter-change event: + +- `initial-state` - first applied state, fired once per question load. +- `manual-change` - user edited parameters in UI. +- `auto-change` - in the case of auto-updates, e.g. to pass normalized values back to parent. diff --git a/_docs/latest/embedding/sdk/api/snippets/SqlParameterValues.md b/_docs/latest/embedding/sdk/api/snippets/SqlParameterValues.md index e24a77800a..732aa9fc5b 100644 --- a/_docs/latest/embedding/sdk/api/snippets/SqlParameterValues.md +++ b/_docs/latest/embedding/sdk/api/snippets/SqlParameterValues.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/StaticDashboard.md b/_docs/latest/embedding/sdk/api/snippets/StaticDashboard.md index b2a9c2d5ed..f504d58982 100644 --- a/_docs/latest/embedding/sdk/api/snippets/StaticDashboard.md +++ b/_docs/latest/embedding/sdk/api/snippets/StaticDashboard.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/StaticDashboardProps.md b/_docs/latest/embedding/sdk/api/snippets/StaticDashboardProps.md index 7cb7a7930a..a00110db57 100644 --- a/_docs/latest/embedding/sdk/api/snippets/StaticDashboardProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/StaticDashboardProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -17,23 +17,25 @@ latest: true -| Property | Type | Description | -| :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `autoRefreshInterval?` | `number` | The interval between auto refreshes on the dashboard, in seconds. | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId?` | [`SdkDashboardId`](./api/SdkDashboardId) \| `null` | The ID of the dashboard.
    This is either:
    - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
    - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/latest/embedding/public-links#appearance-parameters).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `onVisualizationChange?` | (`visualization`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `token?` | `string` \| `null` | A valid JWT token for the guest embed. | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withSubscriptions?` | `boolean` | Whether to show the subscriptions button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `autoRefreshInterval?` | `number` | The interval between auto refreshes on the dashboard, in seconds. | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId?` | [`SdkDashboardId`](./api/SdkDashboardId) \| `null` | The ID of the dashboard.
    This is either:
    - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
    - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`SdkQuestionProps`](./api/SdkQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/latest/embedding/public-links#appearance-parameters).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
    For each parameter:
    - set to a value (string for a single option, array of strings for multiple): that value is applied.
    - set to `null`: strictly cleared, ignoring the parameter's default.
    - omitted (or set to `undefined`): falls back to the parameter's default (or `null` if it has no default).

    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [initialParameters](./api/InteractiveDashboardProps#initialparameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: [`MetabaseDashboard`](./api/MetabaseDashboard) \| `null`) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `onParametersChange?` | (`payload`: [`ParameterChangePayload`](./api/ParameterChangePayload)) => `void` | Fires on parameters change. The payload's `source` distinguishes the initial state on load (`'initial-state'`), user edits in the UI (`'manual-change'`), and auto-updates (`'auto-change'`). | +| `onVisualizationChange?` | (`visualization`: \| `"object"` \| `"table"` \| `"bar"` \| `"line"` \| `"pie"` \| `"scalar"` \| `"row"` \| `"area"` \| `"combo"` \| `"pivot"` \| `"smartscalar"` \| `"gauge"` \| `"progress"` \| `"funnel"` \| `"map"` \| `"scatter"` \| `"boxplot"` \| `"waterfall"` \| `"sankey"` \| `"list"`) => `void` | A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. | +| `parameters?` | [`ParameterValues`](./api/ParameterValues) | Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values:
    - a parameter set to a value uses that value.
    - a parameter set to `null` is cleared, even if it has a default.
    - a parameter omitted from the object (or set to `undefined`) uses its default (or `null` if it has no default).

    Pair with [onParametersChange](./api/InteractiveDashboardProps#onparameterschange) to stay in sync with user edits.
    - Combining [parameters](./api/InteractiveDashboardProps#parameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/latest/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
    - Combining [parameters](./api/InteractiveDashboardProps#parameters) and [hiddenParameters](./api/InteractiveDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `token?` | `string` \| `null` | A valid JWT token for the guest embed. | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withSubscriptions?` | `boolean` | Whether to show the subscriptions button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/latest/embedding/sdk/api/snippets/StaticQuestion.md b/_docs/latest/embedding/sdk/api/snippets/StaticQuestion.md index 4c6177f964..2b71576739 100644 --- a/_docs/latest/embedding/sdk/api/snippets/StaticQuestion.md +++ b/_docs/latest/embedding/sdk/api/snippets/StaticQuestion.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/StaticQuestionComponents.md b/_docs/latest/embedding/sdk/api/snippets/StaticQuestionComponents.md index 3f164a5344..0fede4329d 100644 --- a/_docs/latest/embedding/sdk/api/snippets/StaticQuestionComponents.md +++ b/_docs/latest/embedding/sdk/api/snippets/StaticQuestionComponents.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/StaticQuestionProps.md b/_docs/latest/embedding/sdk/api/snippets/StaticQuestionProps.md index b3f3d26fbd..23313c75c1 100644 --- a/_docs/latest/embedding/sdk/api/snippets/StaticQuestionProps.md +++ b/_docs/latest/embedding/sdk/api/snippets/StaticQuestionProps.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -22,9 +22,11 @@ latest: true | `className?` | `string` | A custom class name to be added to the root element. | | `height?` | `Height`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the height of the component | | `hiddenParameters?` | `string`[] | A list of parameters to hide. | -| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for the SQL parameters. | +| `initialSqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
    For each parameter:
    - set to a value: that value is applied.
    - set to `null`: strictly cleared, ignoring the parameter's default.
    - omitted (or set to `undefined`): falls back to the parameter's default (or `null` if it has no default). | +| `onSqlParametersChange?` | (`payload`: [`SqlParameterChangePayload`](./api/SqlParameterChangePayload)) => `void` | Fires on SQL parameters change. The payload's `source` distinguishes the initial state on load (`'initial-state'`), user edits in the UI (`'manual-change'`), and auto-updates (`'auto-change'`). | | `query?` | `undefined` | - | | `questionId?` | [`SdkQuestionId`](./api/SdkQuestionId) \| `null` | The ID of the question.
    This is either:
    - the numerical ID when accessing a question link, i.e. `http://localhost:3000/question/1-my-question` where the ID is `1`
    - the string ID found in the `entity_id` key of the question object when using the API directly or using the SDK Collection Browser to return data
    - `new` to show the notebook editor for creating new questions
    - `new-native` to show the SQL editor for creating new native questions | +| `sqlParameters?` | [`SqlParameterValues`](./api/SqlParameterValues) | Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values:
    - a parameter set to a value uses that value.
    - a parameter set to `null` is cleared, even if it has a default.
    - a parameter omitted from the object (or set to `undefined`) uses its default (or `null` if it has no default).

    Pair with `onSqlParametersChange` to stay in sync with user edits. | | `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | | `title?` | [`SdkQuestionTitleProps`](./api/SdkQuestionTitleProps) | Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. | | `token?` | `string` \| `null` | A valid JWT token for the guest embed. | diff --git a/_docs/latest/embedding/sdk/api/snippets/UseMetabotResult.md b/_docs/latest/embedding/sdk/api/snippets/UseMetabotResult.md index 5891ae38cd..51c5eae220 100644 --- a/_docs/latest/embedding/sdk/api/snippets/UseMetabotResult.md +++ b/_docs/latest/embedding/sdk/api/snippets/UseMetabotResult.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/UserBackendJwtResponse.md b/_docs/latest/embedding/sdk/api/snippets/UserBackendJwtResponse.md index 3db309f66a..bc90b4d1b8 100644 --- a/_docs/latest/embedding/sdk/api/snippets/UserBackendJwtResponse.md +++ b/_docs/latest/embedding/sdk/api/snippets/UserBackendJwtResponse.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/defineMetabaseAuthConfig.md b/_docs/latest/embedding/sdk/api/snippets/defineMetabaseAuthConfig.md index bf8d8423a1..1b7ca57109 100644 --- a/_docs/latest/embedding/sdk/api/snippets/defineMetabaseAuthConfig.md +++ b/_docs/latest/embedding/sdk/api/snippets/defineMetabaseAuthConfig.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/index.md b/_docs/latest/embedding/sdk/api/snippets/index.md index 31ab3664b0..c31617f841 100644 --- a/_docs/latest/embedding/sdk/api/snippets/index.md +++ b/_docs/latest/embedding/sdk/api/snippets/index.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -34,41 +34,45 @@ latest: true ## Dashboard -| Name | Description | -| :-------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [EditableDashboard](./api/EditableDashboard) | A dashboard component with the features available in the `InteractiveDashboard` component, as well as the ability to add and update questions, layout, and content within your dashboard. | -| [InteractiveDashboard](./api/InteractiveDashboard) | A dashboard component with drill downs, click behaviors, and the ability to view and click into questions. | -| [StaticDashboard](./api/StaticDashboard) | A lightweight dashboard component. | -| [EditableDashboardProps](./api/EditableDashboardProps) | - | -| [InteractiveDashboardProps](./api/InteractiveDashboardProps) | - | -| [StaticDashboardProps](./api/StaticDashboardProps) | - | +| Name | Description | +| :-------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [EditableDashboard](./api/EditableDashboard) | A dashboard component with the features available in the `InteractiveDashboard` component, as well as the ability to add and update questions, layout, and content within your dashboard. | +| [InteractiveDashboard](./api/InteractiveDashboard) | A dashboard component with drill downs, click behaviors, and the ability to view and click into questions. | +| [StaticDashboard](./api/StaticDashboard) | A lightweight dashboard component. | +| [EditableDashboardProps](./api/EditableDashboardProps) | - | +| [InteractiveDashboardProps](./api/InteractiveDashboardProps) | - | +| [StaticDashboardProps](./api/StaticDashboardProps) | - | +| [ParameterChangePayload](./api/ParameterChangePayload) | Payload passed to `onParametersChange` callback | +| [ParameterChangeSource](./api/ParameterChangeSource) | Source of a parameter-change event: - `initial-state` - first applied snapshot, fired once per dashboard load. - `manual-change` - user edited parameters in UI. - `auto-change` - in the case of auto-updates, e.g. to pass normalized values back to parent. | ## InteractiveQuestion -| Name | Description | -| :------------------------------------------------------------------------------------------------------------ | :------------------------------------------------ | -| [InteractiveQuestion](./api/InteractiveQuestion) | A component that renders an interactive question. | -| [DrillThroughQuestionProps](./api/DrillThroughQuestionProps) | Props for the drill-through question | -| [InteractiveQuestionChartTypeDropdownProps](./api/InteractiveQuestionChartTypeDropdownProps) | - | -| [InteractiveQuestionEditorButtonProps](./api/InteractiveQuestionEditorButtonProps) | - | -| [InteractiveQuestionEditorProps](./api/InteractiveQuestionEditorProps) | - | -| [InteractiveQuestionProps](./api/InteractiveQuestionProps) | - | -| [InteractiveQuestionQuestionSettingsDropdownProps](./api/InteractiveQuestionQuestionSettingsDropdownProps) | - | -| [InteractiveQuestionQuestionVisualizationProps](./api/InteractiveQuestionQuestionVisualizationProps) | - | -| [InteractiveQuestionResetButtonProps](./api/InteractiveQuestionResetButtonProps) | - | -| [InteractiveQuestionSaveQuestionFormProps](./api/InteractiveQuestionSaveQuestionFormProps) | - | -| [InteractiveQuestionTitleProps](./api/InteractiveQuestionTitleProps) | - | -| [SdkQuestionProps](./api/SdkQuestionProps) | - | -| [InteractiveQuestionBackButtonProps](./api/InteractiveQuestionBackButtonProps) | - | -| [InteractiveQuestionBreakoutDropdownProps](./api/InteractiveQuestionBreakoutDropdownProps) | - | -| [InteractiveQuestionChartTypeSelectorProps](./api/InteractiveQuestionChartTypeSelectorProps) | - | -| [InteractiveQuestionDownloadWidgetDropdownProps](./api/InteractiveQuestionDownloadWidgetDropdownProps) | - | -| [InteractiveQuestionDownloadWidgetProps](./api/InteractiveQuestionDownloadWidgetProps) | - | -| [InteractiveQuestionFilterDropdownProps](./api/InteractiveQuestionFilterDropdownProps) | - | -| [InteractiveQuestionFilterProps](./api/InteractiveQuestionFilterProps) | - | -| [InteractiveQuestionQuestionSettingsProps](./api/InteractiveQuestionQuestionSettingsProps) | - | -| [InteractiveQuestionSaveButtonProps](./api/InteractiveQuestionSaveButtonProps) | - | -| [InteractiveQuestionSummarizeDropdownProps](./api/InteractiveQuestionSummarizeDropdownProps) | - | +| Name | Description | +| :------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [InteractiveQuestion](./api/InteractiveQuestion) | A component that renders an interactive question. | +| [DrillThroughQuestionProps](./api/DrillThroughQuestionProps) | Props for the drill-through question | +| [InteractiveQuestionChartTypeDropdownProps](./api/InteractiveQuestionChartTypeDropdownProps) | - | +| [InteractiveQuestionEditorButtonProps](./api/InteractiveQuestionEditorButtonProps) | - | +| [InteractiveQuestionEditorProps](./api/InteractiveQuestionEditorProps) | - | +| [InteractiveQuestionProps](./api/InteractiveQuestionProps) | - | +| [InteractiveQuestionQuestionSettingsDropdownProps](./api/InteractiveQuestionQuestionSettingsDropdownProps) | - | +| [InteractiveQuestionQuestionVisualizationProps](./api/InteractiveQuestionQuestionVisualizationProps) | - | +| [InteractiveQuestionResetButtonProps](./api/InteractiveQuestionResetButtonProps) | - | +| [InteractiveQuestionSaveQuestionFormProps](./api/InteractiveQuestionSaveQuestionFormProps) | - | +| [InteractiveQuestionTitleProps](./api/InteractiveQuestionTitleProps) | - | +| [SdkQuestionProps](./api/SdkQuestionProps) | - | +| [InteractiveQuestionBackButtonProps](./api/InteractiveQuestionBackButtonProps) | - | +| [InteractiveQuestionBreakoutDropdownProps](./api/InteractiveQuestionBreakoutDropdownProps) | - | +| [InteractiveQuestionChartTypeSelectorProps](./api/InteractiveQuestionChartTypeSelectorProps) | - | +| [InteractiveQuestionDownloadWidgetDropdownProps](./api/InteractiveQuestionDownloadWidgetDropdownProps) | - | +| [InteractiveQuestionDownloadWidgetProps](./api/InteractiveQuestionDownloadWidgetProps) | - | +| [InteractiveQuestionFilterDropdownProps](./api/InteractiveQuestionFilterDropdownProps) | - | +| [InteractiveQuestionFilterProps](./api/InteractiveQuestionFilterProps) | - | +| [InteractiveQuestionQuestionSettingsProps](./api/InteractiveQuestionQuestionSettingsProps) | - | +| [InteractiveQuestionSaveButtonProps](./api/InteractiveQuestionSaveButtonProps) | - | +| [InteractiveQuestionSummarizeDropdownProps](./api/InteractiveQuestionSummarizeDropdownProps) | - | +| [SqlParameterChangePayload](./api/SqlParameterChangePayload) | Payload passed to `onSqlParametersChange` callback | +| [SqlParameterChangeSource](./api/SqlParameterChangeSource) | Source of a sql-parameter-change event: - `initial-state` - first applied state, fired once per question load. - `manual-change` - user edited parameters in UI. - `auto-change` - in the case of auto-updates, e.g. to pass normalized values back to parent. | ## MetabaseProvider diff --git a/_docs/latest/embedding/sdk/api/snippets/useApplicationName.md b/_docs/latest/embedding/sdk/api/snippets/useApplicationName.md index 6da0909da9..7f9eba286f 100644 --- a/_docs/latest/embedding/sdk/api/snippets/useApplicationName.md +++ b/_docs/latest/embedding/sdk/api/snippets/useApplicationName.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/useAvailableFonts.md b/_docs/latest/embedding/sdk/api/snippets/useAvailableFonts.md index 3080fe7ca6..093b7b811c 100644 --- a/_docs/latest/embedding/sdk/api/snippets/useAvailableFonts.md +++ b/_docs/latest/embedding/sdk/api/snippets/useAvailableFonts.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/useCreateDashboardApi.md b/_docs/latest/embedding/sdk/api/snippets/useCreateDashboardApi.md index 8f8e163168..17d8db859e 100644 --- a/_docs/latest/embedding/sdk/api/snippets/useCreateDashboardApi.md +++ b/_docs/latest/embedding/sdk/api/snippets/useCreateDashboardApi.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/useCurrentUser.md b/_docs/latest/embedding/sdk/api/snippets/useCurrentUser.md index 4dc48811e1..22224ba724 100644 --- a/_docs/latest/embedding/sdk/api/snippets/useCurrentUser.md +++ b/_docs/latest/embedding/sdk/api/snippets/useCurrentUser.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/useMetabaseAuthStatus.md b/_docs/latest/embedding/sdk/api/snippets/useMetabaseAuthStatus.md index afa22b9aa7..536634d391 100644 --- a/_docs/latest/embedding/sdk/api/snippets/useMetabaseAuthStatus.md +++ b/_docs/latest/embedding/sdk/api/snippets/useMetabaseAuthStatus.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/snippets/useMetabot.md b/_docs/latest/embedding/sdk/api/snippets/useMetabot.md index 612856fcd7..612c9a8621 100644 --- a/_docs/latest/embedding/sdk/api/snippets/useMetabot.md +++ b/_docs/latest/embedding/sdk/api/snippets/useMetabot.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/useApplicationName.html b/_docs/latest/embedding/sdk/api/useApplicationName.html index 6a2a77a977..cb085b95f8 100644 --- a/_docs/latest/embedding/sdk/api/useApplicationName.html +++ b/_docs/latest/embedding/sdk/api/useApplicationName.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/useAvailableFonts.html b/_docs/latest/embedding/sdk/api/useAvailableFonts.html index 94111daf7f..b4185bb0e7 100644 --- a/_docs/latest/embedding/sdk/api/useAvailableFonts.html +++ b/_docs/latest/embedding/sdk/api/useAvailableFonts.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/useCreateDashboardApi.html b/_docs/latest/embedding/sdk/api/useCreateDashboardApi.html index a730b28248..29571eb557 100644 --- a/_docs/latest/embedding/sdk/api/useCreateDashboardApi.html +++ b/_docs/latest/embedding/sdk/api/useCreateDashboardApi.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/useCurrentUser.html b/_docs/latest/embedding/sdk/api/useCurrentUser.html index f4a8401cb3..d184c4389a 100644 --- a/_docs/latest/embedding/sdk/api/useCurrentUser.html +++ b/_docs/latest/embedding/sdk/api/useCurrentUser.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/useMetabaseAuthStatus.html b/_docs/latest/embedding/sdk/api/useMetabaseAuthStatus.html index 4e95a43624..eb3af7f905 100644 --- a/_docs/latest/embedding/sdk/api/useMetabaseAuthStatus.html +++ b/_docs/latest/embedding/sdk/api/useMetabaseAuthStatus.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/api/useMetabot.html b/_docs/latest/embedding/sdk/api/useMetabot.html index 49650518e4..a558ad2d4c 100644 --- a/_docs/latest/embedding/sdk/api/useMetabot.html +++ b/_docs/latest/embedding/sdk/api/useMetabot.html @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/collections.md b/_docs/latest/embedding/sdk/collections.md index 783286f6df..40d6fc7211 100644 --- a/_docs/latest/embedding/sdk/collections.md +++ b/_docs/latest/embedding/sdk/collections.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/config.md b/_docs/latest/embedding/sdk/config.md index 6faf2a7608..5c977b8dff 100644 --- a/_docs/latest/embedding/sdk/config.md +++ b/_docs/latest/embedding/sdk/config.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/dashboards.md b/_docs/latest/embedding/sdk/dashboards.md index 4d8fec0873..7d5d5835e5 100644 --- a/_docs/latest/embedding/sdk/dashboards.md +++ b/_docs/latest/embedding/sdk/dashboards.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -71,6 +71,10 @@ A dashboard component with the features available in the `InteractiveDashboard` {% include_file "{{ dirname }}/snippets/dashboards/interactive-dashboard.tsx" %} ``` +## Pass parameter values to a dashboard + +See [Modular embedding parameters](../parameters#pass-parameter-values-to-a-dashboard). + ## Customizing dashboard height By default, dashboard components take full page height (100vh). You can override this with custom styles passed via `style` or `className` props. diff --git a/_docs/latest/embedding/sdk/introduction.md b/_docs/latest/embedding/sdk/introduction.md index f9cda44df2..91226dc05e 100644 --- a/_docs/latest/embedding/sdk/introduction.md +++ b/_docs/latest/embedding/sdk/introduction.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/next-js.md b/_docs/latest/embedding/sdk/next-js.md index 63ec5e8183..5790d99529 100644 --- a/_docs/latest/embedding/sdk/next-js.md +++ b/_docs/latest/embedding/sdk/next-js.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/plugins.md b/_docs/latest/embedding/sdk/plugins.md index b8a4564508..c63b013267 100644 --- a/_docs/latest/embedding/sdk/plugins.md +++ b/_docs/latest/embedding/sdk/plugins.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/questions.md b/_docs/latest/embedding/sdk/questions.md index 78ce345c91..f5232618b5 100644 --- a/_docs/latest/embedding/sdk/questions.md +++ b/_docs/latest/embedding/sdk/questions.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -69,15 +69,9 @@ Use this component when you want to allow people to explore their data and custo {% include_file "{{ dirname }}/api/snippets/InteractiveQuestionProps.md" snippet="properties" %} -## Pass SQL parameters to SQL questions with `initialSqlParameters` +## Pass parameters to SQL questions -You can pass parameter values to questions defined with SQL via the `initialSqlParameters` prop, in the format of `{parameter_name: parameter_value}`. Learn more about [SQL parameters](../../questions/native-editor/sql-parameters). - -```typescript -{% include_file "{{ dirname }}/snippets/questions/initial-sql-parameters.tsx" snippet="example" %} -``` - -`initialSqlParameters` can't be used with questions built using the query builder. +See [Modular embedding parameters](../parameters#pass-parameters-to-sql-questions). ## Enable alerts on embedded questions diff --git a/_docs/latest/embedding/sdk/quickstart-cli.md b/_docs/latest/embedding/sdk/quickstart-cli.md index 1ea1eb65f2..fe36070dcb 100644 --- a/_docs/latest/embedding/sdk/quickstart-cli.md +++ b/_docs/latest/embedding/sdk/quickstart-cli.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/quickstart-with-sample-app.md b/_docs/latest/embedding/sdk/quickstart-with-sample-app.md index 0300ef22d4..0840fba026 100644 --- a/_docs/latest/embedding/sdk/quickstart-with-sample-app.md +++ b/_docs/latest/embedding/sdk/quickstart-with-sample-app.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/quickstart.md b/_docs/latest/embedding/sdk/quickstart.md index b473e252c3..a7e55ac040 100644 --- a/_docs/latest/embedding/sdk/quickstart.md +++ b/_docs/latest/embedding/sdk/quickstart.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/upgrade.md b/_docs/latest/embedding/sdk/upgrade.md index a6cc3d7180..c155ebac95 100644 --- a/_docs/latest/embedding/sdk/upgrade.md +++ b/_docs/latest/embedding/sdk/upgrade.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/sdk/version.md b/_docs/latest/embedding/sdk/version.md index b5c9516f18..4fe3f51a9b 100644 --- a/_docs/latest/embedding/sdk/version.md +++ b/_docs/latest/embedding/sdk/version.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/securing-embeds.md b/_docs/latest/embedding/securing-embeds.md index 61fcdf7bb7..d5604367ac 100644 --- a/_docs/latest/embedding/securing-embeds.md +++ b/_docs/latest/embedding/securing-embeds.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/snippets/parameters/dashboards/controlled-parameters.tsx b/_docs/latest/embedding/snippets/parameters/dashboards/controlled-parameters.tsx new file mode 100644 index 0000000000..3f65498c41 --- /dev/null +++ b/_docs/latest/embedding/snippets/parameters/dashboards/controlled-parameters.tsx @@ -0,0 +1,52 @@ +import { + InteractiveDashboard, + type ParameterChangePayload, + type ParameterValues, +} from "@metabase/embedding-sdk-react"; +import { useState } from "react"; + +const dashboardId = 1; + +const ExampleControlled = () => { + // [] + const [parameters, setParameters] = useState({ + state: "NY", + }); + + const handleParametersChange = (payload: ParameterChangePayload) => { + // Sync your local state on every applied change. `payload.source` is one of: + // "initial-state" — post-load snapshot, fired once per dashboard load + // "manual-change" — user edited a parameter widget + // "auto-change" — your push was normalized; re-sync from `payload.parameters` + setParameters(payload.parameters); + }; + + return ( + + ); + // [] +}; + +const ExampleClearOne = () => ( + // [] + // Setting a parameter to `null` clears it (ignores the parameter's default). + // Missing slugs fall back to `parameter.default ?? null`. + + // [] +); + +const ExampleClearAll = () => ( + // [] + // Pass an empty object to clear every parameter. + + // [] +); + +export { ExampleControlled, ExampleClearOne, ExampleClearAll }; diff --git a/_docs/latest/embedding/snippets/parameters/dashboards/initial-parameters.tsx b/_docs/latest/embedding/snippets/parameters/dashboards/initial-parameters.tsx new file mode 100644 index 0000000000..df8e56bda1 --- /dev/null +++ b/_docs/latest/embedding/snippets/parameters/dashboards/initial-parameters.tsx @@ -0,0 +1,14 @@ +import { InteractiveDashboard } from "@metabase/embedding-sdk-react"; + +const dashboardId = 1; + +const Example = () => ( + // [] + + // [] +); + +export { Example }; diff --git a/_docs/latest/embedding/snippets/parameters/questions/controlled-sql-parameters.tsx b/_docs/latest/embedding/snippets/parameters/questions/controlled-sql-parameters.tsx new file mode 100644 index 0000000000..761ed732cc --- /dev/null +++ b/_docs/latest/embedding/snippets/parameters/questions/controlled-sql-parameters.tsx @@ -0,0 +1,44 @@ +import { + InteractiveQuestion, + type SqlParameterChangePayload, + type SqlParameterValues, +} from "@metabase/embedding-sdk-react"; +import { useState } from "react"; + +const questionId = 1; + +const ExampleControlled = () => { + // [] + const [sqlParameters, setSqlParameters] = useState({ + state: "NY", + }); + + const handleSqlParametersChange = (payload: SqlParameterChangePayload) => { + // Sync your local state on every applied change. `payload.source` is one of: + // "initial-state" — post-load snapshot, fired once per question load + // "manual-change" — user edited a parameter widget + // "auto-change" — your push was normalized; re-sync from `payload.parameters` + setSqlParameters(payload.parameters); + }; + + return ( + + ); + // [] +}; + +const ExampleClear = () => ( + // [] + // Setting a SQL parameter to `null` clears it (ignores the parameter's default). + + // [] +); + +export { ExampleControlled, ExampleClear }; diff --git a/_docs/latest/embedding/sdk/snippets/questions/initial-sql-parameters.tsx b/_docs/latest/embedding/snippets/parameters/questions/initial-sql-parameters.tsx similarity index 100% rename from _docs/latest/embedding/sdk/snippets/questions/initial-sql-parameters.tsx rename to _docs/latest/embedding/snippets/parameters/questions/initial-sql-parameters.tsx diff --git a/_docs/latest/embedding/start.md b/_docs/latest/embedding/start.md index 66039b9903..f4874fa618 100644 --- a/_docs/latest/embedding/start.md +++ b/_docs/latest/embedding/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/embedding/static-embedding-parameters.md b/_docs/latest/embedding/static-embedding-parameters.md index 7a9b376a8c..193d04830f 100644 --- a/_docs/latest/embedding/static-embedding-parameters.md +++ b/_docs/latest/embedding/static-embedding-parameters.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/static-embedding.md b/_docs/latest/embedding/static-embedding.md index 80ed4283fe..9177039d27 100644 --- a/_docs/latest/embedding/static-embedding.md +++ b/_docs/latest/embedding/static-embedding.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/tenants.md b/_docs/latest/embedding/tenants.md index a719199801..ea24f92611 100644 --- a/_docs/latest/embedding/tenants.md +++ b/_docs/latest/embedding/tenants.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/embedding/translations.md b/_docs/latest/embedding/translations.md index 960dce66d5..40d5179951 100644 --- a/_docs/latest/embedding/translations.md +++ b/_docs/latest/embedding/translations.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/collections.md b/_docs/latest/exploration-and-organization/collections.md index d1c0d73ffe..33b73706b3 100644 --- a/_docs/latest/exploration-and-organization/collections.md +++ b/_docs/latest/exploration-and-organization/collections.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/content-verification.md b/_docs/latest/exploration-and-organization/content-verification.md index 565a66b858..3bb2efd658 100644 --- a/_docs/latest/exploration-and-organization/content-verification.md +++ b/_docs/latest/exploration-and-organization/content-verification.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/data-model-reference.md b/_docs/latest/exploration-and-organization/data-model-reference.md index f497dc8093..8daf2dcbee 100644 --- a/_docs/latest/exploration-and-organization/data-model-reference.md +++ b/_docs/latest/exploration-and-organization/data-model-reference.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/delete-and-restore.md b/_docs/latest/exploration-and-organization/delete-and-restore.md index b300db72ff..da140956b2 100644 --- a/_docs/latest/exploration-and-organization/delete-and-restore.md +++ b/_docs/latest/exploration-and-organization/delete-and-restore.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/events-and-timelines.md b/_docs/latest/exploration-and-organization/events-and-timelines.md index f5a6b01604..57bac426b5 100644 --- a/_docs/latest/exploration-and-organization/events-and-timelines.md +++ b/_docs/latest/exploration-and-organization/events-and-timelines.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/exploration.md b/_docs/latest/exploration-and-organization/exploration.md index 0a99475d2c..4a51ab2a5a 100644 --- a/_docs/latest/exploration-and-organization/exploration.md +++ b/_docs/latest/exploration-and-organization/exploration.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/history.md b/_docs/latest/exploration-and-organization/history.md index 48a7992f07..923862bb5d 100644 --- a/_docs/latest/exploration-and-organization/history.md +++ b/_docs/latest/exploration-and-organization/history.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/keyboard-shortcuts.md b/_docs/latest/exploration-and-organization/keyboard-shortcuts.md index 8218c9531d..78bda8cbb7 100644 --- a/_docs/latest/exploration-and-organization/keyboard-shortcuts.md +++ b/_docs/latest/exploration-and-organization/keyboard-shortcuts.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/start.md b/_docs/latest/exploration-and-organization/start.md index b03c1bf45f..1ff4be7875 100644 --- a/_docs/latest/exploration-and-organization/start.md +++ b/_docs/latest/exploration-and-organization/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/exploration-and-organization/uploads.md b/_docs/latest/exploration-and-organization/uploads.md index ab5dbbaf85..1d52140a42 100644 --- a/_docs/latest/exploration-and-organization/uploads.md +++ b/_docs/latest/exploration-and-organization/uploads.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/exploration-and-organization/x-rays.md b/_docs/latest/exploration-and-organization/x-rays.md index 0854d4c8d5..5b0400d142 100644 --- a/_docs/latest/exploration-and-organization/x-rays.md +++ b/_docs/latest/exploration-and-organization/x-rays.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -73,4 +73,4 @@ If for some reason X-rays aren't a good fit for your team or your data, administ If you pin any dashboards in the "Our Analytics" collection, Metabase will hide the X-ray suggestions that appear on the homepage. -Admins can also manually remove these suggestions by clicking on the **Customize** button in the upper right and selecting a dashboard as your homepage. [Changing the home page](../configuring-metabase/settings#custom-homepage) won't disable the X-ray features in the rest of Metabase. +Admins can also manually remove these suggestions by clicking on the **Customize** button in the upper right and selecting a dashboard as your homepage. [Changing the home page](../configuring-metabase/settings#homepage) won't disable the X-ray features in the rest of Metabase. diff --git a/_docs/latest/installation-and-operation/accessibility.md b/_docs/latest/installation-and-operation/accessibility.md index cf8ae40555..d9465de3c1 100644 --- a/_docs/latest/installation-and-operation/accessibility.md +++ b/_docs/latest/installation-and-operation/accessibility.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/activating-the-enterprise-edition.md b/_docs/latest/installation-and-operation/activating-the-enterprise-edition.md index 81646e71b9..dfbcd995f9 100644 --- a/_docs/latest/installation-and-operation/activating-the-enterprise-edition.md +++ b/_docs/latest/installation-and-operation/activating-the-enterprise-edition.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/backing-up-metabase-application-data.md b/_docs/latest/installation-and-operation/backing-up-metabase-application-data.md index 7d9eb25842..08fa307ad7 100644 --- a/_docs/latest/installation-and-operation/backing-up-metabase-application-data.md +++ b/_docs/latest/installation-and-operation/backing-up-metabase-application-data.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/commands.md b/_docs/latest/installation-and-operation/commands.md index 0d1fce27c7..d4fc3f39bb 100644 --- a/_docs/latest/installation-and-operation/commands.md +++ b/_docs/latest/installation-and-operation/commands.md @@ -1,22 +1,24 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true category: Installation and Operation -title: Metabase CLI +title: Metabase JAR commands source_url: >- https://github.com/metabase/metabase/blob/master/docs/installation-and-operation/commands.md layout: new-docs description: >- - CLI commands for managing your Metabase instance, including database - migrations, serialization, and administrative tasks. + Commands built into the Metabase JAR for managing your instance, including + database migrations, serialization, and administrative tasks. latest: true --- -# Metabase CLI +# Metabase JAR commands -Metabase ships with some handy CLI commands for administration, maintenance, and automation tasks. These commands let you manage your Metabase instance, migrate databases, handle serialization, and generate documentation. +> Looking for the `mb` command-line client that drives a Metabase instance over its API, on its own or through an AI agent? Check out the [Metabase CLI](./metabase-cli). + +Metabase ships with some handy commands for administration, maintenance, and automation tasks. These commands run on the server, built into the Metabase JAR, and let you manage your Metabase instance, migrate databases, handle serialization, and generate documentation. To view a list of commands, run the Metabase jar followed by `help`. @@ -26,7 +28,6 @@ java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar help Metabase will print out the help text for available commands. - ## `api-documentation` Generate an HTML file and a JSON file for Scalar docs for the Metabase API. diff --git a/_docs/latest/installation-and-operation/configuring-application-database.md b/_docs/latest/installation-and-operation/configuring-application-database.md index 2c524795ad..ae70d7d45b 100644 --- a/_docs/latest/installation-and-operation/configuring-application-database.md +++ b/_docs/latest/installation-and-operation/configuring-application-database.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/creating-RDS-database-on-AWS.md b/_docs/latest/installation-and-operation/creating-RDS-database-on-AWS.md index 6aa042666d..69bfc4744d 100644 --- a/_docs/latest/installation-and-operation/creating-RDS-database-on-AWS.md +++ b/_docs/latest/installation-and-operation/creating-RDS-database-on-AWS.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/development-instance.md b/_docs/latest/installation-and-operation/development-instance.md index 89afe68f5e..3bd20952f3 100644 --- a/_docs/latest/installation-and-operation/development-instance.md +++ b/_docs/latest/installation-and-operation/development-instance.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/information-collection.md b/_docs/latest/installation-and-operation/information-collection.md index b1ed68eb5b..a1b775323b 100644 --- a/_docs/latest/installation-and-operation/information-collection.md +++ b/_docs/latest/installation-and-operation/information-collection.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/installing-metabase.md b/_docs/latest/installation-and-operation/installing-metabase.md index 42077057da..3f0c87900c 100644 --- a/_docs/latest/installation-and-operation/installing-metabase.md +++ b/_docs/latest/installation-and-operation/installing-metabase.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/metabase-cli.md b/_docs/latest/installation-and-operation/metabase-cli.md new file mode 100644 index 0000000000..921ffd1bae --- /dev/null +++ b/_docs/latest/installation-and-operation/metabase-cli.md @@ -0,0 +1,89 @@ +--- +version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Installation and Operation +title: Metabase CLI +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/installation-and-operation/metabase-cli.md +layout: new-docs +summary: >- + The Metabase CLI (mb) is a command-line client that drives a Metabase instance + over its API. Use it yourself, or hand it to an AI agent with the metabase-cli + skill. +latest: true +--- + +# Metabase CLI + +The Metabase CLI (`mb`) is a command-line client for Metabase. `mb` authenticates against a Metabase instance with an API key and lets you or an AI agent read and write content like questions, dashboards, collections, and transforms over the Metabase API. + +> Looking for the commands built into the Metabase JAR, like `migrate` or `load-from-h2`? Check out [Metabase JAR commands](./commands). + +## Requirements + +- Node.js, to install the CLI from npm. +- A Metabase instance on version 58 or later. +- An [API key](../people-and-groups/api-keys#create-an-api-key) to authenticate the CLI against your instance. +- A Pro or Enterprise plan for some command groups. For example, `git-sync` needs the premium [Remote sync](./remote-sync) feature. + +## Install the CLI + +``` +npm install -g @metabase/cli +``` + +The binary is `mb`. + +For commands, run: + +``` +mb --help +``` + +## Authenticate the CLI + +Log in once per Metabase instance. + +``` +mb auth login --url https://metabase.example.com +``` + +The CLI prompts for an API key, or reads it from the `METABASE_API_KEY` environment variable or stdin. To create a key, see [API keys](../people-and-groups/api-keys#create-an-api-key). + +Credentials are stored per profile, so you can manage more than one Metabase (like dev and prod Metabases): + +``` +mb auth login --profile prod --url https://prod.example.com +mb auth list +``` + +Add `--profile ` to any command to run it against that instance. + +## Use the CLI with an AI agent + +The CLI is built to be driven by an AI coding agent like Claude Code. Instead of running commands yourself, you install a skill and describe what you want in plain language; the agent works out the commands. + +### The metabase-cli skill + +The [metabase-cli skill](https://github.com/metabase/agent-skills/tree/main/skills/metabase-cli) teaches your agent the CLI's conventions. Once installed, you can run: + +``` +/metabase-cli Create a dashboard summarizing this month's signups by plan. +``` + +And your agent will go to work, creating content directly in your Metabase via the `mb` CLI. + +## Use the CLI for agent-driven development + +Pair the CLI with version control to build content with an agent in a development Metabase, commit the changes, and pull the changes into your production Metabase. Check out [Agent-driven development](../ai/file-based-development). + +## Further reading + +- [@metabase/cli on npm](https://www.npmjs.com/package/@metabase/cli) +- [Agent-driven development](../ai/file-based-development) +- [Agent skills](https://github.com/metabase/agent-skills) +- [Remote sync](./remote-sync) +- [Serialization](./serialization) +- [Metabase JAR commands](./commands) diff --git a/_docs/latest/installation-and-operation/migrating-from-h2.md b/_docs/latest/installation-and-operation/migrating-from-h2.md index dc815d9036..9414ca67cf 100644 --- a/_docs/latest/installation-and-operation/migrating-from-h2.md +++ b/_docs/latest/installation-and-operation/migrating-from-h2.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/monitoring-metabase.md b/_docs/latest/installation-and-operation/monitoring-metabase.md index 0e51f83b42..fefa0ff4dd 100644 --- a/_docs/latest/installation-and-operation/monitoring-metabase.md +++ b/_docs/latest/installation-and-operation/monitoring-metabase.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/observability-with-prometheus.md b/_docs/latest/installation-and-operation/observability-with-prometheus.md index 2e198d884b..b8eafbea90 100644 --- a/_docs/latest/installation-and-operation/observability-with-prometheus.md +++ b/_docs/latest/installation-and-operation/observability-with-prometheus.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/privacy.md b/_docs/latest/installation-and-operation/privacy.md index 0740cce011..ab016b80da 100644 --- a/_docs/latest/installation-and-operation/privacy.md +++ b/_docs/latest/installation-and-operation/privacy.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/remote-sync.md b/_docs/latest/installation-and-operation/remote-sync.md index 99b0cf40ab..46b2dbf991 100644 --- a/_docs/latest/installation-and-operation/remote-sync.md +++ b/_docs/latest/installation-and-operation/remote-sync.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/running-metabase-as-service.md b/_docs/latest/installation-and-operation/running-metabase-as-service.md index eec3e7237b..5b70df9fc6 100644 --- a/_docs/latest/installation-and-operation/running-metabase-as-service.md +++ b/_docs/latest/installation-and-operation/running-metabase-as-service.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/running-metabase-on-azure.md b/_docs/latest/installation-and-operation/running-metabase-on-azure.md index aaabb5f526..b714d4d871 100644 --- a/_docs/latest/installation-and-operation/running-metabase-on-azure.md +++ b/_docs/latest/installation-and-operation/running-metabase-on-azure.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/running-metabase-on-docker.md b/_docs/latest/installation-and-operation/running-metabase-on-docker.md index 34be22365e..2779e5c28c 100644 --- a/_docs/latest/installation-and-operation/running-metabase-on-docker.md +++ b/_docs/latest/installation-and-operation/running-metabase-on-docker.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/running-metabase-on-elastic-beanstalk.md b/_docs/latest/installation-and-operation/running-metabase-on-elastic-beanstalk.md index 7b3c97bec7..3278432962 100644 --- a/_docs/latest/installation-and-operation/running-metabase-on-elastic-beanstalk.md +++ b/_docs/latest/installation-and-operation/running-metabase-on-elastic-beanstalk.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/running-metabase-on-podman.md b/_docs/latest/installation-and-operation/running-metabase-on-podman.md index 0ff51ed1b5..8cbbaa1688 100644 --- a/_docs/latest/installation-and-operation/running-metabase-on-podman.md +++ b/_docs/latest/installation-and-operation/running-metabase-on-podman.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/running-the-metabase-jar-file.md b/_docs/latest/installation-and-operation/running-the-metabase-jar-file.md index ec773aee2f..93b8a455cd 100644 --- a/_docs/latest/installation-and-operation/running-the-metabase-jar-file.md +++ b/_docs/latest/installation-and-operation/running-the-metabase-jar-file.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/security-center.md b/_docs/latest/installation-and-operation/security-center.md index d7533d0b3e..218333981a 100644 --- a/_docs/latest/installation-and-operation/security-center.md +++ b/_docs/latest/installation-and-operation/security-center.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/serialization.md b/_docs/latest/installation-and-operation/serialization.md index d4c7607b61..e89f758865 100644 --- a/_docs/latest/installation-and-operation/serialization.md +++ b/_docs/latest/installation-and-operation/serialization.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/start.md b/_docs/latest/installation-and-operation/start.md index 4559d1cdda..82f5668746 100644 --- a/_docs/latest/installation-and-operation/start.md +++ b/_docs/latest/installation-and-operation/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false @@ -43,6 +43,10 @@ Try out your changes before deploying to production. Export your questions, dashboards, and more as YAML files that you can check into version control. +## [Metabase CLI](./metabase-cli) + +A command-line client that drives a Metabase instance over its API, on its own or through an AI agent. + ## [Monitoring your Metabase](./monitoring-metabase) Monitor your Metabase with JMX. @@ -63,9 +67,9 @@ We collect anonymous Metabase usage data to improve the product. We don't collec Notes on Metabase's accessibility. -## [Command line commands](./commands) +## [Metabase JAR commands](./commands) -Metabase's CLI. +Administrative commands built into the Metabase JAR. --- diff --git a/_docs/latest/installation-and-operation/supported-browsers.md b/_docs/latest/installation-and-operation/supported-browsers.md index c2a51f5354..b30344d3a5 100644 --- a/_docs/latest/installation-and-operation/supported-browsers.md +++ b/_docs/latest/installation-and-operation/supported-browsers.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/installation-and-operation/upgrading-metabase.md b/_docs/latest/installation-and-operation/upgrading-metabase.md index 9be03cb59a..366175fb46 100644 --- a/_docs/latest/installation-and-operation/upgrading-metabase.md +++ b/_docs/latest/installation-and-operation/upgrading-metabase.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/account-settings.md b/_docs/latest/people-and-groups/account-settings.md index ac6832611f..ebe5f32dfc 100644 --- a/_docs/latest/people-and-groups/account-settings.md +++ b/_docs/latest/people-and-groups/account-settings.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/api-keys.md b/_docs/latest/people-and-groups/api-keys.md index c5dd7ac3b7..f5ad234888 100644 --- a/_docs/latest/people-and-groups/api-keys.md +++ b/_docs/latest/people-and-groups/api-keys.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/authenticating-with-jwt.md b/_docs/latest/people-and-groups/authenticating-with-jwt.md index 90b4f3c7d7..03e2c2fcac 100644 --- a/_docs/latest/people-and-groups/authenticating-with-jwt.md +++ b/_docs/latest/people-and-groups/authenticating-with-jwt.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/authenticating-with-oidc.md b/_docs/latest/people-and-groups/authenticating-with-oidc.md index 69516eb882..775e670041 100644 --- a/_docs/latest/people-and-groups/authenticating-with-oidc.md +++ b/_docs/latest/people-and-groups/authenticating-with-oidc.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/authenticating-with-saml.md b/_docs/latest/people-and-groups/authenticating-with-saml.md index bf46b6f7e3..4465f02821 100644 --- a/_docs/latest/people-and-groups/authenticating-with-saml.md +++ b/_docs/latest/people-and-groups/authenticating-with-saml.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/changing-password-complexity.md b/_docs/latest/people-and-groups/changing-password-complexity.md index 4f9bb552a9..f0591bfb6d 100644 --- a/_docs/latest/people-and-groups/changing-password-complexity.md +++ b/_docs/latest/people-and-groups/changing-password-complexity.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -29,6 +29,7 @@ The settings above can be used independently, so it's fine to use only one or th - `weak` = no character constraints - `normal` = at least 1 digit - `strong` = minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character +- `strong-enough` = minimum 15 characters By default, Metabase also prevents users from setting passwords that are in a list of common passwords (like `qwerty123` and `passw0rd`). Changing the complexity requirement to `weak` disables this behavior. diff --git a/_docs/latest/people-and-groups/changing-session-expiration.md b/_docs/latest/people-and-groups/changing-session-expiration.md index 5dab235ae0..fd2cb41d77 100644 --- a/_docs/latest/people-and-groups/changing-session-expiration.md +++ b/_docs/latest/people-and-groups/changing-session-expiration.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/google-sign-in.md b/_docs/latest/people-and-groups/google-sign-in.md index 56b1853c73..19db0b101f 100644 --- a/_docs/latest/people-and-groups/google-sign-in.md +++ b/_docs/latest/people-and-groups/google-sign-in.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/ldap.md b/_docs/latest/people-and-groups/ldap.md index 60cac48e5c..09363889aa 100644 --- a/_docs/latest/people-and-groups/ldap.md +++ b/_docs/latest/people-and-groups/ldap.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/managing.md b/_docs/latest/people-and-groups/managing.md index 329fb40f3e..4b4f13da2a 100644 --- a/_docs/latest/people-and-groups/managing.md +++ b/_docs/latest/people-and-groups/managing.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/oidc-keycloak.md b/_docs/latest/people-and-groups/oidc-keycloak.md index 7762f997f6..21111b0d23 100644 --- a/_docs/latest/people-and-groups/oidc-keycloak.md +++ b/_docs/latest/people-and-groups/oidc-keycloak.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/saml-auth0.md b/_docs/latest/people-and-groups/saml-auth0.md index 9eab2a01e7..27fdfa25dc 100644 --- a/_docs/latest/people-and-groups/saml-auth0.md +++ b/_docs/latest/people-and-groups/saml-auth0.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/saml-azure.md b/_docs/latest/people-and-groups/saml-azure.md index e9c7a94db4..265cc82406 100644 --- a/_docs/latest/people-and-groups/saml-azure.md +++ b/_docs/latest/people-and-groups/saml-azure.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/saml-google.md b/_docs/latest/people-and-groups/saml-google.md index 136f5b7021..07a0ede7ab 100644 --- a/_docs/latest/people-and-groups/saml-google.md +++ b/_docs/latest/people-and-groups/saml-google.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/saml-keycloak.md b/_docs/latest/people-and-groups/saml-keycloak.md index e5eeaeaf22..435ae4e248 100644 --- a/_docs/latest/people-and-groups/saml-keycloak.md +++ b/_docs/latest/people-and-groups/saml-keycloak.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/saml-okta.md b/_docs/latest/people-and-groups/saml-okta.md index 23a5cdc6b3..5c19b582d4 100644 --- a/_docs/latest/people-and-groups/saml-okta.md +++ b/_docs/latest/people-and-groups/saml-okta.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/people-and-groups/start.md b/_docs/latest/people-and-groups/start.md index c6519c6ad5..f2031c6a63 100644 --- a/_docs/latest/people-and-groups/start.md +++ b/_docs/latest/people-and-groups/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/people-and-groups/user-provisioning.md b/_docs/latest/people-and-groups/user-provisioning.md index 8cfc083e3e..21f7d5d9ac 100644 --- a/_docs/latest/people-and-groups/user-provisioning.md +++ b/_docs/latest/people-and-groups/user-provisioning.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/application.md b/_docs/latest/permissions/application.md index c843ebbc21..be86d12ea4 100644 --- a/_docs/latest/permissions/application.md +++ b/_docs/latest/permissions/application.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/collections.md b/_docs/latest/permissions/collections.md index 15e0face07..6189b8c0ea 100644 --- a/_docs/latest/permissions/collections.md +++ b/_docs/latest/permissions/collections.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/data.md b/_docs/latest/permissions/data.md index 68011b2105..a1eab5d717 100644 --- a/_docs/latest/permissions/data.md +++ b/_docs/latest/permissions/data.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/database-routing.md b/_docs/latest/permissions/database-routing.md index 901d4bc9b3..905b4dd64a 100644 --- a/_docs/latest/permissions/database-routing.md +++ b/_docs/latest/permissions/database-routing.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/embedding.md b/_docs/latest/permissions/embedding.md index 0eb9bd9d00..55f5a216df 100644 --- a/_docs/latest/permissions/embedding.md +++ b/_docs/latest/permissions/embedding.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/impersonation.md b/_docs/latest/permissions/impersonation.md index 850882d74e..3dfaff8d21 100644 --- a/_docs/latest/permissions/impersonation.md +++ b/_docs/latest/permissions/impersonation.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/introduction.md b/_docs/latest/permissions/introduction.md index 7b1e1a776d..b158403649 100644 --- a/_docs/latest/permissions/introduction.md +++ b/_docs/latest/permissions/introduction.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/no-self-service-deprecation.md b/_docs/latest/permissions/no-self-service-deprecation.md index 6565428166..d3e2273dfb 100644 --- a/_docs/latest/permissions/no-self-service-deprecation.md +++ b/_docs/latest/permissions/no-self-service-deprecation.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/notifications.md b/_docs/latest/permissions/notifications.md index 903cde9b55..e25afc2bc5 100644 --- a/_docs/latest/permissions/notifications.md +++ b/_docs/latest/permissions/notifications.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/row-and-column-security-examples.md b/_docs/latest/permissions/row-and-column-security-examples.md index 6f863a7f52..994f3d7ed4 100644 --- a/_docs/latest/permissions/row-and-column-security-examples.md +++ b/_docs/latest/permissions/row-and-column-security-examples.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/row-and-column-security.md b/_docs/latest/permissions/row-and-column-security.md index 5269e6c6f8..9e88914b0e 100644 --- a/_docs/latest/permissions/row-and-column-security.md +++ b/_docs/latest/permissions/row-and-column-security.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/snippets.md b/_docs/latest/permissions/snippets.md index 0a4a23e69c..f83e8968c2 100644 --- a/_docs/latest/permissions/snippets.md +++ b/_docs/latest/permissions/snippets.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/permissions/start.md b/_docs/latest/permissions/start.md index 7d4892b434..1cbd5c84e8 100644 --- a/_docs/latest/permissions/start.md +++ b/_docs/latest/permissions/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/questions/alerts.md b/_docs/latest/questions/alerts.md index 642101fbfb..ca6214e3b1 100644 --- a/_docs/latest/questions/alerts.md +++ b/_docs/latest/questions/alerts.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/exporting-results.md b/_docs/latest/questions/exporting-results.md index ea524fe21b..bd8639b3e7 100644 --- a/_docs/latest/questions/exporting-results.md +++ b/_docs/latest/questions/exporting-results.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/images/custom-viz-calendar-heatmap.png b/_docs/latest/questions/images/custom-viz-calendar-heatmap.png new file mode 100644 index 0000000000000000000000000000000000000000..66f4350f58924a0d37064e954cca73d3b70bafe3 GIT binary patch literal 155299 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

    OvVt!!KfuE5lkvE9wPX0#TF_0Mx%I=;k3$MLfX zbrd_$_B0wl*3FTtV2AI-BU`STVu!OwJMVtG=@8DE{t_8ezWMm2;Zb^B^-nVY7`?(A zDiwXUBC+F|{zXftGiXb@1KQmmhtxF6vVw@TQ|-%f<+-AvgH*K>&GI*0LLPR`*~|m0zOB!0&+eLf4d8Oy`_;;bW6FqbJfV#n&niV2Joo+>(Bd?*3i?e zL&{s4VgozmG~4tGd|cI>$#A~Q_Gs$XC2}`%z+4_o@tD^Sw2Qq4g=6|=iHd;^>r1t3 zW+2Vb+Ee9!Pec1RIQd7QIne>gnH{}wzED9g@f*x;$gqC3+}l8nxVr+#Y4%$3Bp*+i zA#L!(CKmSZ%;@ayh^0Y}A0~OD=AkyY!&j0CX|50BpKly#1m^as#+s;zx-$te=DKJD zg#hy*+>NSv`=+@Af5@-?V-oIc+Q(D-3XlEWBWHm&e4af?CSeNV|COm)1Y;F=7&F^b^q&M_b&jc zdXH70!++w3ee;tu^>;J=75Me=F+j!l`^0@zum#0$V}F~K@RzTQ`@03(51fu8td|AG z3R?P=v8{jYHT?G(|JtL6$^d!bj5@teLHhLD*f$?zzBcZ^uZr~AOCwq{_91)ZX*Amyog+Rr}G!xH!h#eRsnx!Y|o#pwz+ike*nYF Bn!o@6 literal 0 HcmV?d00001 diff --git a/_docs/latest/questions/images/gondola-line-chart.png b/_docs/latest/questions/images/gondola-line-chart.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c7947078bb0c1cd85dbf5b624f20a91e411f06 GIT binary patch literal 191199 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

    F7QTksY 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 + https://github.com/metabase/metabase/blob/master/docs/questions/visualizations/custom.md +layout: new-docs +summary: >- + Add your own chart types to Metabase by uploading visualization plugins built + with the Custom Visualizations SDK. +latest: true +--- + +# Custom visualizations + +{% include plans-blockquote.html feature="Custom visualizations" %} + +You can build new chart types and add them to Metabase. Here's a calendar heatmap: + +![Calendar heatmap custom visualization](../images/custom-viz-calendar-heatmap.png) + +Here's the [code for that calendar heatmap viz](https://github.com/metabase/custom-viz-calendar-heatmap). + +This page covers how to add a custom visualization to your Metabase. To _create_ a new custom visualization, see [developing a custom visualization](../../developers-guide/custom-visualizations). + +## Enabling custom visualizations + +### Restrict image domains first + +Before you can turn on custom visualizations, you need to enable [Restrict image domains](../../configuring-metabase/settings#restrict-image-domains). A custom visualization runs third-party JavaScript in your Metabase. By restricting image (and font) domains, you limit where that code can load assets from, which narrows the ways a plugin could leak data through outbound asset requests. See [Only add plugins you trust](#only-add-plugins-you-trust). + +While custom visualizations are enabled, you can't turn **Restrict image domains** back off. You'll need to first disable custom visualizations. + +### Turn on custom visualizations + +To turn on custom visualizations, go to **Admin** > **Settings** > **Custom visualizations** and click **Enable custom visualizations**. + +You can also enable (or disable) custom visualizations with the [`MB_CUSTOM_VIZ_ENABLED`](../../configuring-metabase/environment-variables#mb_custom_viz_enabled) environment variable, or with the `custom-viz-enabled` key in a [configuration file](../../configuring-metabase/config-file). + +## Adding a custom visualization + +Once you've [built the custom visualization](../../developers-guide/custom-visualizations): + +1. In Metabase, go to **Admin** > **Settings** > **Custom visualizations** > **Manage visualizations**. +2. Click **Add** and drag the `.tgz` file into the upload area (or click to browse for it). +3. Click **Add visualization**. + +- Bundles must be smaller than 5 MiB. +- Each plugin lists the Metabase versions it supports (for example, "Requires Metabase >=1.62"). If your Metabase version isn't in that range, Metabase rejects the upload and tells you which version the plugin needs. +- The **Manage visualizations** page shows each plugin's icon, name, the first eight characters of the bundle's hash, and its required Metabase version range, so you can tell which version is installed. + +## Using a custom visualization + +On a question, dashboard or document card, open the visualization sidebar (the **Visualization** button), and look for the **Custom visualizations** section. Pick your visualization the same way you'd pick a line chart or a table, and voilà, there's that gondola line chart you needed: + +![Gondola line chart](../images/gondola-line-chart.png) + +If a custom visualization can't render the current query results (for example, if the query is missing a column the visualization needs), Metabase shows the error message from the plugin so you can adjust the query or pick a different chart. + +Custom visualizations behave like built-in charts in most places: + +- **Settings.** Click the **gear** icon in the visualization sidebar to change the visualization's settings. A plugin defines its own setting tabs: each setting names the section it belongs to. +- **Dark mode.** Plugins that use Metabase's colors adapt to [dark mode](../../people-and-groups/account-settings#theme) automatically. +- **Icons.** A custom visualization shows its own icon in the visualization picker, and questions that use it show that icon in collections and bookmarks. + +## Managing custom visualizations + +_Admin > Settings > Custom visualizations > Manage visualizations_ + +- **Disable a visualization.** Any question, dashboard card, or document card that used the visualization falls back to the default visualization for that query's results. If you re-enable the plugin, those cards will go back to using the custom visualization. +- **Replace a bundle.** Upload a new `.tgz` to ship an updated version of a plugin. The new bundle's manifest `name` _must_ match the existing plugin's identifier, so questions that already use the visualization keep working. +- **Remove a visualization.** Cards that used the custom viz fall back to the default visualization. + +## Exports + +- **Dashboard subscriptions and alerts don't use custom visualizations**. Cards that use custom visualizations will fall back to a default visualization for the card's data shape. +- **PDF exports of dashboards include custom visualizations**. +- **Custom visualizations can support PNG export**, but only if its developer turned on PNG export for that plugin. PNG export is off by default. + +## Only add plugins you trust + +A custom visualization plugin runs JavaScript in your Metabase. Only upload plugins from sources you trust (like plugins you've built yourself, or have vetted). + +Metabase runs custom visualizations in a sandbox to limit what a plugin can do: + +- A plugin renders inside an isolated container and can't reach the rest of the Metabase app. +- A plugin can't call Metabase's APIs or make network requests. + +While this sandboxing limits the damage a plugin can do, you still need to review the code. + +## Further reading + +- [Building custom visualizations](../../developers-guide/custom-visualizations) +- [Visualization overview](./visualizing-results) +- [Appearance](../../configuring-metabase/appearance) diff --git a/_docs/latest/questions/visualizations/detail.md b/_docs/latest/questions/visualizations/detail.md index e74378b57e..5d0daf385d 100644 --- a/_docs/latest/questions/visualizations/detail.md +++ b/_docs/latest/questions/visualizations/detail.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/drill-through.md b/_docs/latest/questions/visualizations/drill-through.md index 41898845a7..a0b47c04d4 100644 --- a/_docs/latest/questions/visualizations/drill-through.md +++ b/_docs/latest/questions/visualizations/drill-through.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/funnel.md b/_docs/latest/questions/visualizations/funnel.md index 1883ffb583..9ff2423f09 100644 --- a/_docs/latest/questions/visualizations/funnel.md +++ b/_docs/latest/questions/visualizations/funnel.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/gauge.md b/_docs/latest/questions/visualizations/gauge.md index 6a951fabc7..9aa6836a2e 100644 --- a/_docs/latest/questions/visualizations/gauge.md +++ b/_docs/latest/questions/visualizations/gauge.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/line-bar-and-area-charts.md b/_docs/latest/questions/visualizations/line-bar-and-area-charts.md index cabdc0a75f..2884afb2ba 100644 --- a/_docs/latest/questions/visualizations/line-bar-and-area-charts.md +++ b/_docs/latest/questions/visualizations/line-bar-and-area-charts.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/map.md b/_docs/latest/questions/visualizations/map.md index c77b0321f4..03dd1c5390 100644 --- a/_docs/latest/questions/visualizations/map.md +++ b/_docs/latest/questions/visualizations/map.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/numbers.md b/_docs/latest/questions/visualizations/numbers.md index fb6e0ea723..0b872d53db 100644 --- a/_docs/latest/questions/visualizations/numbers.md +++ b/_docs/latest/questions/visualizations/numbers.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/pie-or-donut-chart.md b/_docs/latest/questions/visualizations/pie-or-donut-chart.md index cbffe4d415..53639c6a57 100644 --- a/_docs/latest/questions/visualizations/pie-or-donut-chart.md +++ b/_docs/latest/questions/visualizations/pie-or-donut-chart.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/pivot-table.md b/_docs/latest/questions/visualizations/pivot-table.md index 909d811ec9..30813528d1 100644 --- a/_docs/latest/questions/visualizations/pivot-table.md +++ b/_docs/latest/questions/visualizations/pivot-table.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/progress-bar.md b/_docs/latest/questions/visualizations/progress-bar.md index 20fd761791..0759390fd0 100644 --- a/_docs/latest/questions/visualizations/progress-bar.md +++ b/_docs/latest/questions/visualizations/progress-bar.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/sankey.md b/_docs/latest/questions/visualizations/sankey.md index f15f99c6da..be3e2585f2 100644 --- a/_docs/latest/questions/visualizations/sankey.md +++ b/_docs/latest/questions/visualizations/sankey.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/scatterplot-or-bubble-chart.md b/_docs/latest/questions/visualizations/scatterplot-or-bubble-chart.md index 2d11368bf3..517eeea06e 100644 --- a/_docs/latest/questions/visualizations/scatterplot-or-bubble-chart.md +++ b/_docs/latest/questions/visualizations/scatterplot-or-bubble-chart.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/table.md b/_docs/latest/questions/visualizations/table.md index f06a1aef38..a5b3eb9f4d 100644 --- a/_docs/latest/questions/visualizations/table.md +++ b/_docs/latest/questions/visualizations/table.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/tooltips.md b/_docs/latest/questions/visualizations/tooltips.md index 2b71d4b5b6..d281899aba 100644 --- a/_docs/latest/questions/visualizations/tooltips.md +++ b/_docs/latest/questions/visualizations/tooltips.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/trend.md b/_docs/latest/questions/visualizations/trend.md index 31021812f5..45eed4998d 100644 --- a/_docs/latest/questions/visualizations/trend.md +++ b/_docs/latest/questions/visualizations/trend.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/questions/visualizations/visualizing-results.md b/_docs/latest/questions/visualizations/visualizing-results.md index 2830fa4e65..4b602c9c58 100644 --- a/_docs/latest/questions/visualizations/visualizing-results.md +++ b/_docs/latest/questions/visualizations/visualizing-results.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -177,6 +177,10 @@ If you have a bar chart like Count of Users by Age, where the x-axis is a number ![Scatter](../images/scatter.png) +## Custom visualizations + +On [Pro and Enterprise plans](/pricing/), admins can add [custom visualizations](./custom): chart types you build with the Custom Visualizations SDK and upload to Metabase. Once a custom visualization is installed, it shows up in the visualization picker alongside the built-in charts. + ## Styling and formatting data in charts ![Chart formatting options](../images/chart-formatting-options.png) @@ -190,5 +194,6 @@ See also [Formatting defaults](../../data-modeling/formatting). ## Further reading - [Charts with multiple series](../../dashboards/multiple-series) +- [Custom visualizations](./custom) - [Appearance](../../configuring-metabase/appearance) - [BI dashboard best practices](/learn/metabase-basics/querying-and-dashboards/dashboards/bi-dashboard-best-practices) diff --git a/_docs/latest/questions/visualizations/waterfall-chart.md b/_docs/latest/questions/visualizations/waterfall-chart.md index 808373e247..9ed7703986 100644 --- a/_docs/latest/questions/visualizations/waterfall-chart.md +++ b/_docs/latest/questions/visualizations/waterfall-chart.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/bigquery-drive.md b/_docs/latest/troubleshooting-guide/bigquery-drive.md index 3b0a1e8dc1..0b6d2077b0 100644 --- a/_docs/latest/troubleshooting-guide/bigquery-drive.md +++ b/_docs/latest/troubleshooting-guide/bigquery-drive.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/bugs.md b/_docs/latest/troubleshooting-guide/bugs.md index f580614883..51b6ee4033 100644 --- a/_docs/latest/troubleshooting-guide/bugs.md +++ b/_docs/latest/troubleshooting-guide/bugs.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/cant-log-in.md b/_docs/latest/troubleshooting-guide/cant-log-in.md index 1424ff38ba..db5cdc027e 100644 --- a/_docs/latest/troubleshooting-guide/cant-log-in.md +++ b/_docs/latest/troubleshooting-guide/cant-log-in.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/cant-see-tables.md b/_docs/latest/troubleshooting-guide/cant-see-tables.md index e4a65268a9..411cdababf 100644 --- a/_docs/latest/troubleshooting-guide/cant-see-tables.md +++ b/_docs/latest/troubleshooting-guide/cant-see-tables.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/cant-send-email.md b/_docs/latest/troubleshooting-guide/cant-send-email.md index e50da56ad1..d0733f20fe 100644 --- a/_docs/latest/troubleshooting-guide/cant-send-email.md +++ b/_docs/latest/troubleshooting-guide/cant-send-email.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/cant-view-or-edit.md b/_docs/latest/troubleshooting-guide/cant-view-or-edit.md index 8ac3321ffc..e2e0137884 100644 --- a/_docs/latest/troubleshooting-guide/cant-view-or-edit.md +++ b/_docs/latest/troubleshooting-guide/cant-view-or-edit.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/create-har-file.md b/_docs/latest/troubleshooting-guide/create-har-file.md index eeba16139e..849549c25d 100644 --- a/_docs/latest/troubleshooting-guide/create-har-file.md +++ b/_docs/latest/troubleshooting-guide/create-har-file.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/data-permissions.md b/_docs/latest/troubleshooting-guide/data-permissions.md index 270fe716ea..b02ec1731b 100644 --- a/_docs/latest/troubleshooting-guide/data-permissions.md +++ b/_docs/latest/troubleshooting-guide/data-permissions.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/db-connection.md b/_docs/latest/troubleshooting-guide/db-connection.md index 50cc250a77..6cb2352f9b 100644 --- a/_docs/latest/troubleshooting-guide/db-connection.md +++ b/_docs/latest/troubleshooting-guide/db-connection.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/db-performance.md b/_docs/latest/troubleshooting-guide/db-performance.md index 7e975f1526..bcbebe064f 100644 --- a/_docs/latest/troubleshooting-guide/db-performance.md +++ b/_docs/latest/troubleshooting-guide/db-performance.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/diagnostic-info.md b/_docs/latest/troubleshooting-guide/diagnostic-info.md index da3cbcacd4..204c352bf7 100644 --- a/_docs/latest/troubleshooting-guide/diagnostic-info.md +++ b/_docs/latest/troubleshooting-guide/diagnostic-info.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/docker.md b/_docs/latest/troubleshooting-guide/docker.md index 5fdfd40862..fec0e9a671 100644 --- a/_docs/latest/troubleshooting-guide/docker.md +++ b/_docs/latest/troubleshooting-guide/docker.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/error-message.md b/_docs/latest/troubleshooting-guide/error-message.md index 35d51fc803..02073883a6 100644 --- a/_docs/latest/troubleshooting-guide/error-message.md +++ b/_docs/latest/troubleshooting-guide/error-message.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/filters.md b/_docs/latest/troubleshooting-guide/filters.md index d082f437dc..76ef26851b 100644 --- a/_docs/latest/troubleshooting-guide/filters.md +++ b/_docs/latest/troubleshooting-guide/filters.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/index.md b/_docs/latest/troubleshooting-guide/index.md index 2cced324d5..ca6d1747a7 100644 --- a/_docs/latest/troubleshooting-guide/index.md +++ b/_docs/latest/troubleshooting-guide/index.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/troubleshooting-guide/known-issues.md b/_docs/latest/troubleshooting-guide/known-issues.md index 48bbc259ab..c4d85262ac 100644 --- a/_docs/latest/troubleshooting-guide/known-issues.md +++ b/_docs/latest/troubleshooting-guide/known-issues.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/ldap.md b/_docs/latest/troubleshooting-guide/ldap.md index e84f51aa87..45825dc303 100644 --- a/_docs/latest/troubleshooting-guide/ldap.md +++ b/_docs/latest/troubleshooting-guide/ldap.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/linked-filters.md b/_docs/latest/troubleshooting-guide/linked-filters.md index 3fe5cdc07a..eac9d07928 100644 --- a/_docs/latest/troubleshooting-guide/linked-filters.md +++ b/_docs/latest/troubleshooting-guide/linked-filters.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/loading-from-h2.md b/_docs/latest/troubleshooting-guide/loading-from-h2.md index 3622b499aa..ae6f955ebc 100644 --- a/_docs/latest/troubleshooting-guide/loading-from-h2.md +++ b/_docs/latest/troubleshooting-guide/loading-from-h2.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/models.md b/_docs/latest/troubleshooting-guide/models.md index 1e39397e55..6bbec0b95e 100644 --- a/_docs/latest/troubleshooting-guide/models.md +++ b/_docs/latest/troubleshooting-guide/models.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/my-dashboard-is-slow.md b/_docs/latest/troubleshooting-guide/my-dashboard-is-slow.md index 8ccaecea11..b45c24e4bd 100644 --- a/_docs/latest/troubleshooting-guide/my-dashboard-is-slow.md +++ b/_docs/latest/troubleshooting-guide/my-dashboard-is-slow.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/notifications.md b/_docs/latest/troubleshooting-guide/notifications.md index 6b1b7a5a43..e2fb095c8f 100644 --- a/_docs/latest/troubleshooting-guide/notifications.md +++ b/_docs/latest/troubleshooting-guide/notifications.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/permissions.md b/_docs/latest/troubleshooting-guide/permissions.md index 8e6ff54096..c3b7747fbf 100644 --- a/_docs/latest/troubleshooting-guide/permissions.md +++ b/_docs/latest/troubleshooting-guide/permissions.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/proxies.md b/_docs/latest/troubleshooting-guide/proxies.md index eb852a48eb..4f83e9d7d2 100644 --- a/_docs/latest/troubleshooting-guide/proxies.md +++ b/_docs/latest/troubleshooting-guide/proxies.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/requesting-new-features.md b/_docs/latest/troubleshooting-guide/requesting-new-features.md index 85aaa6a044..8cc6aed50d 100644 --- a/_docs/latest/troubleshooting-guide/requesting-new-features.md +++ b/_docs/latest/troubleshooting-guide/requesting-new-features.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/row-and-column-security.md b/_docs/latest/troubleshooting-guide/row-and-column-security.md index 95436c506b..162b9ef6b7 100644 --- a/_docs/latest/troubleshooting-guide/row-and-column-security.md +++ b/_docs/latest/troubleshooting-guide/row-and-column-security.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/running.md b/_docs/latest/troubleshooting-guide/running.md index 23a6988cc7..98ee232f79 100644 --- a/_docs/latest/troubleshooting-guide/running.md +++ b/_docs/latest/troubleshooting-guide/running.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/saml.md b/_docs/latest/troubleshooting-guide/saml.md index e65036357c..414ae53845 100644 --- a/_docs/latest/troubleshooting-guide/saml.md +++ b/_docs/latest/troubleshooting-guide/saml.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/server-logs.md b/_docs/latest/troubleshooting-guide/server-logs.md index f0b7be3e67..d5bcd068a6 100644 --- a/_docs/latest/troubleshooting-guide/server-logs.md +++ b/_docs/latest/troubleshooting-guide/server-logs.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/sql.md b/_docs/latest/troubleshooting-guide/sql.md index f91b825712..233653742c 100644 --- a/_docs/latest/troubleshooting-guide/sql.md +++ b/_docs/latest/troubleshooting-guide/sql.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/sync-fingerprint-scan.md b/_docs/latest/troubleshooting-guide/sync-fingerprint-scan.md index 06e65c1d70..0fe7da0d84 100644 --- a/_docs/latest/troubleshooting-guide/sync-fingerprint-scan.md +++ b/_docs/latest/troubleshooting-guide/sync-fingerprint-scan.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/timeout.md b/_docs/latest/troubleshooting-guide/timeout.md index 35fcd95bbe..41d0d1d380 100644 --- a/_docs/latest/troubleshooting-guide/timeout.md +++ b/_docs/latest/troubleshooting-guide/timeout.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/timezones.md b/_docs/latest/troubleshooting-guide/timezones.md index 672812e5a2..7dfd8be576 100644 --- a/_docs/latest/troubleshooting-guide/timezones.md +++ b/_docs/latest/troubleshooting-guide/timezones.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/troubleshooting-guide/visualization.md b/_docs/latest/troubleshooting-guide/visualization.md index 6f64eb82ef..11450c1f63 100644 --- a/_docs/latest/troubleshooting-guide/visualization.md +++ b/_docs/latest/troubleshooting-guide/visualization.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/usage-and-performance-tools/audit.md b/_docs/latest/usage-and-performance-tools/audit.md index 0b2c946dfe..d8b787e245 100644 --- a/_docs/latest/usage-and-performance-tools/audit.md +++ b/_docs/latest/usage-and-performance-tools/audit.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/usage-and-performance-tools/start.md b/_docs/latest/usage-and-performance-tools/start.md index 29414e56bc..817e3fab03 100644 --- a/_docs/latest/usage-and-performance-tools/start.md +++ b/_docs/latest/usage-and-performance-tools/start.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: false diff --git a/_docs/latest/usage-and-performance-tools/tools.md b/_docs/latest/usage-and-performance-tools/tools.md index 4b1c283c9f..7ed2b6816a 100644 --- a/_docs/latest/usage-and-performance-tools/tools.md +++ b/_docs/latest/usage-and-performance-tools/tools.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/latest/usage-and-performance-tools/usage-analytics-reference.md b/_docs/latest/usage-and-performance-tools/usage-analytics-reference.md index 717dd8a696..e8be5a8470 100644 --- a/_docs/latest/usage-and-performance-tools/usage-analytics-reference.md +++ b/_docs/latest/usage-and-performance-tools/usage-analytics-reference.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true @@ -204,6 +204,8 @@ Columns: - IP Address - Tenant ID - Request ID +- Cache Creation Tokens +- Cache Read Tokens ### Alerts @@ -582,6 +584,9 @@ The Topic column on the [Activity log](#activity-log) model takes one of: - comment-delete - comment-update - create-permission-failure +- custom-viz-plugin-create +- custom-viz-plugin-delete +- custom-viz-plugin-update - dashboard-add-cards - dashboard-create - dashboard-delete @@ -644,7 +649,9 @@ The Topic column on the [Activity log](#activity-log) model takes one of: - transform-delete - transform-inspect-discover - transform-inspect-lens +- transform-run-canceled - transform-run-start +- transform-run-timeout - update-permission-failure - update-transform - upload-append diff --git a/_docs/latest/usage-and-performance-tools/usage-analytics.md b/_docs/latest/usage-and-performance-tools/usage-analytics.md index 929f8dc45a..4f529d1538 100644 --- a/_docs/latest/usage-and-performance-tools/usage-analytics.md +++ b/_docs/latest/usage-and-performance-tools/usage-analytics.md @@ -1,5 +1,5 @@ --- -version: v0.61 +version: v0.62 has_magic_breadcrumbs: true show_category_breadcrumb: true show_title_breadcrumb: true diff --git a/_docs/v0.62/configuring-metabase/environment-variables.md b/_docs/v0.62/configuring-metabase/environment-variables.md index e44628ef45..1bf07dbc3e 100644 --- a/_docs/v0.62/configuring-metabase/environment-variables.md +++ b/_docs/v0.62/configuring-metabase/environment-variables.md @@ -2770,7 +2770,7 @@ Comma-separated namespaces to trace. **WARNING:** Could log sensitive informatio ### `MB_PASSWORD_COMPLEXITY` -Type: string (`"weak"`, `"normal"`, `"strong"`)
    +Type: string (`"weak"`, `"normal"`, `"strong"`, `"strong-enough"`)
    Default: `"normal"` Enforce a password complexity rule to increase security for regular logins. This only applies to new users or users that are changing their password. Related [MB_PASSWORD_LENGTH](#mb_password_length) @@ -2778,6 +2778,7 @@ Enforce a password complexity rule to increase security for regular logins. This - `weak` no character constraints - `normal` at least 1 digit - `strong` minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character +- `strong-enough` minimum 15 characters ### `MB_PASSWORD_LENGTH` diff --git a/_docs/v0.62/dashboards/filters.md b/_docs/v0.62/dashboards/filters.md index d086291102..263c8f9af8 100644 --- a/_docs/v0.62/dashboards/filters.md +++ b/_docs/v0.62/dashboards/filters.md @@ -122,7 +122,15 @@ Additionally, you can select an operator for the location filter: ### ID filter -The ID filter provides a simple input box where you can type the ID of a user, order, and so on. +The ID filter lets people filter on the ID of a user, order, and so on. + +You can select how people should filter on this column: + +- Dropdown list +- Search box +- Input box + +See [Set filter input type](#set-filter-input-type). To control which values appear in the dropdown or search box, see [Change a filter's selectable values](#change-a-filters-selectable-values). You can give people the option to pick one value or multiple values. @@ -248,7 +256,7 @@ To change the widget type: 1. When viewing a dashboard, click the **pencil** icon to **Edit the dashboard**. 2. Click on the filter or parameter you want to edit. A widget editing sidebar should pop up on the right side. -3. In the sidebar, change the type of filter or parameter. Changing the widget type disconnects the widget from all cards. You'll need to reconnect to the relevant columns on each card for the new type. If you've changed the widget type by mistake and want to restore the widget and its connections to cards, you can exit dashboard edit mode without saving your changes. +3. In the sidebar, change the type of filter or parameter. Changing the widget type disconnects the widget from all cards. You'll need to reconnect the widget to the relevant columns on each card for the new type. If you've changed the widget type by mistake and want to restore the widget and its connections to cards, you can exit dashboard edit mode without saving your changes. ### Change filter operator @@ -312,11 +320,11 @@ A multi-select filter with the widget type [Dropdown list](#dropdown-list) or [S 3. Select "Dropdown list". If you don't see "Dropdown list" as an option, go to [Filter widgets: Dropdown list](#dropdown-list) for more info. 4. Click **Edit** (to the right of "Dropdown list") to specify where the values should come from: - - From connected fields - - From another model or question - - Custom list + - **From connected fields:** Use the values from the field the filter is connected to. + - **From another model or question:** Pick a model or question (built with either the query builder or SQL), then set the **Column to supply the values** that the filter should pass along. You can also set a **Column to supply the labels** to show friendly labels in the dropdown while still filtering on the underlying values. For example, you could filter on product ID while showing the product's title so people can search for products by name or ID. + - **Custom list:** Enter each value on its own line. - ![Selectable values](./images/selectable-values.png) +![Selectable values](./images/selectable-values.png) ### Set a default filter value diff --git a/_docs/v0.62/dashboards/images/selectable-values.png b/_docs/v0.62/dashboards/images/selectable-values.png index ea42a7b321adf418f794d3ac961fd89886f5460f..67bafddaf5e50f86671de5a75422465c0c788b5b 100644 GIT binary patch literal 230077 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ΠB)UHVxoJK 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 z z1D!c(4ruqWYWPhSR{P@$eK#N;w+L#ne5AyvKZ#0B-ZL5y?eyt2^Yn%s+nbu6ms_u<7lG-pUG? zv9)$dlQLia67Oif|3?%mPZmv?Rf+}_|G#F7g$rMLZKi+9i~hufJJ?8ql(F9Ut~smY zohFFGgM)*~G}OYbDO!3XZi=awR2q04dtU(9?z-S;joSUN!15*kBQdsnq}oVhHvSR- zidoS0vcS^OR(@6`6*=Oyp+XbEn3YmI+FB>eNt>bl4-emRT$UZTV6rS)z^EERqAJBmh%u_V9YA)P*MU%mzn`ipI5#0*OJI7X^*|bHSsQl% zxkU`3JR#>w6tpPCh|UAoGW^%MDORrP+mZITJ6F~_@}%9dLJkQIX7=tf%M&?QGY-|rU1 zxpVLP`@He*y>sUt_I~zy*80}Uo3rUMc@2doPV(VQ(`&^}Qwv@(2hgg%3F>;3T*b7n zy_V86_aH=#duFw{YYU`IfltKPgNj~WH&Lr!?w<750O&1MgQ&}rt86;&tnf~Yai6;; z+tzsNRn%4>^ciScl0P4`sb!Msh@RF8b9i{ItAAzG=u{DO| z(4=nR9D3advSw@N$2y%Hpvyv-tO zcV-TTys6r@*P)J5Y?^n03pf`4?EW8Mg31k zS9fjBQVvx*;~b`!hb$G97III=94GC>)RIf`)qx2hlrJyy-=DrLRrA6~oeU;6_;t}^ z&bxZaJ`C{H={-{M;t)iW&&NWp;o_x;L_<%i40V)O$g_nA=PBN}KU@Ejwa`go#YAx_ z;Xvc(-wuBe;~O?@ZgcLbYJH|ljwpZrq*I{d8n<+in6k|6dGLrZzGv|T5e8zD=0*uJ zYvZ53F{;gzLbGbr;CxF(&6?WjWIM5bSF)?QM}zGC&&_dY**bODw}3g(d$wiG!2Yo1 z-@o#jlFw833NAWxykg^cOOeDiT6)CcxlVpOVc-b{y;FD-H6X_hanGi`MgFr|OxjRnt5&x=zJ)yjY98-}S!trFJ|Q*89D3~P zRavn>tuxwEc|LobN{#>&HCzYDDc2U)P-&$g5sMIVasQy`GVeUPe5?JyP}(1n2s&ZS zbxsXa>i&T=f@&j4lKpXSq@8@8JGZ*+ws%jTJh`#m^x>ez=@H?N;CLo2PG4{6U3HI! zZL&i1f*%7ZXt6aYTjjLmeA({9t#y4$1$|Xe~Idn{<|zR7{l^pe;<-` z!}()2mu&cfMf#)teH!lvKACE4IaD2z1$GXc(6 zr!8bh_*A&GeSOf8&d$p%5J({-X%}Gg29#_8Hr9@jA=Bk$TCuH}K zJ$dgxe3YG4-!ZbU_mXK>X$gC_4+%C={w65^MoBhPK!C~dk#_*(K)sGbP$G|M|2|iA zf|&?-HQfmPKuWgtmo)MljV*@Ql&p@M1aj)K%5UQZ)w6I0V|5o-~xL9`{8+D=rJ*Z{vw zXrHaF?HwMzhxrKlBRCnxv?wF@mfEOC&n{}OE?~Pk1tHp#rR1Uh<&wRE)h*GJ30?vr z0GqA0x8v|pr)@)a$DtDv+Z)r{qjDbMfs3XIf58 z?&YPrWuZCHgtz;p-}<~oKZkx$L!G&BH`CGkMp~P^zU)wbNOG@8&7jw4t~vMEyD~c| zOftX(6h%{X$*j^JfYF67)EwLAl;)i995zSYQ^{6Fxp0EB$b>%k+vYJ2$p)t}I}{(* zQ*ACz8!V$$<`ZyU@pRsNVNm_WNB!4=-bM_U^SlNc7i2yKE{hvixU!C=lI}TK2bIn72Rf`x|FFtLb_!^9(>mn!@0%zZ_Rex7fvcFVuFxb7|y3B;PyC;9Q(7 zJLq`|-gG5DvKl9J!8=8AQLj(JS^0+BgZ_MtZ_YgFIZ6oF zc&d)ByYJ{oYvDDkwQ>42(BRbUMx6;&I&EUSee^w!htOY@@O$SZz{*F``*&l+2k-0A zBgyB_mvUCVG7zxTA0#35q-{&w1~ta${=cd|YqD(oO~m}sl4FwGr)qQZ`{Tb7kP?FR0o_A@Bnp{O|NX=`(ZbchB`a!XHbk_ z1)$PIsXzmJF2qCl(dUGPxn3NBB*uA$IQUy|3QmoC^~E5m28tgP;F=09wZxu|DtJG> zw`eOojF2kh?nN-HnRFWBpAYqVWbr%}MeP}F~<_AN_oPCR_5YOKiclhI~**NAHL`G=m zUMU4sj*bOV^@W((Pq_PFN;67HOXE5GU;q9ee9Twt<3H%1|7ML=Uc~pOMP#EbKd&G3 z5Bw&Cs2ujPAOGraUZh{YD47GkB^_aYB$Jr z!0P~1cciMRx7dI96L$arjv`)O-dks!l>dYOxs?&zmjc-zET2w1g57u;h!=sz`AcJ) z^0SN=Wt5-dqZgq)A$56hCq#}n?gUVIP3t9%010^>Au}}+m!Of&95PZe zp%5ti^S_yanGhyz3yV^G#X{?^oS@d%3m}6?ZsV5S{e}=Y+1wpWH=PQ`W;)(7o&!e* zW9FNF7dm6~4nZa!m0|?7(~I+(+x{n%Y6z%NX}W~JA3;kqI+axQK^PAqN=Z&13G@w) z(X53>tUUP7Z)fYrBM?|&ab__&Y^2$&tXBtTLj7V#;n5iJI!FfyTF1Ji-SMP}X1dM2 z+H+zz$6|*x{yKJRdZJH+3nu76VU+B;{nU(Hu{EdKilSgciP=HjqFXZn;lm2CWa5 zUGL&^Afj$>!E?`t>vgLSYLad6H{blZ%`hHA&ZzGk)G4*$l))t0Z+z_vgZpswI91f1 zYK)MUd6^Efg&YjnXt)rLl2itRaM!AEUAm;#_c(>^HL2@gB6&o{Z=g4S7pR|6M$Kzp zfb=8f`1yw8@4f}iDrL0Csb`{BeNc|N{`7-jj#6A#Vag-IkRos~Yy1C?m%7f2`+L09 z!b-dp92RaLlC}LZ%|+|41^hv?kD3I(0p$hr8ywv%yIX{zV0(ooFPmUW@@)`XZB2d+ zX+VGq_PJ>@?#|PhTHNR_k9Z!Qc^hWA{xWQMAYcj`$Vkugsz{7SaDc3lZjZ!rQi`{q zk6*;gHV9$UxULau-o^PrEmb?+bfMz4&e3~*>fAiy;kg-^M%9wE4=HDofkB?{Q%TA_6c%EiiMu3i6G`)Zv2$@3U+NeB1o$WZSZx3HBmv1sye zRW&p$emTsVsi&oVR;>Cmoc?Ah_UGGYVL&gUgQ(x1E}<;Ll6aml=eW_oadP1sAajZoOOL_c@5cRoD*xWIEHKS*#P;aP zP?_PJC^cT+VWRQz=B$P4%>gCoP&ZJ~pEInEye?;F0*#c@-yJ|qz zmc{;N#dzvlU=)ww0cpCkn0nH3yCLf5WM{0-1(_1)Lt2%|@q&lIbf==D7yHsL2i$eo zY(Xs}m)AxmK%O`vN}_gEapzpd@Jmf1m>*m1W#;FomPlG@x}R^bk=(eo(ZDr-f=+$H z@lnw3o@wK09yN}s$F?`5ZyVlcQN8sV;+8?-H%XLi%ZYo_9FMc#15<=VYg%TxQ~PmQ zdYsSG+r_OL0B1*T#lqXQpm+ehW?OKUTm6yC4x1Z|Rc;kV5v$q?sAPxld7@LUd1~CA zH;C)mW<*?Qht0`k7bH9BGk3|boEq}5Mx1*@g3E#313nxUMDT98$w@sc)Hx)+VL1fE zRzqNhcyBWAtGZUHprjZhN()2rJ>~hlND6c`^>2}zWFf@E#$lcy#3S>YnQ{Z0B6BG3 z@fPdTK(dM<2e0dz%4_X6i90g!8J97_kC#eCM~fSq>~6C&J4b;aF1h(A(hW zr}$n`w4P>%=G1u8MjlJZNlIpJgI;)Vr4&ap>a2H1%%GnteafevP#bubxL~+Jipt>B z7kTCmP{Nq7Ll3e!_xeaOx$2tD)@oTV-RW%@c-@4b<&N4vY154N`9WkQJx9TsCYLRn-)Ti7id1r?ruz z-zuRdT3^%5Qk;Wi39G=EY5cFjopsV~K9vR@Jlq1qen$)GbFGdU8b4k~BzwtL2B zdsV&-y9+hM9_92C)HcZCT4_wu0=DCv=C(bRxk!W`rrVzmmSB4rqoF1X<3Lt;C~O0U zy)BvUN7=r58tTu>WU^IaCxXg8bod@3dBDH80wd0g-L$D+vWm`l9&s%IFpkH@_o_BR zE!Sq^T$B$urv$qxyFJoVTz3xR8De=3v&!<+6bx3?2g4ZQw@ucNG={-8={Up@!2IeS zB}0>Uvk;R{vntpLQr!2y>>DLDa~c6~=ZreXGm9oW1snuslCvySz_0>>=EjtSsoT5W z{GWI#x}&?a^R?nZI<7Z9|X`SbL>CQh6rA&n*?B z#p~WD)9h=fW=yN@6EGNpL#R!Ihm3wPsjRj)AndLX@_iaA2o3mxI<1*Th-T8E57SB9 z+TE5-{5oXTTh@Ue=K{vW%(DW2BWF8_zuY%D~21$bLST=fmHSV1-EK z!TMV-N?Glx!$OZhy%^Iwl%qR^>eig)gW-qKRrrdWH1b^Pnl8i1V$v71twM*hay+RF zCeox?6p0IdV}bb!evdX9W3-o+<}CWM1eKuTgpu?Y1+t#$XLlg#<)>u30@ZFAT|KN~ zr}_rLlt?5B>u|r@N2tyZ(t!=|VSiL|hwxHp%~yNtC6ytj0h)XhsO@JL$tAbS1(tE9 zA8neMGPPgd*l;qWA@g|)1mG>rPrXS7NM&o;VaR`a_;H8r8gylJ78+@_ zxo9K-+aZ25F)%@aH_oyl}x!HRni%{A#UiT_W#??P%sbJ$wm3Al3c?Aqjoy%Qi=SPl1`y zSSKR^xg{?><+WyMH&ibvi*C_!}(XVN{imw%dnYLW!#VP!PKD;qOj)KbYwmFJy&jvkqwKVj!sKXVD9KIV6vM(^;R(N zn@xA6^3T&Ub>uqB0{49=)O*hUv~2U`6V&xUMJ`Tp;<42#GIsN8(H|CT38#41HPlyX zWoXdnSx%g;WDd=eZbL#S@IjNlP$V2t_XCiZg~h0w;RzTk^SoxlX;9i&*8m4Nbw-iq zCSpTViIAc4$1S>NkX|WSyf3*NL9|9Nrps+{`-6!w=fPJYoa$*y+d0-}Q-vauZ<5{p zi|A}dA3RzEj20XRE#pAD*VFGu<{P3g$HIhH)(>JbsR17^i(6`18jQNlFk)m#$})v! z1P3v)Af4y!=kC8F5R*{~Hnbup0-vDc0)r~HH(($uc?*E(eHYs7A@ji#-d?f-vRnfn zw`s;%OB83{=4z*6NQMBro(l@nrVn+o>`KZVTS3g;3X$@6D@Sdl{!;($@{B8s4 z1)cBI$B{O7Aqy{VAga#!dwr)rU2I)1XfU)Kt8}46d@uNi+Tq>D>I}+oIPg|o#2rp( zSafGS#Jn~z;t2dOC9AlrvZM=$$UZTdM!&l|G?`?`2x{7Fp)i$_ERCSEhL|EFm>&i0 z62p@09rZJg9fQy_EzKI_-tim`)iOv?Aqph>avn`Kzun;M>bbX@KM$l@Tz$7X`ynnx zJszmixwV51&KEbiH4C>v^*Z5YhIS5Mm=nv4+EC*3$MP1Z#6ioH&ePF{jr8>ugs(u@ z(R2^Kj>2B4knInm0&Sx`ogr;aPu~N55uLxERSYd0e19Em5N!WV6pbf`b9{!|P6x~} zuEmMhOIViQ#R`UK{}&otB4O!0=NsOI-yaO-jrhl^F&-*iy4o9Ssu7{{_ZJn_BOt?Y zc;8g0BC=kszdx&Q4ng?4*uhPkrTm$lo^Z1eEQDczd;~3LYa!Ay z*?WHlYcICYpoL4t`H2|oQ%%(k)X!tK^(B!>Op8NnbjaYoE=6Q05LKt@!wdDan}jur zIhS;uOvlD~Hm~SqkMxyCJ*HELQuH6ZZ+3s@fe4?%LN2}@(eUt z0xgT(HBb1Z#7+S47$~g~%*W(-EdmuJg->dMo+J75M^N|i31&kh>a^nbuZZaT#AKGb zZYhmxv55^O>;25L+uJK)7x$GzThpslFVI0VV`nD)VZ4-0;DVpBfA>%lEeEzghhuoT za4X}*C!NCOD54cn{Cfe;8O&_^S#<A{#TSYkrz

    8m7KOrYY_2AE&R_-vk|Iyq5!+;; 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 Q5XHW%rlp$k+sz064;6dPa{vGU literal 87329 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 {;VCY>S?L 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 z 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 web component. diff --git a/_docs/v0.62/embedding/eajs/snippets/MetabaseMetabotAttributes.md b/_docs/v0.62/embedding/eajs/snippets/MetabaseMetabotAttributes.md index eaced10817..51e6b65916 100644 --- a/_docs/v0.62/embedding/eajs/snippets/MetabaseMetabotAttributes.md +++ b/_docs/v0.62/embedding/eajs/snippets/MetabaseMetabotAttributes.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseMetabotAttributes source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/eajs/snippets/MetabaseMetabotAttributes.md' layout: new-docs +latest: true --- Attributes for the `` web component. diff --git a/_docs/v0.62/embedding/sdk/api/snippets/ButtonProps.md b/_docs/v0.62/embedding/sdk/api/snippets/ButtonProps.md index a223d4e7aa..4f63be16e4 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/ButtonProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/ButtonProps.md @@ -7,6 +7,7 @@ category: Embedding title: ButtonProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ButtonProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/ChartColor.md b/_docs/v0.62/embedding/sdk/api/snippets/ChartColor.md index cf37ab2311..d80bc78034 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/ChartColor.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/ChartColor.md @@ -7,6 +7,7 @@ category: Embedding title: ChartColor source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ChartColor.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/ChartColorV2.md b/_docs/v0.62/embedding/sdk/api/snippets/ChartColorV2.md index 52c74b6aed..87b78bc2d3 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/ChartColorV2.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/ChartColorV2.md @@ -7,6 +7,7 @@ category: Embedding title: ChartColorV2 source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ChartColorV2.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/CollectionBrowserListColumns.md b/_docs/v0.62/embedding/sdk/api/snippets/CollectionBrowserListColumns.md index d9012e5f73..b12f398829 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/CollectionBrowserListColumns.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/CollectionBrowserListColumns.md @@ -7,6 +7,7 @@ category: Embedding title: CollectionBrowserListColumns source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/CollectionBrowserListColumns.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/DashboardCardMenu.md b/_docs/v0.62/embedding/sdk/api/snippets/DashboardCardMenu.md index f7e442dc80..5c94aa937b 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/DashboardCardMenu.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/DashboardCardMenu.md @@ -7,6 +7,7 @@ category: Embedding title: DashboardCardMenu source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/DashboardCardMenu.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/EmbeddingDataPicker.md b/_docs/v0.62/embedding/sdk/api/snippets/EmbeddingDataPicker.md index 82e566d592..60021d2871 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/EmbeddingDataPicker.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/EmbeddingDataPicker.md @@ -7,6 +7,7 @@ category: Embedding title: EmbeddingDataPicker source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/EmbeddingDataPicker.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/EmbeddingEntityType.md b/_docs/v0.62/embedding/sdk/api/snippets/EmbeddingEntityType.md index 2d12ecb40c..ccdae01b04 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/EmbeddingEntityType.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/EmbeddingEntityType.md @@ -7,6 +7,7 @@ category: Embedding title: EmbeddingEntityType source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/EmbeddingEntityType.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/EntityTypeFilterKeys.md b/_docs/v0.62/embedding/sdk/api/snippets/EntityTypeFilterKeys.md index 69cd9ceaf9..04b9aca221 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/EntityTypeFilterKeys.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/EntityTypeFilterKeys.md @@ -7,6 +7,7 @@ category: Embedding title: EntityTypeFilterKeys source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/EntityTypeFilterKeys.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/IconName.md b/_docs/v0.62/embedding/sdk/api/snippets/IconName.md index 028b6c437d..1bfe01c227 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/IconName.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/IconName.md @@ -7,6 +7,7 @@ category: Embedding title: IconName source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/IconName.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InitializationStatus.md b/_docs/v0.62/embedding/sdk/api/snippets/InitializationStatus.md index ec20c1c5d4..103d1ef54a 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InitializationStatus.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InitializationStatus.md @@ -7,6 +7,7 @@ category: Embedding title: InitializationStatus source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InitializationStatus.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md index decce5bdb3..12a464df34 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionBackButtonProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionBackButtonProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md index 63ec764b1e..3d9aa3e47c 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionBreakoutDropdownProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionBreakoutDropdownProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md index 870b76b349..17854c06ea 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionChartTypeDropdownProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionChartTypeDropdownProps.md' layout: new-docs +latest: true --- **`Expand`** diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md index edfa5fbed6..3cc6bee750 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionChartTypeSelectorProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionChartTypeSelectorProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md index 31e05de6f2..c90f372c01 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionDownloadWidgetDropdownProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetDropdownProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md index d89a54dd8e..87170ed9d9 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionDownloadWidgetProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionDownloadWidgetProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md index 5aae32acf9..c4e102aeb3 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionEditorButtonProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionEditorButtonProps.md' layout: new-docs +latest: true --- **`Expand`** diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md index 664ec4528a..be5c396cd5 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionEditorProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionEditorProps.md' layout: new-docs +latest: true --- **`Expand`** diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md index 2ccfbd9140..26509ac0ef 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionFilterDropdownProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionFilterDropdownProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md index 206f5b27b6..75d37faddc 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionFilterProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionFilterProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md index 0c757852b0..f8273ec5b0 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionQuestionSettingsDropdownProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsDropdownProps.md' layout: new-docs +latest: true --- **`Expand`** diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md index 4034e60773..82d1711efb 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionQuestionSettingsProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionQuestionSettingsProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md index f458c04f9f..2d5cdefee1 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionQuestionVisualizationProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionQuestionVisualizationProps.md' layout: new-docs +latest: true --- **`Expand`** diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md index d6594b5911..0c5d0fcd72 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionResetButtonProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionResetButtonProps.md' layout: new-docs +latest: true --- **`Expand`** diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md index ce7030d530..1780aefb3e 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionSaveButtonProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionSaveButtonProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md index 1f683fe553..29235a3364 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionSaveQuestionFormProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionSaveQuestionFormProps.md' layout: new-docs +latest: true --- **`Expand`** diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md index 4b19b76300..2dfc66b4cd 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionSummarizeDropdownProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionSummarizeDropdownProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md index ee728c4e0a..739e30f6d6 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md @@ -7,6 +7,7 @@ category: Embedding title: InteractiveQuestionTitleProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/InteractiveQuestionTitleProps.md' layout: new-docs +latest: true --- **`Expand`** diff --git a/_docs/v0.62/embedding/sdk/api/snippets/LoginStatus.md b/_docs/v0.62/embedding/sdk/api/snippets/LoginStatus.md index f83a40b891..9b10d33540 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/LoginStatus.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/LoginStatus.md @@ -7,6 +7,7 @@ category: Embedding title: LoginStatus source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/LoginStatus.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfig.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfig.md index 12c0afde04..592de0c4e5 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfig.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfig.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseAuthConfig source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseAuthConfig.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md index 65eda1ea9f..0ca2b81905 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseAuthConfigWithApiKey source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseAuthConfigWithApiKey.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md index 6ae924074c..d8978588db 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseAuthConfigWithSaml source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseAuthConfigWithSaml.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseClickAction.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseClickAction.md index 6cc71d58ea..66720d699c 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseClickAction.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseClickAction.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseClickAction source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseClickAction.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseColorKey.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseColorKey.md index 0d71ccf40a..428a2fc2c0 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseColorKey.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseColorKey.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseColorKey source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseColorKey.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseComponentTheme.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseComponentTheme.md index bbb01b0fb0..cbfa99db6b 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseComponentTheme.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseComponentTheme.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseComponentTheme source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseComponentTheme.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md index 60033875c4..06627e4570 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseEmbeddingColorKeyV2 source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseEmbeddingColorKeyV2.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md index 65752c73f5..fedbc6e4bf 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseEmbeddingTheme source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseEmbeddingTheme.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md index b59b435166..3cc40bd42c 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseFetchRequestTokenFn source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseFetchRequestTokenFn.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseFontFamily.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseFontFamily.md index 72e0881368..a110f7b716 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseFontFamily.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseFontFamily.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseFontFamily source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseFontFamily.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md index 10201c8bce..9047e8ba98 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseGlobalPluginsConfig source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseGlobalPluginsConfig.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md index 77c6741277..79ccd175b1 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseIsGuestAuthConfig source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseIsGuestAuthConfig.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseQuestion.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseQuestion.md index 11cff8f316..9071763962 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseQuestion.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseQuestion.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseQuestion source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseQuestion.md' layout: new-docs +latest: true --- ## Properties diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseThemePreset.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseThemePreset.md index 954b79fa99..7df932e159 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabaseThemePreset.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabaseThemePreset.md @@ -7,6 +7,7 @@ category: Embedding title: MetabaseThemePreset source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabaseThemePreset.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabotAgentMessage.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabotAgentMessage.md index 2dacacaea9..a29f21552f 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabotAgentMessage.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabotAgentMessage.md @@ -7,6 +7,7 @@ category: Embedding title: MetabotAgentMessage source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabotAgentMessage.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabotAgentTextMessage.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabotAgentTextMessage.md index 6741bb0716..bf0df46ac9 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabotAgentTextMessage.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabotAgentTextMessage.md @@ -7,6 +7,7 @@ category: Embedding title: MetabotAgentTextMessage source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabotAgentTextMessage.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabotChartProps.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabotChartProps.md index 6815877ffc..d186baf383 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabotChartProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabotChartProps.md @@ -7,6 +7,7 @@ category: Embedding title: MetabotChartProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabotChartProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabotErrorMessage.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabotErrorMessage.md index f8583b885c..ac8bdef3e6 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabotErrorMessage.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabotErrorMessage.md @@ -7,6 +7,7 @@ category: Embedding title: MetabotErrorMessage source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabotErrorMessage.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabotMessage.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabotMessage.md index 63c31e062e..89d1c01020 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabotMessage.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabotMessage.md @@ -7,6 +7,7 @@ category: Embedding title: MetabotMessage source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabotMessage.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/MetabotUserTextMessage.md b/_docs/v0.62/embedding/sdk/api/snippets/MetabotUserTextMessage.md index f12cd82065..e2defef161 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/MetabotUserTextMessage.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/MetabotUserTextMessage.md @@ -7,6 +7,7 @@ category: Embedding title: MetabotUserTextMessage source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/MetabotUserTextMessage.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/ParameterChangeSource.md b/_docs/v0.62/embedding/sdk/api/snippets/ParameterChangeSource.md index 3930915bd4..24b76c6fb0 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/ParameterChangeSource.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/ParameterChangeSource.md @@ -7,6 +7,7 @@ category: Embedding title: ParameterChangeSource source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ParameterChangeSource.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/ParameterValues.md b/_docs/v0.62/embedding/sdk/api/snippets/ParameterValues.md index 5c3f0f122c..a5ea594703 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/ParameterValues.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/ParameterValues.md @@ -7,6 +7,7 @@ category: Embedding title: ParameterValues source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ParameterValues.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/ProtectedColorKey.md b/_docs/v0.62/embedding/sdk/api/snippets/ProtectedColorKey.md index b906d75837..1e905e3753 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/ProtectedColorKey.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/ProtectedColorKey.md @@ -7,6 +7,7 @@ category: Embedding title: ProtectedColorKey source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ProtectedColorKey.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SdkCollectionId.md b/_docs/v0.62/embedding/sdk/api/snippets/SdkCollectionId.md index 1b19cd2d8d..532325f265 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SdkCollectionId.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SdkCollectionId.md @@ -7,6 +7,7 @@ category: Embedding title: SdkCollectionId source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkCollectionId.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SdkDashboardId.md b/_docs/v0.62/embedding/sdk/api/snippets/SdkDashboardId.md index 8f6267e9eb..780790f350 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SdkDashboardId.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SdkDashboardId.md @@ -7,6 +7,7 @@ category: Embedding title: SdkDashboardId source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkDashboardId.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SdkEntityId.md b/_docs/v0.62/embedding/sdk/api/snippets/SdkEntityId.md index 4d0685a571..06104e37ee 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SdkEntityId.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SdkEntityId.md @@ -7,6 +7,7 @@ category: Embedding title: SdkEntityId source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkEntityId.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SdkEntityToken.md b/_docs/v0.62/embedding/sdk/api/snippets/SdkEntityToken.md index e0a5161af0..b60bc16ebb 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SdkEntityToken.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SdkEntityToken.md @@ -7,6 +7,7 @@ category: Embedding title: SdkEntityToken source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkEntityToken.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SdkErrorComponentProps.md b/_docs/v0.62/embedding/sdk/api/snippets/SdkErrorComponentProps.md index 46b8f7274b..8b291bd22f 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SdkErrorComponentProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SdkErrorComponentProps.md @@ -7,6 +7,7 @@ category: Embedding title: SdkErrorComponentProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkErrorComponentProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SdkQuestionId.md b/_docs/v0.62/embedding/sdk/api/snippets/SdkQuestionId.md index 4b3ea5f081..70e146c69a 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SdkQuestionId.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SdkQuestionId.md @@ -7,6 +7,7 @@ category: Embedding title: SdkQuestionId source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkQuestionId.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SdkQuestionTitleProps.md b/_docs/v0.62/embedding/sdk/api/snippets/SdkQuestionTitleProps.md index 58ad0ae139..175b9235f7 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SdkQuestionTitleProps.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SdkQuestionTitleProps.md @@ -7,6 +7,7 @@ category: Embedding title: SdkQuestionTitleProps source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkQuestionTitleProps.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SdkUserId.md b/_docs/v0.62/embedding/sdk/api/snippets/SdkUserId.md index ea030e92f8..722efb6352 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SdkUserId.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SdkUserId.md @@ -7,6 +7,7 @@ category: Embedding title: SdkUserId source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SdkUserId.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SqlParameterChangeSource.md b/_docs/v0.62/embedding/sdk/api/snippets/SqlParameterChangeSource.md index f91bd18d44..e06f4ca8d6 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SqlParameterChangeSource.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SqlParameterChangeSource.md @@ -7,6 +7,7 @@ category: Embedding title: SqlParameterChangeSource source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SqlParameterChangeSource.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/SqlParameterValues.md b/_docs/v0.62/embedding/sdk/api/snippets/SqlParameterValues.md index 879124bd06..b5a68f0c27 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/SqlParameterValues.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/SqlParameterValues.md @@ -7,6 +7,7 @@ category: Embedding title: SqlParameterValues source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SqlParameterValues.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/UserBackendJwtResponse.md b/_docs/v0.62/embedding/sdk/api/snippets/UserBackendJwtResponse.md index 3870a80213..7c0b69b061 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/UserBackendJwtResponse.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/UserBackendJwtResponse.md @@ -7,6 +7,7 @@ category: Embedding title: UserBackendJwtResponse source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/UserBackendJwtResponse.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/useApplicationName.md b/_docs/v0.62/embedding/sdk/api/snippets/useApplicationName.md index 0e54770d6d..cf86f7628b 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/useApplicationName.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/useApplicationName.md @@ -7,6 +7,7 @@ category: Embedding title: useApplicationName source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/useApplicationName.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/embedding/sdk/api/snippets/useAvailableFonts.md b/_docs/v0.62/embedding/sdk/api/snippets/useAvailableFonts.md index 63878fcccf..55a899542c 100644 --- a/_docs/v0.62/embedding/sdk/api/snippets/useAvailableFonts.md +++ b/_docs/v0.62/embedding/sdk/api/snippets/useAvailableFonts.md @@ -7,6 +7,7 @@ category: Embedding title: useAvailableFonts source_url: 'https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/useAvailableFonts.md' layout: new-docs +latest: true --- ```ts diff --git a/_docs/v0.62/people-and-groups/changing-password-complexity.md b/_docs/v0.62/people-and-groups/changing-password-complexity.md index c2a9ed07a0..9323de09d5 100644 --- a/_docs/v0.62/people-and-groups/changing-password-complexity.md +++ b/_docs/v0.62/people-and-groups/changing-password-complexity.md @@ -27,6 +27,7 @@ The settings above can be used independently, so it's fine to use only one or th - `weak` = no character constraints - `normal` = at least 1 digit - `strong` = minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character +- `strong-enough` = minimum 15 characters By default, Metabase also prevents users from setting passwords that are in a list of common passwords (like `qwerty123` and `passw0rd`). Changing the complexity requirement to `weak` disables this behavior. diff --git a/_docs/v0.62/questions/native-editor/filter-widgets.md b/_docs/v0.62/questions/native-editor/filter-widgets.md index 3ea87d71fc..8ce5d4133c 100644 --- a/_docs/v0.62/questions/native-editor/filter-widgets.md +++ b/_docs/v0.62/questions/native-editor/filter-widgets.md @@ -23,6 +23,8 @@ The kind of filter widget that Metabase displays when you create a field filter Date fields will either have a simple date filter (for date variables) or a dynamic date picker (for field filters mapped to a date field). +ID parameters also support all three widget types (input box, search box, and dropdown list), so you can power an ID filter with a dropdown or search box instead of a plain input box. + If you want to change the default filter widget for a particular field, you'll need to ask an admin to update that field in [the Table Metadata](../../data-modeling/metadata-editing) and set the desired "Filtering on this field" option. For dropdown lists and search boxes, you can also customize values available in the list. See below. @@ -65,11 +67,11 @@ When you add a dropdown menu or search box, you can tell Metabase which values p 2. Next to the option you chose, click **Edit**. 3. Metabase will pop up a modal where you can select **Where the values should come from**. -You can choose: +You can choose between: -- **From connected fields**. If you selected the Field filter variable type, you'll also have the option to use the connected field. -- **From another model or question**. If you select this option, you'll need to pick a model or question, then a field from that model or question that Metabase will use to supply the values for that dropdown or search box. For example, if you want the dropdown to list the different plans an account could be on, you could select an "Account" model you created, and select the field "Plan" to power that dropdown. The dropdown would then list all of the distinct plan options that appear in the "Plan" column in the Accounts model. -- **Custom list**. Enter each item on a line. You can enter any string values you like. +- **From connected fields:** If you selected the Field filter variable type, you'll also have the option to use the connected field. +- **From another model or question:** Pick a model or question (built with either the query builder or SQL), then set the **Column to supply the values** that Metabase should filter on. You can also set a **Column to supply the labels** to display friendly labels in the dropdown while still filtering on the underlying values. For example, if you want the dropdown to list the different plans an account could be on, you could select an "Account" model you created and set the **Column to supply the values** to "Plan". Or, to filter on product IDs while showing product names, set the **Column to supply the values** to "ID" and the **Column to supply the labels** to "Title", so people see product names in the dropdown but the filter passes along the matching ID. +- **Custom list:** Enter each item on a line. You can enter any string values you like. You can also [change a dashboard filter's selectable values](../../dashboards/filters#change-a-filters-selectable-values). diff --git a/_site/docs/all.html b/_site/docs/all.html index 6614dcaa23..e9f7132f9e 100644 --- a/_site/docs/all.html +++ b/_site/docs/all.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -1887,7 +1981,7 @@
    Analytics
  • - + Queries and charts @@ -1910,7 +2004,7 @@
    Analytics
  • - + Introduction @@ -1946,7 +2040,7 @@
    Analytics
  • - + Editor @@ -1960,7 +2054,7 @@
    Analytics
  • - + Filtering @@ -1974,7 +2068,7 @@
    Analytics
  • - + Summarizing and grouping @@ -1988,7 +2082,7 @@
    Analytics
  • - + Joining data @@ -2002,7 +2096,7 @@
    Analytics
  • - + Custom expressions @@ -2016,7 +2110,7 @@
    Analytics
  • - + List of expressions @@ -2056,7 +2150,7 @@
    Analytics
  • - + SQL editor @@ -2070,7 +2164,7 @@
    Analytics
  • - + SQL parameters @@ -2084,7 +2178,7 @@
    Analytics
  • - + Field filters @@ -2098,7 +2192,7 @@
    Analytics
  • - + Basic SQL parameters @@ -2112,7 +2206,7 @@
    Analytics
  • - + Time grouping parameters @@ -2126,7 +2220,7 @@
    Analytics
  • - + Table variables @@ -2140,7 +2234,7 @@
    Analytics
  • - + Optional variables @@ -2154,7 +2248,7 @@
    Analytics
  • - + Filter widgets @@ -2168,7 +2262,7 @@
    Analytics
  • - + Referencing models and questions @@ -2182,7 +2276,7 @@
    Analytics
  • - + Snippets @@ -2196,7 +2290,7 @@
    Analytics
  • - + Snippet folder permissions @@ -2236,7 +2330,7 @@
    Analytics
  • - + Overview @@ -2250,7 +2344,7 @@
    Analytics
  • - + Box plot @@ -2264,7 +2358,7 @@
    Analytics
  • - + Combo chart @@ -2278,7 +2372,7 @@
    Analytics
  • - + Details chart @@ -2292,7 +2386,7 @@
    Analytics
  • - + Funnel chart @@ -2306,7 +2400,7 @@
    Analytics
  • - + Gauge chart @@ -2320,7 +2414,7 @@
    Analytics
  • - + Line, bar, and area charts @@ -2334,7 +2428,7 @@
    Analytics
  • - + Maps @@ -2348,7 +2442,7 @@
    Analytics
  • - + Number chart @@ -2362,7 +2456,7 @@
    Analytics
  • - + Pie and sunburst charts @@ -2376,7 +2470,7 @@
    Analytics
  • - + Pivot tables @@ -2390,7 +2484,7 @@
    Analytics
  • - + Progress bar @@ -2404,7 +2498,7 @@
    Analytics
  • - + Sankey chart @@ -2418,7 +2512,7 @@
    Analytics
  • - + Scatterplot @@ -2432,7 +2526,7 @@
    Analytics
  • - + Table @@ -2446,7 +2540,7 @@
    Analytics
  • - + Trend chart @@ -2460,7 +2554,7 @@
    Analytics
  • - + Waterfall chart @@ -2474,7 +2568,7 @@
    Analytics
  • - + Tooltips @@ -2493,7 +2587,7 @@
    Analytics
  • - + Metrics explorer @@ -2508,7 +2602,7 @@
    Analytics
  • - + Alerts @@ -2523,7 +2617,7 @@
    Analytics
  • - + Exporting data @@ -2544,7 +2638,7 @@
    Analytics
  • - + Dashboards @@ -2567,7 +2661,7 @@
    Analytics
  • - + Overview @@ -2582,7 +2676,7 @@
    Analytics
  • - + Dashboard filters @@ -2597,7 +2691,7 @@
    Analytics
  • - + Linked filters @@ -2612,7 +2706,7 @@
    Analytics
  • - + Dashboard interactivity @@ -2627,7 +2721,7 @@
    Analytics
  • - + Charts with multiple series @@ -2642,7 +2736,7 @@
    Analytics
  • - + Dashboard subscriptions @@ -2657,7 +2751,7 @@
    Analytics
  • - + Actions on dashboards @@ -2678,7 +2772,7 @@
    Analytics
  • - + Documents @@ -2701,7 +2795,7 @@
    Analytics
  • - + Overview @@ -2722,7 +2816,7 @@
    Analytics
  • - + AI @@ -2745,7 +2839,7 @@
    Analytics
  • - + Overview @@ -2760,7 +2854,7 @@
    Analytics
  • - + Metabot @@ -2775,7 +2869,7 @@
    Analytics
  • - + Metabot in Slack @@ -2790,7 +2884,7 @@
    Analytics
  • - + Settings @@ -2805,7 +2899,7 @@
    Analytics
  • - + MCP server @@ -2820,7 +2914,7 @@
    Analytics
  • - + Agent API @@ -2835,7 +2929,7 @@
    Analytics
  • - + Agent-driven development @@ -2850,7 +2944,7 @@
    Analytics
  • - + Customization @@ -2865,7 +2959,7 @@
    Analytics
  • - + System prompts @@ -2880,7 +2974,7 @@
    Analytics
  • - + Usage auditing @@ -2895,7 +2989,7 @@
    Analytics
  • - + Usage controls @@ -2910,7 +3004,7 @@
    Analytics
  • - + AI privacy @@ -2931,7 +3025,7 @@
    Analytics
  • - + Data modeling @@ -2954,7 +3048,7 @@
    Analytics
  • - + Models @@ -2969,7 +3063,7 @@
    Analytics
  • - + Model persistence @@ -2984,7 +3078,7 @@
    Analytics
  • - + Metrics @@ -2999,7 +3093,7 @@
    Analytics
  • - + Table metadata settings @@ -3014,7 +3108,7 @@
    Analytics
  • - + Data and semantic types @@ -3029,7 +3123,7 @@
    Analytics
  • - + Editable tables @@ -3044,7 +3138,7 @@
    Analytics
  • - + Formatting defaults @@ -3059,7 +3153,7 @@
    Analytics
  • - + Working with JSON @@ -3074,7 +3168,7 @@
    Analytics
  • - + Segments @@ -3110,7 +3204,7 @@
    Analytics
  • - + Overview @@ -3124,7 +3218,7 @@
    Analytics
  • - + Basic actions @@ -3138,7 +3232,7 @@
    Analytics
  • - + Custom actions @@ -3163,7 +3257,7 @@
    Analytics
  • - + Data Studio @@ -3186,7 +3280,7 @@
    Analytics
  • - + Overview @@ -3201,7 +3295,7 @@
    Analytics
  • - + Library @@ -3216,7 +3310,7 @@
    Analytics
  • - + Data structure @@ -3231,7 +3325,7 @@
    Analytics
  • - + Glossary @@ -3246,7 +3340,7 @@
    Analytics
  • - + Dependency graph @@ -3261,7 +3355,7 @@
    Analytics
  • - + Dependency diagnostics @@ -3297,7 +3391,7 @@
    Analytics
  • - + Overview @@ -3311,7 +3405,7 @@
    Analytics
  • - + Query transforms @@ -3325,7 +3419,7 @@
    Analytics
  • - + Python transforms @@ -3339,7 +3433,7 @@
    Analytics
  • - + Python runner @@ -3353,7 +3447,7 @@
    Analytics
  • - + Jobs and runs @@ -3367,7 +3461,7 @@
    Analytics
  • - + Transform inspector @@ -3381,7 +3475,7 @@
    Analytics
  • - + Add-ons @@ -3406,7 +3500,7 @@
    Analytics
  • - + Organization @@ -3429,7 +3523,7 @@
    Analytics
  • - + Basic exploration @@ -3444,7 +3538,7 @@
    Analytics
  • - + Keyboard shortcuts @@ -3459,7 +3553,7 @@
    Analytics
  • - + Collections @@ -3474,7 +3568,7 @@
    Analytics
  • - + Data reference @@ -3489,7 +3583,7 @@
    Analytics
  • - + Events and timelines @@ -3504,7 +3598,7 @@
    Analytics
  • - + X-rays @@ -3519,7 +3613,7 @@
    Analytics
  • - + Content verification @@ -3534,7 +3628,7 @@
    Analytics
  • - + History @@ -3549,7 +3643,7 @@
    Analytics
  • - + Delete and restore @@ -3576,7 +3670,7 @@
    Embedding
  • - + Overview @@ -3617,7 +3711,7 @@
    Embedding
  • - + Overview @@ -3632,7 +3726,7 @@
    Embedding
  • - + Components @@ -3647,7 +3741,22 @@
    Embedding
  • - + + Filters and parameters + + + + +
  • + + + + + + + +
  • + Appearance @@ -3662,7 +3771,7 @@
    Embedding
  • - + Authentication @@ -3677,7 +3786,7 @@
    Embedding
  • - + Tenants @@ -3713,7 +3822,7 @@
    Embedding
  • - + Overview @@ -3727,7 +3836,7 @@
    Embedding
  • - + Quickstarts @@ -3758,35 +3867,35 @@
    Embedding
  • - + Questions
  • - + Dashboards
  • - + AI chat
  • - + Collections
  • - + Plugins
  • @@ -3818,21 +3927,21 @@
    Embedding
  • - + Provider config
  • - + Working with Next.js
  • - + Versioning
  • @@ -3847,7 +3956,7 @@
    Embedding
  • - + Upgrading @@ -3861,7 +3970,7 @@
    Embedding
  • - + API @@ -3880,7 +3989,7 @@
    Embedding
  • - + Guest embedding @@ -3895,7 +4004,7 @@
    Embedding
  • - + Translate embeds @@ -3939,7 +4048,7 @@
    Embedding
  • - + Overview @@ -3954,7 +4063,7 @@
    Embedding
  • - + Quickstart @@ -3969,7 +4078,7 @@
    Embedding
  • - + Full app UI components @@ -3990,7 +4099,7 @@
    Embedding
  • - + Public links and embeds @@ -4008,7 +4117,7 @@
    Embedding
  • - + Securing embeds @@ -4026,7 +4135,7 @@
    Embedding
  • - + AI agent resources @@ -4050,7 +4159,7 @@
    Administration
  • - + Installation @@ -4094,7 +4203,7 @@
    Administration
  • - + Installation overview @@ -4122,7 +4231,7 @@
    Administration
  • - + Running the JAR file @@ -4136,7 +4245,7 @@
    Administration
  • - + Running in Docker @@ -4150,7 +4259,7 @@
    Administration
  • - + Other installation options @@ -4169,7 +4278,7 @@
    Administration
  • - + Upgrading Metabase @@ -4184,7 +4293,7 @@
    Administration
  • - + Configuring the Metabase application database @@ -4199,7 +4308,7 @@
    Administration
  • - + Activating Enterprise features @@ -4214,7 +4323,7 @@
    Administration
  • - + Migrating to a production application database @@ -4235,7 +4344,7 @@
    Administration
  • - + Data sources @@ -4258,7 +4367,7 @@
    Administration
  • - + Adding and managing databases @@ -4294,7 +4403,7 @@
    Administration
  • - + Athena @@ -4308,7 +4417,7 @@
    Administration
  • - + Amazon RDS @@ -4322,7 +4431,7 @@
    Administration
  • - + BigQuery @@ -4336,7 +4445,7 @@
    Administration
  • - + ClickHouse @@ -4350,7 +4459,7 @@
    Administration
  • - + Databricks @@ -4364,7 +4473,7 @@
    Administration
  • - + Druid @@ -4378,7 +4487,7 @@
    Administration
  • - + MariaDB @@ -4392,7 +4501,7 @@
    Administration
  • - + MongoDB @@ -4406,7 +4515,7 @@
    Administration
  • - + MySQL @@ -4420,7 +4529,7 @@
    Administration
  • - + Oracle @@ -4434,7 +4543,7 @@
    Administration
  • - + PostgreSQL @@ -4448,7 +4557,7 @@
    Administration
  • - + Presto @@ -4462,7 +4571,7 @@
    Administration
  • - + Redshift @@ -4476,7 +4585,7 @@
    Administration
  • - + Snowflake @@ -4490,7 +4599,7 @@
    Administration
  • - + SQL Server @@ -4504,7 +4613,7 @@
    Administration
  • - + SQLite @@ -4518,7 +4627,7 @@
    Administration
  • - + Spark SQL @@ -4532,7 +4641,7 @@
    Administration
  • - + Starburst @@ -4546,7 +4655,7 @@
    Administration
  • - + Vertica @@ -4560,7 +4669,7 @@
    Administration
  • - + Community drivers @@ -4579,7 +4688,7 @@
    Administration
  • - + Database users, roles, and privileges @@ -4594,7 +4703,7 @@
    Administration
  • - + Writeable connection @@ -4609,7 +4718,7 @@
    Administration
  • - + Syncing and scanning databases @@ -4624,7 +4733,7 @@
    Administration
  • - + Encrypting your database connection @@ -4639,7 +4748,7 @@
    Administration
  • - + SSH tunneling @@ -4654,7 +4763,7 @@
    Administration
  • - + SSL certificate @@ -4669,7 +4778,7 @@
    Administration
  • - + Setting up data uploads @@ -4684,7 +4793,7 @@
    Administration
  • - + Uploading data @@ -4735,7 +4844,7 @@
    Administration
  • - + Configuration @@ -4758,7 +4867,7 @@
    Administration
  • - + Setting up Metabase @@ -4773,7 +4882,7 @@
    Administration
  • - + General settings @@ -4788,7 +4897,7 @@
    Administration
  • - + Set up email @@ -4803,7 +4912,7 @@
    Administration
  • - + Set up Slack @@ -4818,7 +4927,7 @@
    Administration
  • - + Webhooks @@ -4833,7 +4942,7 @@
    Administration
  • - + Environment variables @@ -4848,7 +4957,7 @@
    Administration
  • - + Configuration file @@ -4863,7 +4972,7 @@
    Administration
  • - + Config file template @@ -4878,7 +4987,7 @@
    Administration
  • - + Metabase log configuration @@ -4893,7 +5002,7 @@
    Administration
  • - + Timezones @@ -4908,7 +5017,7 @@
    Administration
  • - + Languages and localization @@ -4923,7 +5032,7 @@
    Administration
  • - + Appearance @@ -4938,7 +5047,7 @@
    Administration
  • - + Fonts @@ -4953,7 +5062,7 @@
    Administration
  • - + Caching query results @@ -4968,7 +5077,7 @@
    Administration
  • - + Custom maps @@ -4983,7 +5092,7 @@
    Administration
  • - + Customizing the Metabase Jetty webserver @@ -5004,7 +5113,7 @@
    Administration
  • - + Operations and monitoring @@ -5027,7 +5136,7 @@
    Administration
  • - + Backing up Metabase @@ -5042,7 +5151,7 @@
    Administration
  • - + Development instances @@ -5057,7 +5166,7 @@
    Administration
  • - + Monitoring your Metabase @@ -5072,7 +5181,7 @@
    Administration
  • - + Observability with Prometheus @@ -5087,7 +5196,7 @@
    Administration
  • - + Serialization @@ -5102,7 +5211,7 @@
    Administration
  • - + Remote Sync @@ -5117,7 +5226,7 @@
    Administration
  • - + Commands @@ -5132,7 +5241,7 @@
    Administration
  • - + Usage analytics @@ -5147,7 +5256,7 @@
    Administration
  • - + Security center @@ -5162,7 +5271,7 @@
    Administration
  • - + Admin tools @@ -5183,7 +5292,7 @@
    Administration
  • - + Authentication @@ -5206,7 +5315,7 @@
    Administration
  • - + Account settings @@ -5221,7 +5330,7 @@
    Administration
  • - + Password complexity @@ -5236,7 +5345,7 @@
    Administration
  • - + Session expiration @@ -5251,7 +5360,7 @@
    Administration
  • - + Google Sign-In @@ -5266,7 +5375,7 @@
    Administration
  • - + LDAP @@ -5281,7 +5390,7 @@
    Administration
  • - + User provisioning @@ -5296,7 +5405,7 @@
    Administration
  • - + API keys @@ -5311,7 +5420,7 @@
    Administration
  • - + Paid SSO options @@ -5332,7 +5441,7 @@
    Administration
  • - + JWT-based authentication @@ -5346,7 +5455,7 @@
    Administration
  • - + SAML-based authentication @@ -5360,7 +5469,7 @@
    Administration
  • - + SAML with Auth0 @@ -5374,7 +5483,7 @@
    Administration
  • - + SAML with Microsoft Entra ID @@ -5388,7 +5497,7 @@
    Administration
  • - + SAML with Google @@ -5402,7 +5511,7 @@
    Administration
  • - + SAML with Keycloak @@ -5416,7 +5525,7 @@
    Administration
  • - + SAML with Okta @@ -5430,7 +5539,7 @@
    Administration
  • - + OIDC-based authentication @@ -5444,7 +5553,7 @@
    Administration
  • - + OIDC with Keycloak @@ -5469,7 +5578,7 @@
    Administration
  • - + Permissions @@ -5492,7 +5601,7 @@
    Administration
  • - + Permissions introduction @@ -5507,7 +5616,7 @@
    Administration
  • - + Managing people and groups @@ -5522,7 +5631,7 @@
    Administration
  • - + Data permissions @@ -5537,7 +5646,7 @@
    Administration
  • - + Collection permissions @@ -5552,7 +5661,7 @@
    Administration
  • - + Application permissions @@ -5567,7 +5676,7 @@
    Administration
  • - + Row and column security @@ -5582,7 +5691,7 @@
    Administration
  • - + Row and column security examples @@ -5597,7 +5706,7 @@
    Administration
  • - + Database routing @@ -5612,7 +5721,7 @@
    Administration
  • - + Impersonation @@ -5627,7 +5736,7 @@
    Administration
  • - + Snippets folder permissions @@ -5642,7 +5751,7 @@
    Administration
  • - + Notification permissions @@ -5657,7 +5766,7 @@
    Administration
  • - + Configuring permissions for embedding @@ -5684,7 +5793,7 @@
    Other resources
  • - + API @@ -5910,7 +6019,7 @@
    Other resources
  • - + Troubleshooting @@ -5928,7 +6037,7 @@
    Other resources
  • - + Developer guide @@ -5964,7 +6073,7 @@
    Other resources
  • - + Accessibility @@ -5982,7 +6091,7 @@
    Other resources
  • - + Supported browsers @@ -6000,7 +6109,7 @@
    Other resources
  • - + Privacy @@ -6018,7 +6127,7 @@
    Other resources
  • - + About the anonymous usage data we collect diff --git a/_site/docs/latest/CONTRIBUTING.html b/_site/docs/latest/CONTRIBUTING.html index c9bd31ee24..e4565b51f6 100644 --- a/_site/docs/latest/CONTRIBUTING.html +++ b/_site/docs/latest/CONTRIBUTING.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    -

    Metabase content like questions and dashboards can be serialized as YAML files. You can edit those YAML files by hand, sure, but now that we have actual genies, you can just ask them to edit them for you (call it “lamp-rubbing development”).

    +

    Now that we have actual genies, you can just ask the genies to create the content for you (call it “lamp-rubbing development”).

    -

    Paired with some skills we’ve developed, you can export your Metabase as YAML files, ask your agent to create new questions and dashboards YAML files, then import that new content into your Metabase. It’s a whole new way to work with Metabase.

    +

    Give an agent the Metabase CLI, and it can create content for you. But since LLMs can be unpredictable, we recommend developing content in a dev instance of Metabase, then using Remote Sync to get your changes into production.

    -

    The agent-driven development toolkit

    +

    With this set up, a typical workflow using an agent with a development instance of Metabase would be:

    -

    To develop your Metabase content on your local filesystem, we’ve put together a set of tools, including a set of agent skills.

    - -
      -
    • Metabase Representation Format: the YAML schema and spec for every Metabase entity (questions, dashboards, collections, transforms, and so on).
    • -
    • Metabase Database Metadata Format: diff-friendly representations of synced databases, their tables, and their fields, as a tree of YAML files.
    • -
    • Export and Import CLI and API endpoints to move serialized content between your local files and Metabase.
    • -
    • Remote Sync (Optional): push content from a Read-write Metabase into a git repo, and pull it into a Read-only Metabase in production.
    • -
    +
      +
    1. Prompt the agent with /metabase-cli Create a dashboard based on the sales table.
    2. +
    3. Agent creates questions and a dashboard.
    4. +
    5. View the dashboard in your dev instance.
    6. +
    7. Iterate either in your Metabase or via the agent until you’re happy with the dashboard.
    8. +
    9. Use Remote Sync to push your changes to a repo.
    10. +
    11. Create a PR.
    12. +
    13. Merge the changes.
    14. +
    15. Once merged, your production Metabase pulls in the changes via Remote Sync.
    16. +
    -

    How content moves between files and Metabase

    +

    The agent-driven development toolkit

    -

    You’ll need a way to get YAML files out of Metabase to edit and back into Metabase to verify and ship. There are two options:

    +

    To develop your Metabase content with an agent, we’ve put together a set of tools.

      -
    • Remote Sync — push and pull from inside Metabase. Requires a Read-write development instance and a Read-only production instance.
    • -
    • Serialization APIcurl-based export and import against the /api/ee/serialization/ endpoints.
    • +
    • A Metabase instance to use for development.
    • +
    • Metabase CLI: a command-line client (mb) your agent uses to create content directly in your Metabase. Use the CLI with the /metabase-cli skill.
    • +
    • Metabase Representation Format: the YAML schema and spec for every Metabase entity (questions, dashboards, collections, transforms, and so on). This is the format your content takes once you version it as files.
    • +
    • Remote Sync: push content from a Read-write Metabase into a git repo, and pull it into a Read-only Metabase in production.
    -

    Pick one before you start the Initial setup; the setup steps differ slightly (Remote Sync doesn’t need a separate API key in production).

    -

    Initial setup

    Some things to put into place to get a workflow going:

    @@ -6247,11 +6358,11 @@

    Initial setup

    1. Set up a development Metabase
    2. Set up a repository to version your YAML files
    3. -
    4. Add agent skills to your repository
    5. -
    6. Download the database metadata
    7. +
    8. Install and authenticate the Metabase CLI
    9. +
    10. Add the agent skill
    -

    Once you have these set up, you can step through one of the example workflows.

    +

    Once you have these set up, you can step through the example workflow.

    Set up a development Metabase

    @@ -6260,7 +6371,7 @@

    Set up a development Metabase

    Set up a Metabase instance to check your work before pushing changes to production. This Metabase should connect to the same data warehouse(s) your production Metabase connects to. A config file will come in handy here.

  • -

    Create an API key and assign it to the Admin group. The skills export and import all content and read database metadata, so they need Admin-level access. If you’re using the Serialization API workflow, you’ll also need to create an API key in your production Metabase so you can import your files into it.

    +

    Create an API key in this development Metabase and assign it to the Admin group, so the agent can create content and work with Remote Sync.

  • We also recommend turning off the sample content and usage analytics, so they don’t pollute the data model. If you’re using a docker compose file, add these environment variables:

    @@ -6273,67 +6384,47 @@

    Set up a development Metabase

    Set up a repository to version your YAML files

    -
      -
    1. Initialize a new repo.
    2. -
    3. Add a .gitignore file and add .metabase/ and .env.
    4. -
    5. Add the following to your .env:
    6. -
    - -
       METABASE_URL={your-metabase-url}
    -   METABASE_API_KEY={your-api-key}
    -
    - -

    Add agent skills to your repository

    +

    Create a new git repository for your Metabase content. You’ll point Remote Sync at this repo when you configure it, and clone the repo locally to review changes and open pull requests.

    -

    You should add the following skills to your agent so it has context it needs. If you commit the skills into .claude/skills/ in your repo, for example, Claude loads them automatically whenever you run it from that directory.

    +

    Install and authenticate the Metabase CLI

    - - -

    Download the database metadata

    +

    Install the Metabase CLI globally:

    -

    Invoke the metabase-database-metadata skill and ask your agent to fetch the database metadata. The agent will:

    - -
      -
    • Check that .env exists. If it doesn’t, the agent will prompt you to create it.
    • -
    • Verify that .env and .metabase/ are in .gitignore, asking before adding them.
    • -
    • Fetch /api/database/metadata into .metabase/metadata.json (raw API response; can be several GB on large warehouses).
    • -
    • Extract a diff-friendly YAML tree to .metabase/databases/<database>/schemas/<schema>/tables/<table>.yaml by running npx @metabase/database-metadata extract-metadata.
    • -
    +
    npm install -g @metabase/cli
    +
    -

    The agent can use the YAML extracted to your .metabase directory while creating and editing new questions and dashboards in YAML. That way your agent can refer to real column names, field types, and foreign-key relationships without making live API calls (which would be much slower).

    +

    Then authenticate it against your development Metabase:

    -

    To refresh this database metadata, just ask your agent to re-fetch it.

    +
    mb auth login --url your-metabase-url-here
    +
    -

    Example workflows

    +

    Authenticate with the API key you created in your Metabase instance.

    -

    The workflows below both assume you’ve completed the Initial setup.

    +

    Add the agent skill

    -

    Example prompts

    +

    Add the /metabase-cli skill to your agent so it knows how to use the CLI to create content directly in your Metabase.

    -

    Once your repo has the agent skills and a baseline of content, prompt the agent with a structured request:

    +

    Example prompts

    -
    Use the metabase-representation-format and metabase-database-metadata skills to create new YAML files in this directory:
    +

    These examples assume you’ve completed the Initial setup. Run the /metabase-cli skill and give the agent a structured request. The agent will run CLI commands to create the content directly in your development Metabase:

    -1. Create a new dashboard called "Support overview" in collections/main/. -2. Add questions showing total ticket volume, open tickets, and average satisfaction rating. +
    /metabase-cli Create a new dashboard called "Support overview". Add questions showing total ticket volume, open tickets, and average satisfaction rating.
     

    Or, depending on how capable your model is, try a more open-ended request:

    -
    Use the metabase-representation-format and metabase-database-metadata skills to analyze our support data. Look at the tickets, customers, and interactions tables, and create a dashboard that gives an overview of our team's support workload.
    +
    /metabase-cli Analyze our support data. Look at the tickets, customers, and interactions tables, and build a dashboard that gives an overview of our team's support workload.
     
    -

    The agent will read the representation format spec, check existing files for local conventions, consult .metabase/databases/ for real column names, and write new YAML.

    +

    The agent writes the CLI commands and creates the questions and dashboard for you—just describe what you want.

    -

    Example workflow with Remote Sync

    +

    Example workflow

    -

    1. Configure Remote Sync on both instances

    +

    1. Configure Remote Sync on both Metabase instances

    -

    In your development Metabase, configure Remote Sync in Read-write mode pointed at your repo. In production, configure a second Metabase in Read-only mode pointed at the same repo.

    +

    In your development Metabase, configure Remote Sync in Read-write mode pointed at your repo.

    + +

    Set up Remote Sync in your production Metabase in Read-only mode pointed at the same repo.

    2. Create a branch from the Metabase UI

    @@ -6341,207 +6432,43 @@

    2. Create a branch from the Meta

    In your development Metabase, click the branch dropdown at the top and create a new branch for your work, like feature/support-dashboard.

    -

    3. Push existing content to seed the repo

    - -

    Click the up arrow (push) icon to commit and push your existing synced collections to the branch.

    - -

    4. Clone the repo locally and check out the branch

    - -
    git clone your-metabase-repo
    -cd your-metabase-repo
    -git checkout feature/support-dashboard
    -
    - -

    5. Ask the agent to edit or create content

    - -

    See Example prompts above for prompt patterns to use here.

    - -

    6. Validate the YAML files

    - -

    Run the schema check after every batch of edits, and optionally run the semantic check at the end of the session. See Validating YAML files below.

    - -

    If anything fails, the agent should be able to fix the issue if you give it the error.

    - -

    7. Commit and open a pull request

    - -
    git add -A
    -git commit -m "Add support-overview dashboard"
    -git push origin feature/support-dashboard
    -
    - -

    Open a pull request so your team can review the YAML diff.

    - -

    8. Pull the branch into your development Metabase

    - -

    Click the pull (down arrow) icon in your development Metabase to load the agent’s changes. Verify the dashboard renders correctly and the questions return expected results.

    - -

    9. Merge the PR so production picks up the changes

    - -

    If you’ve enabled auto-sync, your production Metabase (in Read-only mode) will pull the new main branch automatically on its next interval. Otherwise, trigger a pull from production manually.

    - -

    Example workflow with import and export endpoints

    - -

    1. Clone the empty repo and create a branch

    - -
    git clone https://github.com/your-org/your-repo.git
    -cd your-repo
    -git checkout -b feature/support-dashboard
    -
    - -

    2. Export existing content to seed the repo

    - -

    The agent does better work when the repo already holds your current Metabase content, so it can see real examples of the Representation Format and your collection conventions. Run the serialization export from inside the clone:

    - -
    curl \
    -  -H 'X-API-Key: YOUR_API_KEY' \
    -  -X POST 'https://your-metabase-url/api/ee/serialization/export?data_model=false' \
    -  -o metabase_data.tgz
    -tar -xzf metabase_data.tgz
    -
    - -

    Set data_model=false to keep the export small. The agent should get its metadata from the metabase-database-metadata skill instead. For more on export options, see Serialization.

    +

    3. Ask the agent to create content

    -

    Commit the extracted YAML so you have a baseline to revert to if the agent goes off the rails.

    +

    Run the /metabase-cli skill and prompt the agent to build your questions and dashboards. The agent creates the content directly in your development Metabase.

    -

    3. Ask the agent to edit or create content

    +

    4. Verify the content in your development Metabase

    -

    See Example prompts above for prompt patterns to use here.

    +

    Open your development Metabase and confirm the dashboard renders correctly and the questions return expected results. Make any changes you want, either in the UI or via the agent.

    -

    4. Validate the YAML files

    +

    5. If you make any changes in your Metabase, push the new content to the branch

    -

    Run the schema check after every batch of edits, and optionally run the semantic check at the end of the session. See Validating YAML files below.

    +

    To commit the work, push the change from your Metabase. If you don’t push your changes from your Metabase to your repo, you could lose work the next time you pull changes into that Metabase.

    -

    5. Commit and open a pull request

    +

    6. Open a pull request

    -
    git add -A
    -git commit -m "Add support-overview dashboard"
    -git push origin feature/support-dashboard
    -
    - -

    Then open open a pull request so your team can review the YAML diff.

    - -

    6. Import the YAML into your development Metabase

    - -

    Re-bundle the YAML and import it:

    - -
    tar -czf metabase_data.tgz metabase_data
    -curl -X POST \
    -  -H 'X-API-Key: YOUR_API_KEY' \
    -  -F 'file=@metabase_data.tgz' \
    -  'https://your-metabase-url/api/ee/serialization/import' \
    -  -o -
    -
    - -

    The -o - flag writes the import response to stdout, so you can see whether the import succeeded and check any warnings. You can ask the agent to generate export.sh and import.sh wrappers so you’re running a single command each time.

    - -

    Verify the dashboard renders correctly and the questions return expected results.

    +

    Open a pull request so your team can review the YAML diff. They can also use Remote Sync to pull the branch into a development Metabase and see the changes live.

    -

    7. Repeat the import against production

    +

    7. Merge the PR so production picks up the changes

    -

    Once you’re confident in the changes, run the same tar + curl import against your production Metabase, using its API key.

    +

    If you’ve enabled auto-sync, your production Metabase (in Read-only mode) will pull the new main branch automatically on its next interval.

    Undoing the agent’s changes

    -

    If you want to undo the agent’s changes, use git to revert your YAML files to the last known-good commit before pushing or re-importing.

    - -

    If you’re using Remote Sync, don’t try to fix things by re-pushing from Metabase: Metabase’s push only reflects its current state and won’t delete any new files the agent created locally.

    - -

    Validating YAML files

    - -

    Run both checks locally before pushing. The same checks belong in CI — see CI example below.

    - -

    Schema check

    - -

    You can run a quick schema check:

    - -
    npx --yes @metabase/representations validate-schema
    -
    - -

    The check validates the shape of every YAML file against the Representation Format spec. The metabase-representation-format skill should run this check for you automatically after the agent makes any edits.

    - -

    Semantic checker for deeper validation

    - -
    -

    The semantic checker is only available in the Pro/Enterprise plans.

    -
    - -

    The semantic checker catches things like references to tables that don’t exist or columns the agent invented.

    - -

    What it validates beyond schema:

    +

    Since the agent uses the CLI to create content directly in Metabase, to undo changes, you could either:

      -
    • Cross-entity references: collection_id, dashboard_id, parent_id, snippet names, transform tags, card embeddings.
    • -
    • MBQL query compilation: source-table, field references, joins, segments, measures, expressions.
    • -
    • Native-query references: tables, columns, and snippets named in SQL.
    • +
    • Revert to a commit and pull changes: Revert to a previous commit, and pull that commit into your Metabase. Pulling that commit would overwrite any changes you or the agent had made.
    • +
    • Update Metabase and push changes: Edit or archive the content in your Metabase (either manually or via an agent with the CLI), and push the changes to your repo. You may want to pick this approach if you want to keep some, but not all of the changes made by the AI, or if you’ve made additional changes via Metabase’s handy UI that you want to keep.
    -

    If you’ve installed the metabase-semantic-checker skill, just ask the agent to run the semantic checker; the skill picks the right image, passes the right flags, and summarizes the findings.

    - -

    You can manually run the semantic checker via Docker like so:

    - -
    docker pull metabase/metabase-enterprise:latest
    -
    -docker run --rm \
    -  -v "$PWD:/workspace" \
    -  --entrypoint "" \
    -  -w /app \
    -  metabase/metabase-enterprise:latest \
    -  java -jar metabase.jar \
    -    --mode checker \
    -    --export /workspace \
    -    --schema-dir /workspace/.metabase/metadata.json \
    -    --schema-format concise
    -
    - -

    Match the image tag (:latest) to your Metabase build.

    - -

    CI example

    - -

    You can hook the schema check into GitHub Actions so your team catches problems on the PR, before anyone pulls the changes into Metabase:

    - -
    # .github/workflows/schema-check.yml
    -name: Schema Check
    -
    -on:
    -  push:
    -    branches: [main]
    -  pull_request:
    -
    -jobs:
    -  schema-check:
    -    runs-on: ubuntu-latest
    -    steps:
    -      - uses: actions/checkout@v4
    -
    -      - uses: actions/setup-node@v4
    -        with:
    -          node-version: "20"
    -
    -      - name: Validate representation YAML files
    -        run: npx --yes @metabase/representations validate-schema
    -
    - -

    For the semantic check, add a second workflow that fetches .metabase/metadata.json from your Metabase and then runs the Docker command above against the checkout. If you run the semantic check in more than one workflow (for example, a semantic check and per-PR preview environments), you should probably factor the database metadata fetch to run and cache once a day so you don’t hit the API on every push.

    - -

    Deleting content

    - -

    Since imports and exports don’t delete content, you’ll need to delete content in the Metabase application itself, then update the YAML files as well.

    - -
      -
    1. Delete the content in your production Metabase (in the app’s UI).
    2. -
    3. Push (with Remote Sync) or re-export (without) so the change is reflected in the repo.
    4. -
    5. Commit the deletion. That way Metabase won’t recreate the deleted items the next time it pulls.
    6. -
    -

    Further reading

    diff --git a/_site/docs/latest/ai/mcp.html b/_site/docs/latest/ai/mcp.html index a4a20bb17f..00ba1125e6 100644 --- a/_site/docs/latest/ai/mcp.html +++ b/_site/docs/latest/ai/mcp.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6283,17 +6392,30 @@

      Available tools

      Some clients (like Claude Desktop) will ask you to approve each tool the first time it’s used. The MCP server builds on Metabase’s Agent API, and exposes the following tools. If you’re building a custom integration and need full control, use the Agent API directly instead.

      +

      Discovery and reading

      +
        -
      • search: Find tables and metrics using keyword or natural language search.
      • -
      • get_table: Get details about a table, including its fields, related tables, and metrics.
      • -
      • get_table_field_values: Get sample values and statistics for a field in a table.
      • -
      • get_metric: Get details about a metric, including its queryable dimensions.
      • -
      • get_metric_field_values: Get sample values and statistics for a field in a metric.
      • -
      • construct_query: Construct a query against a table or metric. Returns an opaque query string that can be executed with execute_query.
      • -
      • execute_query: Execute a previously constructed query and return the results with column metadata, row count, and execution time.
      • +
      • search: Find tables, metrics, cards, dashboards, and collections using keyword or natural language search.
      • +
      • read_resource: Read one or more Metabase entities by metabase:// URI. Covers database / schema / table / collection / card / dashboard / metric / transform navigation in a single tool. Up to 5 URIs per call.
      • +
      + +

      Query construction and execution

      + +
        +
      • construct_query: Construct a query against a table or metric. Returns an opaque query handle that can be passed to execute_query.
      • query: Query a table or metric and return results.
      • -
      • create_question: Create questions.
      • -
      • create_dashboard: Create dashboards.
      • +
      • execute_query: Execute a previously constructed query and return the results with column metadata, row count, and execution time.
      • +
      • execute_sql: Execute a raw SQL query against a database. Requires native-query permission on the target database. An admin can disable this tool instance-wide via the mcp-execute-sql-enabled setting.
      • +
      + +

      Writing

      + +
        +
      • create_question: Save a query as a named question (card).
      • +
      • update_question: Update a saved question. Setting collection_id moves the card to another collection.
      • +
      • create_dashboard: Create a new dashboard, optionally populated with saved questions.
      • +
      • update_dashboard: Update a dashboard’s metadata (name, description, collection, archived).
      • +
      • create_collection: Create a new collection, optionally nested under a parent collection.

      Use the MCP server with file-based development

      diff --git a/_site/docs/latest/ai/metabot-slack.html b/_site/docs/latest/ai/metabot-slack.html index b61e7953bf..47da32b8c1 100644 --- a/_site/docs/latest/ai/metabot-slack.html +++ b/_site/docs/latest/ai/metabot-slack.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
      Learn
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/change-region.html b/_site/docs/latest/cloud/change-region.html index 3d03d4fbce..470546cb20 100644 --- a/_site/docs/latest/cloud/change-region.html +++ b/_site/docs/latest/cloud/change-region.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/cloud-vs-self-hosting.html b/_site/docs/latest/cloud/cloud-vs-self-hosting.html index 380ef0c620..4170ee4121 100644 --- a/_site/docs/latest/cloud/cloud-vs-self-hosting.html +++ b/_site/docs/latest/cloud/cloud-vs-self-hosting.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/custom-domain.html b/_site/docs/latest/cloud/custom-domain.html index e713a6a52e..16eaa37606 100644 --- a/_site/docs/latest/cloud/custom-domain.html +++ b/_site/docs/latest/cloud/custom-domain.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/google-sheets.html b/_site/docs/latest/cloud/google-sheets.html index e875433d4b..c9735ccf41 100644 --- a/_site/docs/latest/cloud/google-sheets.html +++ b/_site/docs/latest/cloud/google-sheets.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/how-billing-works.html b/_site/docs/latest/cloud/how-billing-works.html index fa30a9224c..f904da8381 100644 --- a/_site/docs/latest/cloud/how-billing-works.html +++ b/_site/docs/latest/cloud/how-billing-works.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/ip-addresses-to-whitelist.html b/_site/docs/latest/cloud/ip-addresses-to-whitelist.html index dcff574520..3b4e3ea06d 100644 --- a/_site/docs/latest/cloud/ip-addresses-to-whitelist.html +++ b/_site/docs/latest/cloud/ip-addresses-to-whitelist.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/limitations.html b/_site/docs/latest/cloud/limitations.html index 0f5e044d1f..56fa2c8a89 100644 --- a/_site/docs/latest/cloud/limitations.html +++ b/_site/docs/latest/cloud/limitations.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/migrate/cloud-to-self-hosted.html b/_site/docs/latest/cloud/migrate/cloud-to-self-hosted.html index 86bee53923..fce3cf7ee7 100644 --- a/_site/docs/latest/cloud/migrate/cloud-to-self-hosted.html +++ b/_site/docs/latest/cloud/migrate/cloud-to-self-hosted.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/migrate/guide-pre-50.html b/_site/docs/latest/cloud/migrate/guide-pre-50.html index 54a5e749db..d63668eba6 100644 --- a/_site/docs/latest/cloud/migrate/guide-pre-50.html +++ b/_site/docs/latest/cloud/migrate/guide-pre-50.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/migrate/guide.html b/_site/docs/latest/cloud/migrate/guide.html index 2e0a7ccff5..5b42b5c2f1 100644 --- a/_site/docs/latest/cloud/migrate/guide.html +++ b/_site/docs/latest/cloud/migrate/guide.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/migrate/heroku.html b/_site/docs/latest/cloud/migrate/heroku.html index d9f35cc7e2..9c92bb684c 100644 --- a/_site/docs/latest/cloud/migrate/heroku.html +++ b/_site/docs/latest/cloud/migrate/heroku.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/start.html b/_site/docs/latest/cloud/start.html index a6bed44af1..a7edfb407f 100644 --- a/_site/docs/latest/cloud/start.html +++ b/_site/docs/latest/cloud/start.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/cloud/storage.html b/_site/docs/latest/cloud/storage.html index 49b5f89f3f..60f7782868 100644 --- a/_site/docs/latest/cloud/storage.html +++ b/_site/docs/latest/cloud/storage.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 diff --git a/_site/docs/latest/configuring-metabase/appearance.html b/_site/docs/latest/configuring-metabase/appearance.html index e1d4e1b9f0..21a4e37b1d 100644 --- a/_site/docs/latest/configuring-metabase/appearance.html +++ b/_site/docs/latest/configuring-metabase/appearance.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    -
    @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6267,6 +6376,28 @@

      MB_AI_USAGE_MAX_RETENTION_DAYS

      + +
      + +

      Number of days to retain rows in the ai_usage_log, metabot_conversation, and metabot_message tables. Minimum value is 30; set to 0 to retain data indefinitely.

      + +

      Sets the maximum number of days Metabase preserves rows for the following application database tables:

      + +
        +
      • ai_usage_log
      • +
      • metabot_conversation
      • +
      • metabot_message
      • +
      + +

      Once a day, Metabase deletes rows older than this threshold. The minimum value is 30 days (Metabase will treat entered values of 1 to 29 the same as 30). +If set to 0, Metabase will keep all rows.

      +

      MB_ALLOWED_IFRAME_HOSTS

        @@ -6299,8 +6430,34 @@

        MB_CSP_IMG_ENABLED

        + + + +

        When on, the browser Content Security Policy restricts img-src so images can only load from this Metabase instance and the domains listed in MB_CSP_IMG_ALLOWED_HOSTS. Must be turned on to enable Custom Visualizations.

        + +

        MB_CSP_IMG_ALLOWED_HOSTS

        + + + +

        Comma-separated list of domains that images can load from in dashboard text cards, entity descriptions, and custom visualizations when MB_CSP_IMG_ENABLED is on. Empty by default, which restricts images to those hosted by your Metabase instance. See Allowed domains for images.

        +

        MB_ANALYTICS_PII_RETENTION_ENABLED

        +
        +

        Only available on Metabase Pro and Enterprise plans.

        +
        +
        • Type: boolean
        • Default: false
        • @@ -6308,7 +6465,7 @@

          Configuration file name: analytics-pii-retention-enabled

        -

        Enable logging of embed path, query parameters, user agent, and IP address of who views your internal data and embeds. This information will be shown in your usage analytics.

        +

        Enable logging of embed path, query parameters, user agent, IP address, and Metabot conversation metadata for users of your internal data and embeds. This information will be shown in your usage analytics.

        MB_ANON_TRACKING_ENABLED

        @@ -6636,6 +6793,21 @@

        MB_CUSTOM_VIZ_ENABLED

        + +
        +

        Only available on Metabase Pro and Enterprise plans.

        +
        + + + +

        Should custom visualizations be enabled for this instance?

        +

        MB_DASHBOARDS_SAVE_LAST_USED_PARAMETERS

          @@ -6687,6 +6859,15 @@

          MB_DISABLE_AUTO_SYNC

          + +
            +
          • Type: boolean
          • +
          • Default: false
          • +
          + +

          When true, suppresses automatically-triggered syncs: the scheduled sync-and-analyze and update-field-values jobs do not run (and new triggers are not registered), and adding a new database does not kick off an initial sync. Syncs originating from an explicit request — the Sync-now REST endpoints, or a transform finalizing its output table — are unaffected. For deployments that load database metadata from disk at startup and should not have Metabase re-discover it.

          +

          MB_DISABLE_CORS_ON_LOCALHOST

          -

          Enter a URL of the landing page to show the user. This overrides the custom homepage setting above.

          +

          Enter a relative URL like /dashboard/1 or /collection/2.

          MB_LANDING_PAGE_ILLUSTRATION

          @@ -8907,6 +9088,22 @@

          MB_TRANSFORM_RUN_JOB_SQL_CONCURRENCY

          + +
          +

          Only available on Metabase Pro and Enterprise plans.

          +
          + +
            +
          • Type: integer
          • +
          • Default: 3
          • +
          + +

          Maximum number of SQL-backed transforms a single transform-job run may execute in parallel.

          + +

          This setting is only configurable on instances with the transforms add-on; OSS + deployments without the add-on always use the default.

          +

          MB_TRANSFORM_TIMEOUT

          @@ -8922,7 +9119,9 @@

          Controls the timeout for transform runs, including the queries they execute. This takes precedence over MB_DB_QUERY_TIMEOUT_MINUTES for queries executed inside a transform, so transforms can run longer than regular - Metabase queries.

          + Metabase queries. Enforced per-statement via Statement.setQueryTimeout; transforms also use a separate JDBC + connection pool whose c3p0 leak-detector tolerates this longer runtime, so non-transform connections continue to + use the shorter MB_DB_QUERY_TIMEOUT_MINUTES leak-detector.

          MB_TRANSFORMS_ENABLED

          @@ -9040,6 +9239,26 @@

          MAX_

          Also see the Changing session expiration documentation page.

          +

          MB_APPLICATION_DB_IDLE_CONNECTION_TEST_PERIOD_SECONDS

          + +

          Type: integer
          +Default: 60
          +Since: v62.0

          + +

          How often, in seconds, to test idle connections in the application database pool. Set to 0 to disable idle connection testing.

          + +

          MB_APPLICATION_DB_MAX_CONNECTION_AGE_SECONDS

          + +

          Type: integer
          +Default: 3600
          +Since: v62.0

          + +

          Maximum lifetime, in seconds, of a connection in the application database pool. After this duration the connection is closed and a new one is opened. Set to 0 to keep connections until the database closes them.

          + +

          The default of one hour is set primarily to limit memory growth (especially on PostgreSQL).

          + +

          If you are connecting with a short-lived credential (e.g. an AWS RDS IAM auth token) baked into the URL or password at startup, setting this to 0 is a partial workaround — eventual reconnects from the database or the network will still fail. Prefer MB_DB_AWS_IAM (AWS RDS / Aurora) or MB_DB_AZURE_MANAGED_IDENTITY_CLIENT_ID (Azure).

          +

          MB_APPLICATION_DB_MAX_CONNECTION_POOL_SIZE

          Type: integer
          @@ -9054,6 +9273,30 @@

          MB_JDBC_DATA_WAREHOUSE_MAX_CONNECTION_POOL_SIZE for setting maximum connections to the databases connected to Metabase.

          +

          MB_APPLICATION_DB_MAX_IDLE_TIME_EXCESS_CONNECTIONS_SECONDS

          + +

          Type: integer
          +Default: 600
          +Since: v62.0

          + +

          How long, in seconds, an idle connection beyond the minimum pool size may stay open before being culled. Set to 0 to never cull excess idle connections.

          + +

          MB_APPLICATION_DB_TEST_CONNECTION_ON_CHECKOUT

          + +

          Type: boolean
          +Default: false
          +Since: v62.0

          + +

          When true, each connection is validated when checked out of the pool. Adds latency to every checkout. Useful when credentials may invalidate connections behind the pool’s back.

          + +

          MB_APPLICATION_DB_UNRETURNED_CONNECTION_TIMEOUT_SECONDS

          + +

          Type: integer
          +Default: 3600
          +Since: v62.0

          + +

          How long, in seconds, before a checked-out but unreturned connection is forcibly reclaimed. The legacy name MB_APPLICATION_DB_UNRETURNED_CONNECTION_TIMEOUT continues to work; the suffixed form is preferred.

          +

          MB_ASYNC_QUERY_THREAD_POOL_SIZE

          Type: integer
          @@ -9083,6 +9326,28 @@

          MB

          When set to false, Metabase will print migrations needed to be done in the application database and exit. Those migrations need to be applied manually. When true, Metabase will automatically make changes to the application database. This is not related to migrating away from H2.

          +

          MB_DB_AWS_IAM

          + +

          Type: boolean
          +Default: false
          +Since: v0.58.0

          + +

          When true, authenticate to the application database (PostgreSQL or MySQL/MariaDB on AWS RDS or Aurora) using AWS IAM instead of a password. Omit MB_DB_PASS. Auth tokens are refreshed automatically.

          + +

          Requires that AWS credentials are available via the standard credential chain (e.g. EKS IRSA, EC2 instance profile, ECS task role, or AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY), that the credentials hold the rds-db:connect permission for your database user, and that the DB user is set up for IAM authentication.

          + +

          For MySQL/MariaDB, also set MB_DB_SSL_CERT, or pass the SSL parameters in MB_DB_CONNECTION_URI.

          + +

          MB_DB_AZURE_MANAGED_IDENTITY_CLIENT_ID

          + +

          Type: string
          +Default: null
          +Since: v0.51.0

          + +

          Authenticate to a PostgreSQL or MySQL application database using an Azure Managed Identity instead of a password. Set this to the client ID of a user-assigned Managed Identity attached to your compute resource. Omit MB_DB_PASS. Access tokens are refreshed automatically.

          + +

          Requires the Database authentication providers Pro/Enterprise feature.

          +

          MB_DB_CONNECTION_URI

          Type: string
          @@ -9145,6 +9410,19 @@

          MB_DB_POR

          The port for MB_DB_HOST.

          +

          MB_DB_SSL_CERT

          + +

          Type: string
          +Default: null
          +Since: v0.58.0

          + +

          SSL configuration for the application database. Used with MB_DB_AWS_IAM on MySQL/MariaDB, where SSL is required.

          + +
            +
          • "trust" — trust the server certificate without validation.
          • +
          • A filesystem path to a PEM file — validate against the supplied CA certificate.
          • +
          +

          MB_DB_TYPE

          Type: string ("h2", "postgres", "mysql")
          @@ -9405,7 +9683,7 @@

          MB_NS_TR

          MB_PASSWORD_COMPLEXITY

          -

          Type: string ("weak", "normal", "strong")
          +

          Type: string ("weak", "normal", "strong", "strong-enough")
          Default: "normal"

          Enforce a password complexity rule to increase security for regular logins. This only applies to new users or users that are changing their password. Related MB_PASSWORD_LENGTH

          @@ -9414,6 +9692,7 @@

          weak no character constraints
        • normal at least 1 digit
        • strong minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character
        • +
        • strong-enough minimum 15 characters

        MB_PASSWORD_LENGTH

        @@ -9432,6 +9711,15 @@

        MB_PL

        The location is where custom third-party drivers should be added. Then Metabase will load the driver on startup, which can be verified in the log.

        +

        MB_PROMETHEUS_SERVER_PORT

        + +

        Type: integer
        +Default: null

        + +

        Port to serve Prometheus metrics from. If set, Prometheus collectors are registered and served from localhost:<port>/metrics.

        + +

        See Observability with Prometheus.

        +

        MB_QP_CACHE_BACKEND

        Type: string
        diff --git a/_site/docs/latest/configuring-metabase/fonts.html b/_site/docs/latest/configuring-metabase/fonts.html index b756795d0e..ae780614b1 100644 --- a/_site/docs/latest/configuring-metabase/fonts.html +++ b/_site/docs/latest/configuring-metabase/fonts.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@

        Learn

    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • 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 - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1814,9 +1858,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1830,6 +1913,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • + + + + + + + + + + + + + + + + + + + + +
    FieldDescription
    nameUnique identifier for the plugin. Metabase registers your visualization under this name and uses it to match replacement bundles.
    iconPath to the visualization icon (SVG recommended). Metabase serves the icon automatically. It’s the only file Metabase serves alongside your bundle. See Bundling assets.
    metabase.versionSemver range of Metabase versions the plugin supports (for example, ">=1.62.0", "^1.62", ">=1.62 <1.64").
    + +

    Defining a visualization

    + +

    src/index.tsx exports a factory function. Metabase calls the function with two helpers: defineSetting (for declaring settings) and the current locale. The factory function should return the result of defineConfig, which wraps your VisualizationComponent.

    + +
    import {
    +  defineConfig,
    +  type CreateCustomVisualization,
    +  type CustomVisualizationProps,
    +} from "@metabase/custom-viz";
    +
    +type Settings = {
    +  threshold?: number;
    +};
    +
    +const createVisualization: CreateCustomVisualization<Settings> = ({
    +  defineSetting,
    +  locale,
    +}) => {
    +  const VisualizationComponent = ({
    +    series,
    +    settings,
    +    width,
    +    height,
    +  }: CustomVisualizationProps<Settings>) => {
    +    // Render your visualization with React
    +    return <div>{/* ... */}</div>;
    +  };
    +
    +  return defineConfig<Settings>({
    +    id: "my-viz",
    +    getName: () => "My visualization",
    +    minSize: { width: 2, height: 2 },
    +    defaultSize: { width: 6, height: 4 },
    +    checkRenderable(series, settings) {
    +      // Throw if the visualization can't render with this data or these settings
    +      if (series.length === 0) {
    +        throw new Error("No data");
    +      }
    +    },
    +    settings: {
    +      threshold: defineSetting({
    +        id: "threshold",
    +        title: "Threshold",
    +        widget: "number",
    +      }),
    +    },
    +    VisualizationComponent,
    +  });
    +};
    +
    +export default createVisualization;
    +
    + +

    Visualization definition properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyTypeDescription
    idstringIdentifier for the visualization definition.
    getName()() => stringDisplay name for the visualization.
    minSize{ width, height }Minimum size on a dashboard grid.
    defaultSize{ width, height }Default size on a dashboard grid.
    noHeaderbooleanWhen true, hides the default card title and description header.
    canSavePngbooleanSet to true to enable PNG export of the live, interactive chart. Disabled by default.
    checkRenderable(series, settings) => voidLet people know the chart doesn’t work with the current data or settings.
    settingsRecord<string, SettingDefinition>Map of setting definitions created with defineSetting().
    VisualizationComponentReact.ComponentTypeThe interactive React component that renders the visualization in questions and dashboards.
    + +

    Props passed to your component

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropTypeDescription
    seriesSeriesQuery results — an array of series; each has data.rows and data.cols.
    settingsCustomVisualizationSettings<TSettings>The resolved visualization settings.
    widthnumber \| nullContainer width in pixels. null until the first measure — render null to avoid a flash.
    heightnumber \| nullContainer height in pixels. null until the first measure.
    colorScheme"light" \| "dark"Metabase’s current color scheme.
    onClick(clickObject) => voidCall to trigger drill-through actions on a data point.
    onHover(hoverObject?) => voidCall to show a tooltip on a data point.
    + +

    Handling query results

    + +

    series is an array of result sets, with one entry per series on the chart. A single question produces one entry; a dashboard card with multiple series produces several entries. Each entry has a data object:

    + +
      +
    • data.rows: an array of rows; each row is an array of cell values in column order. Row order is preserved, so when you map rows to chart points one-to-one, a point’s index maps straight back to data.rows[i]. Useful for grabbing the whole row, not just the clicked cell.
    • +
    • data.cols: an array of column objects describing each value. The fields you’ll reach for most: name (database column name), display_name (label shown in the UI), base_type (Metabase type, for example "type/Integer"), and semantic_type (for example "type/Currency" or "type/Latitude").
    • +
    + +
    const [{ data }] = series;
    +const total = data.rows.reduce((sum, [value]) => sum + Number(value), 0);
    +
    + +

    To classify a column without matching type strings by hand, use the column-type predicates the SDK exports: isNumeric, isDate, isString, isBoolean, isCurrency, isLatitude, isCoordinate, isFK, isPK, isCategory, isURL. These predicates take a Column and resolve type metadata from the host, so they only work inside a running Metabase. See Formatting and theming.

    + +
    import { isNumeric } from "@metabase/custom-viz";
    +
    +const numericColumns = data.cols.filter(isNumeric);
    +
    + +

    Clicks and tooltips

    + +

    Your component receives onClick and onHover. Call them with an object that identifies the data point being interacted with. Metabase positions popovers from it, and for clicks it offers the matching drill-through actions (filter by this value, view these rows, and so on).

    + +
    <rect
    +  onClick={(event) =>
    +    onClick({
    +      value: row[1],
    +      column: cols[1],
    +      dimensions: [{ value: row[0], column: cols[0] }],
    +      event: event.nativeEvent,
    +      element: event.currentTarget,
    +    })
    +  }
    +  onMouseMove={(event) =>
    +    onHover({
    +      element: event.currentTarget,
    +      data: cols.map((col, i) => ({
    +        col,
    +        value: row[i],
    +        key: col.display_name,
    +      })),
    +    })
    +  }
    +  onMouseLeave={() => onHover(null)}
    +/>
    +
    + +

    Pass null to onHover to dismiss the tooltip. onClick also takes an origin: { row, cols } when a drill-through needs the whole row, not just the clicked cell. It can take a data array of { col, value } pairs (one per column) when an action needs every column’s value. You can include settings (the current resolved settings) in the click object too, so dashboard click behaviors configured against your visualization have what they need.

    + +

    The hover object accepts more than element and data. Optional fields like index and seriesIndex (to highlight a series in the legend) and value, column, dimensions, and event (for a simpler single-point tooltip) are available when you need them.

    + +

    Settings and widgets

    + +

    Define settings with the defineSetting() helper. Each setting shows up in the visualization settings sidebar.

    + +
    settings: {
    +  threshold: defineSetting({
    +    id: "threshold",
    +    title: "Threshold",
    +    getSection: () => "Display",
    +    widget: "number",
    +    getDefault: () => 0,
    +    getProps: () => ({
    +      placeholder: "Enter threshold",
    +      options: { isNonNegative: true },
    +    }),
    +  }),
    +},
    +
    + +

    Setting definition properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyDescription
    idUnique key — has to match the key in your Settings type.
    titleLabel shown in the sidebar.
    getSection()Function returning the section the setting appears under (for example, "Data" or "Display").
    groupSub-heading within a section for grouping related settings.
    indexDisplay order within a group.
    inlineWhen true, renders the widget on the same line as title (handy for "toggle").
    widgetA built-in widget name, or a custom React component.
    getDefault(series, settings)Computes the default value when none is stored.
    getValue(series, settings)Always-computed value — overrides the stored value on every render.
    getProps(series, settings)Returns widget-specific props.
    isValid(series, settings)Return false to discard a stored value and fall back to getDefault.
    readDependenciesSetting IDs that have to resolve before this one.
    writeDependenciesSetting IDs whose current values are persisted when this setting changes.
    eraseDependenciesSetting IDs reset to null when this setting changes.
    persistDefaultWhen true, writes the value from getDefault to stored settings on first render.
    + +

    Built-in widgets

    + +

    Widgets for the settings UI.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    WidgetgetProps() return typeDescription
    "input"{ placeholder? }Text input
    "number"{ placeholder?, options?: { isInteger?, isNonNegative? } }Numeric input
    "toggle"(none — omit getProps)Boolean toggle
    "radio"{ options: { name, value }[] }Radio button group
    "select"{ options: { name, value }[], placeholder?, placeholderNoOptions? }Dropdown
    "segmentedControl"{ options: { name, value }[] }Segmented button control
    "color"{ title? }Color picker
    "multiselect"{ options: { label, value }[], placeholder?, placeholderNoOptions? }Multi-select dropdown
    "field"{ columns, options: { name, value }[], showColumnSetting? }Single column picker
    "fields"{ columns, options: { name, value }[], addAnother?, showColumnSetting? }Multi-column picker
    + +

    Custom widgets

    + +

    When the built-in widgets don’t fit, set widget to your own React component instead of a built-in name. Metabase renders the component in the settings sidebar, inside the same sandbox as your visualization. A widget that reaches for a blocked API is removed, so keep widgets to plain inputs and display.

    + +

    Metabase injects these props into your widget component (import the type with BaseWidgetProps<TValue, TSettings>):

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropTypeDescription
    idstringThe setting’s id.
    valueTValue \| undefinedThe setting’s current value.
    onChange(value?) => voidUpdate this setting’s value.
    onChangeSettings(settings) => voidUpdate other settings at the same time.
    + +

    Add any extra props your component needs with getProps(). Its return type is your component’s own props, minus the base props Metabase injects.

    + +
    import { defineConfig, type BaseWidgetProps } from "@metabase/custom-viz";
    +
    +type Settings = { label?: string };
    +
    +function LabelWidget({ value, onChange }: BaseWidgetProps<string, Settings>) {
    +  return (
    +    <input value={value ?? ""} onChange={(e) => onChange(e.target.value)} />
    +  );
    +}
    +
    +// ...in your visualization's settings:
    +settings: {
    +  label: defineSetting({
    +    id: "label",
    +    title: "Label",
    +    widget: LabelWidget,
    +  }),
    +},
    +
    + +

    Formatting and theming

    + +

    Render numbers, dates, and currencies the way the rest of Metabase does with formatValue. Pass the cell’s column to pick up that column’s formatting settings, or override with options like currency, decimals, compact, or date_style:

    + +
    import { formatValue } from "@metabase/custom-viz";
    +
    +formatValue(row[1], { column: cols[1] });
    +formatValue(0.084, { number_style: "percent", decimals: 1 }); // "8.4%"
    +
    + +

    formatValue and the column-type predicates (like isNumeric and isDate) read formatting and type metadata from Metabase. If you call them outside of Metabase, like in a unit test, they’ll throw Metabase Viz API not initialized.

    + +

    For layout math (like fitting labels or sizing axes), measureText(text, { size, family, weight }) returns { width, height } in pixels. There’s also measureTextWidth and measureTextHeight if you only need one dimension.

    + +

    To match Metabase’s look (and follow dark mode), you have two paths. For anything you render as DOM or SVG, you can style with Metabase’s CSS variables: var(--mb-color-brand) and the other --mb-color-* variables, and the theme follows automatically.

    + +

    Canvas-based charting libraries (like ECharts and Chart.js) can’t read CSS variables, so in those cases you branch on the colorScheme prop ("light" or "dark") and pass explicit colors. See the calendar-heatmap example for one built with ECharts.

    + +

    Bundling assets

    + +

    The build produces a single JavaScript bundle (dist/index.js), and the icon is the only file Metabase serves alongside it. Metabase doesn’t serve arbitrary static files, so bundling images into your plugin is the most reliable approach. The sandbox blocks scripted network access like fetch and XMLHttpRequest, but it doesn’t stop the browser from loading an <img> or CSS url(): an external image still loads as long as its domain is allowed by the image-domains Content Security Policy (see below).

    + +

    Bundled images always render, including when an admin has turned on Restrict image domains. That Content Security Policy setting limits which external hosts images can load from, but inline and data: images ship inside your bundle, so they’re never blocked.

    + +

    Your npm dependencies are bundled in too. You can pull in a charting library (the calendar-heatmap example bundles ECharts), but everything ships in that single dist/index.js, so your code and its dependencies all count toward the packaged plugin’s size limits.

    + +

    So anything your visualization renders has to live inside that bundle. For images, you have a few options:

    + +
      +
    • Inline SVG or emoji. What the starter visualization does (it renders 👍 / 👎). Drop the SVG markup straight into your JSX.
    • +
    • Import the image. Import an image from src/ and the bundler inlines small files as a base64 data URL. Vite inlines assets below its assetsInlineLimit (4 KB by default); larger files are emitted as separate assets that won’t ship in the single bundle, so keep imported images small or raise the limit.
    • +
    • Embed a data URL directly. Paste a data:image/png;base64,... string into your component’s src.
    • +
    + +
    import logo from "./logo.svg"; // inlined as a data URL at build time
    +
    +const VisualizationComponent = () => <img src={logo} alt="" />;
    +
    + +

    The visualization icon

    + +

    The icon shows up in the chart type picker and elsewhere in the Metabase UI.

    + +
      +
    • Declare it with "icon" in metabase-plugin.json. The default location is public/assets/icon.svg.
    • +
    • Use currentColor for fills and strokes so the icon adapts to light and dark themes, as well as to hover and active states (like when it’s highlighted in a menu):
    • +
    + +
    <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
    +  <path d="..." stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
    +</svg>
    +
    + +
      +
    • For more control, you can use Metabase’s CSS variables inside an inline SVG, like fill="var(--mb-color-brand)".
    • +
    • Keep the icon simple and monochromatic. Skip gradients and multiple colors.
    • +
    + +

    Build and package the plugin

    + +

    Run:

    + +
    npm run build
    +
    + +

    This compiles src/ to dist/ and packages the result into <name>-<version>.tgz at the project root. The archive contains metabase-plugin.json, dist/index.js, and the whitelisted icon under dist/assets/, and has to come in under 5 MiB. The packaging step also rejects an archive whose uncompressed contents exceed 25 MiB. You don’t need to commit dist/.

    + +

    For uploading and managing plugins, see Custom visualizations.

    + +

    Versioning and compatibility

    + +

    The Custom Visualizations SDK works with Metabase 1.62 and newer. Declare the versions your plugin supports with metabase.version in metabase-plugin.json, using npm semver range syntax — ">=1.62.0", "^1.62", ">=1.62 <1.64". Write the range against the full version number (">=1.62.0"), not a bare major version (">=62"), which won’t match.

    + +

    If you upload a bundle to a Metabase outside the plugin’s declared range, Metabase rejects the upload.

    + +

    Sandbox restrictions

    + +

    Metabase runs plugin code in an isolated sandbox, so a visualization works only from the series and settings it’s given. The sandbox blocks:

    + +
      +
    • Network access: fetch, XMLHttpRequest, WebSocket, EventSource, Worker, SharedWorker, RTCPeerConnection, WebTransport, BroadcastChannel, navigator.sendBeacon, and FontFace.load. You can’t call Metabase’s APIs or any other service.
    • +
    • Browser storage and cookies: localStorage, sessionStorage, indexedDB, the Cache API, document.cookie, and the CookieStore API.
    • +
    • Device and credential APIs: clipboard, geolocation, camera and microphone, service workers, the Credentials and Permissions APIs, USB, Bluetooth, HID, serial, WebXR, and Web Share.
    • +
    • Browser UI: window.open, dialogs (alert, confirm, prompt, print), notifications, modal dialogs, fullscreen, and payment requests.
    • +
    • Navigation and the rest of the app: history changes, the host page’s URL and referrer, and any DOM outside the plugin’s own container.
    • +
    • Unsafe DOM and timing APIs: document.write, execCommand, constructable stylesheets, raw HTML parsers (DOMParser, setHTMLUnsafe, XSLTProcessor), and resource-timing APIs that expose other requests the page has made.
    • +
    + +

    Custom visualizations only render in the live app

    + +

    Custom visualizations only render in the live, interactive app. Static renders, like dashboard subscriptions sent by email, Slack, or webhook, fall back to a table for any card that uses a custom visualization. The same goes for embedded questions and dashboards: a card that uses a custom visualization falls back to a table.

    + +

    Example plugins

    + +
      +
    • Calendar heatmap. Read through src/ for an example of checkRenderable, settings, and rendering against series data.
    • +
    • Thumbs. Thumbs up or down depending on a threshold.
    • +
    + +

    Further reading

    + + + + +
    +
    + +

    + Read docs for other versions of Metabase. +

    + +
    + + +
    + +
    +
    +
    Was this helpful?
    + + +
    + +
    +

    + +
    + + + +
    +
    + +
    +
    Thanks for your feedback!
    +
    + + + + Want to improve these docs? Propose a change. + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_site/docs/latest/developers-guide/dev-branch-docker.html b/_site/docs/latest/developers-guide/dev-branch-docker.html index 1e3c811010..7e822d7fbe 100644 --- a/_site/docs/latest/developers-guide/dev-branch-docker.html +++ b/_site/docs/latest/developers-guide/dev-branch-docker.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
    +

    Customizing Metabase

    + + +

    Metabase documentation

      diff --git a/_site/docs/latest/developers-guide/versioning.html b/_site/docs/latest/developers-guide/versioning.html index 3ddc0e4ecd..36877fa6dd 100644 --- a/_site/docs/latest/developers-guide/versioning.html +++ b/_site/docs/latest/developers-guide/versioning.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
      Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1818,9 +1862,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1834,6 +1917,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6258,6 +6367,11 @@

      Attributes

      object Default values for dashboard filters, e.g. { 'productId': '42' }.

      Optional
      Available in Pro/Enterprise and Guest embed. + +
      parameters + object + Controlled dashboard filters values, e.g. { 'productId': '42' }. Setting this attribute supersedes initial-parameters as the seed and stays in sync with subsequent mutations. Pair with the parameters-change DOM event to track edits.

      Optional
      Available in Pro/Enterprise and Guest embed. + token string @@ -6364,6 +6478,11 @@

      Attributes

      string | number The ID of the question to embed. Can be a regular ID or an entity ID. Use "new" to embed the query builder, or "new-native" to embed the SQL editor. Only for SSO embeds — guest embeds use token. + + sql-parameters + object + Controlled SQL parameter values, e.g. { "productId": "42" }. Setting this attribute supersedes initial-sql-parameters as the seed and stays in sync with subsequent mutations. Pair with the sql-parameters-change DOM event to track edits.

      Optional
      Available in Pro/Enterprise and Guest embed. + target-collection string | number diff --git a/_site/docs/latest/embedding/eajs/snippets/MetabaseBrowserAttributes.html b/_site/docs/latest/embedding/eajs/snippets/MetabaseBrowserAttributes.html index 6fe5d56bd6..6e321d36ba 100644 --- a/_site/docs/latest/embedding/eajs/snippets/MetabaseBrowserAttributes.html +++ b/_site/docs/latest/embedding/eajs/snippets/MetabaseBrowserAttributes.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
      Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6245,6 +6354,11 @@

      Properties

      string | number The ID of the question to embed. Can be a regular ID or an
      entity ID. Use "new" to embed the query builder, or "new-native" to embed the SQL editor. Only for SSO embeds — guest embeds use token. + + sql-parameters + object + Controlled SQL parameter values, e.g. { "productId": "42" }. Setting this attribute supersedes initial-sql-parameters as the seed and stays in sync with subsequent mutations. Pair with the sql-parameters-change DOM event to track edits.

      Optional
      Available in Pro/Enterprise and Guest embed. + target-collection string | number diff --git a/_site/docs/latest/embedding/eajs/snippets/index.html b/_site/docs/latest/embedding/eajs/snippets/index.html index 778a2be987..d605d92d86 100644 --- a/_site/docs/latest/embedding/eajs/snippets/index.html +++ b/_site/docs/latest/embedding/eajs/snippets/index.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
      Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    +

    See Modular embedding parameters for controlled parameters documentation.

    +

    Locked parameters

    Locked parameters let you filter data without exposing the filter to the end-user. Locking parameters is useful for restricting data based on who’s viewing the embed (for example, showing each customer only their own data).

    diff --git a/_site/docs/latest/embedding/introduction.html b/_site/docs/latest/embedding/introduction.html index 583f55f3cc..8c67d29d5a 100644 --- a/_site/docs/latest/embedding/introduction.html +++ b/_site/docs/latest/embedding/introduction.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
    +

    Pass parameter values to embedded components

    + +

    See Modular embedding parameters.

    +

    Page-level config

    To define the configuration that applies to every embed on the page, use the defineMetabaseConfig() function. Its parameters include:

    diff --git a/_site/docs/latest/embedding/parameters.html b/_site/docs/latest/embedding/parameters.html new file mode 100644 index 0000000000..8f4370cc96 --- /dev/null +++ b/_site/docs/latest/embedding/parameters.html @@ -0,0 +1,6985 @@ + + + + + + + + + + + + + + + + + + + + + + + + +Modular embedding parameters | Metabase Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + +
    + + + + +
    +
    + + + +
    +
    +
    + +
    + + + + + + + + + +
    + + + +
    + + +
    + +
    + +
    + + + +
    + + + v0.62 + + + + + + + + +
    + + + + + What’s new + + + + + +
    + + + + +
    +
    + + +
    + + +
    + +
    + + +

    Modular embedding parameters

    + +

    This page covers how to pass parameter values to embedded dashboards and SQL questions.

    + +

    Modular embedding SDK (React)

    + +

    Pass parameter values to a dashboard

    + +

    You can set initial values for embeds (uncontrolled), and optionally keep your app in sync with values as people change them (controlled). You can pick either initialParameters and parameters, but don’t combine them.

    + +

    initialParameters (uncontrolled)

    + +

    Set the filter values once on load. Your app won’t know when people change filters in the dashboard. Pick this when you don’t need to track those changes.

    + +
    <InteractiveDashboard
    +  dashboardId={dashboardId}
    +  initialParameters={{ state: "NY" }}
    +/>
    +
    + +

    See How parameter values are resolved for null / missing-slug semantics.

    + +

    parameters + onParametersChange (controlled)

    + +

    Push values from your app, and observe every applied change via onParametersChange. This works like a controlled <input value onChange>. Your app holds the source of truth, the dashboard re-renders when the prop changes, and you receive a callback whenever applied values change.

    + +
    const [parameters, setParameters] = useState<ParameterValues>({
    +  state: "NY",
    +});
    +
    +const handleParametersChange = (payload: ParameterChangePayload) => {
    +  // Sync your local state on every applied change. `payload.source` is one of:
    +  //   "initial-state" — post-load snapshot, fired once per dashboard load
    +  //   "manual-change" — user edited a parameter widget
    +  //   "auto-change"   — your push was normalized; re-sync from `payload.parameters`
    +  setParameters(payload.parameters);
    +};
    +
    +return (
    +  <InteractiveDashboard
    +    dashboardId={dashboardId}
    +    parameters={parameters}
    +    onParametersChange={handleParametersChange}
    +  />
    +);
    +
    + +

    onParametersChange receives the dashboard parameter change payload.

    + +
    +

    Don’t combine initialParameters and parameters - pick one. For controlled behavior, only use parameters.

    +
    + +

    Pass parameters to SQL questions

    + +

    You can pass parameter values to SQL questions in the format {parameter_name: parameter_value}. You can set initial values for embeds (uncontrolled), and optionally keep your app in sync with values as people change them (controlled).

    + +

    These props only work with SQL questions, not query-builder questions.

    + +

    initialSqlParameters (uncontrolled)

    + +

    Set the parameter values once on load. Your app won’t know when people change parameters in the question. Pick this when you don’t need to track those changes.

    + +
    <StaticQuestion
    +  questionId={questionId}
    +  initialSqlParameters={{ product_id: 50 }}
    +/>
    +
    + +

    See How parameter values are resolved for null / missing-slug semantics.

    + +

    sqlParameters + onSqlParametersChange (controlled)

    + +

    Push values from your app, and observe every applied change via onSqlParametersChange. This works like a controlled <input value onChange> - your app holds the source of truth, the question re-renders when the prop changes, and you receive a callback whenever applied values change.

    + +
    const [sqlParameters, setSqlParameters] = useState<SqlParameterValues>({
    +  state: "NY",
    +});
    +
    +const handleSqlParametersChange = (payload: SqlParameterChangePayload) => {
    +  // Sync your local state on every applied change. `payload.source` is one of:
    +  //   "initial-state" — post-load snapshot, fired once per question load
    +  //   "manual-change" — user edited a parameter widget
    +  //   "auto-change"   — your push was normalized; re-sync from `payload.parameters`
    +  setSqlParameters(payload.parameters);
    +};
    +
    +return (
    +  <InteractiveQuestion
    +    questionId={questionId}
    +    sqlParameters={sqlParameters}
    +    onSqlParametersChange={handleSqlParametersChange}
    +  />
    +);
    +
    + +

    onSqlParametersChange receives the SQL question parameter change payload.

    + +

    Modular embedding (web components)

    + +

    Pass parameter values to embedded components

    + +

    You can set dashboard filters and SQL parameters from your page, push new values at runtime, and listen for applied changes.

    + +

    Seed values once with initial-parameters / initial-sql-parameters

    + +

    Set values on mount via attributes. The component reads them once on load and ignores any subsequent changes to the attribute. User widget edits are not reflected back to your page.

    + +
    <metabase-dashboard
    +  dashboard-id="1"
    +  initial-parameters='{"state": "NY"}'
    +></metabase-dashboard>
    +
    +<metabase-question
    +  question-id="42"
    +  initial-sql-parameters='{"product_id": 50}'
    +></metabase-question>
    +
    + +

    Attributes carry JSON. Pass an object whose keys are parameter slugs (dashboards) or SQL variable names (questions). See How parameter values are resolved for null / missing-slug semantics.

    + +

    Push values at runtime with parameters / sqlParameters

    + +

    For controlled behavior, set the JS property on the element instead of the attribute. The component re-renders to apply the new values.

    + +
    <metabase-dashboard id="my-dashboard" dashboard-id="1"></metabase-dashboard>
    +
    +<script>
    +  const el = document.getElementById("my-dashboard");
    +  el.parameters = { state: "NY" };
    +</script>
    +
    + +

    The same pattern works for metabase-question via the sqlParameters property.

    + +

    To switch a component back to uncontrolled mode (leaving the last applied values in place), set the property to undefined.

    + +

    Clearing parameters

    + +

    To clear a single parameter, set its value to null. This strictly clears the parameter and ignores its default value.

    + +
    <script>
    +  const el = document.getElementById("my-dashboard");
    +  // `null` strictly clears the parameter (ignores its default).
    +  el.parameters = { ...el.parameters, state: null };
    +</script>
    +
    + +

    To clear every parameter, assign an empty object {}.

    + +
    <script>
    +  const el = document.getElementById("my-dashboard");
    +  el.parameters = {};
    +</script>
    +
    + +

    Observe applied changes with parameters-change / sql-parameters-change

    + +

    Listen for events to keep your page in sync with what’s actually applied:

    + +
    <metabase-dashboard id="my-dashboard" dashboard-id="1"></metabase-dashboard>
    +
    +<script>
    +  const el = document.getElementById("my-dashboard");
    +
    +  el.addEventListener("parameters-change", (event) => {
    +    const { source, parameters, defaultParameters, lastUsedParameters } =
    +      event.detail;
    +    console.log(source, parameters);
    +  });
    +</script>
    +
    + +

    The event.detail carries the dashboard parameter change payload.

    + +

    For SQL questions, listen for sql-parameters-change on <metabase-question>. Its event.detail carries the SQL question parameter change payload.

    + +

    How parameter values are resolved

    + +

    These rules apply to all four props — initialParameters / parameters (dashboards) and initialSqlParameters / sqlParameters (SQL questions) — and to the matching web component attributes (initial-parameters, parameters, etc.). For each parameter slug:

    + +
      +
    • Set a value: Pass a string for a single-option filter, and an array of strings for multi-option filters.
    • +
    • Clear a value: Set to null: the parameter is cleared and its default is not used.
    • +
    • Reset to the default value: Omit a value (or set to undefined) and the embed will fall back to the parameter’s default (or null if it has no default).
    • +
    + +

    Dashboard parameter change payload

    + +

    Delivered to onParametersChange (SDK) and as event.detail for the parameters-change event (web components).

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyType
    defaultParametersParameterValues
    lastUsedParametersParameterValues
    parametersParameterValues
    sourceParameterChangeSource
    + +

    source indicates why the callback fired:

    + +
    +

    version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: ParameterChangeSource +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/ParameterChangeSource.md +layout: new-docs +latest: true +—

    + +
    type ParameterChangeSource = "initial-state" | "manual-change" | "auto-change";
    +
    + +

    Source of a parameter-change event:

    + +
      +
    • initial-state - first applied snapshot, fired once per dashboard load.
    • +
    • manual-change - user edited parameters in UI.
    • +
    • auto-change - in the case of auto-updates, e.g. to pass normalized values back to parent.
    • +
    + +

    SQL question parameter change payload

    + +

    Delivered to onSqlParametersChange (SDK) and as event.detail for the sql-parameters-change event (web components).

    + + + + + + + + + + + + + + + + + + + + + + +
    PropertyType
    defaultParametersParameterValues
    parametersParameterValues
    sourceSqlParameterChangeSource
    + +

    source indicates why the callback fired:

    + +
    +

    version: v0.62 +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Embedding +title: SqlParameterChangeSource +source_url: >- + https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SqlParameterChangeSource.md +layout: new-docs +latest: true +—

    + +
    type SqlParameterChangeSource =
    +  | "initial-state"
    +  | "manual-change"
    +  | "auto-change";
    +
    + +

    Source of a sql-parameter-change event:

    + +
      +
    • initial-state - first applied state, fired once per question load.
    • +
    • manual-change - user edited parameters in UI.
    • +
    • auto-change - in the case of auto-updates, e.g. to pass normalized values back to parent.
    • +
    + + +
    +
    + +

    + Read docs for other versions of Metabase. +

    + +
    +
    + +
    + +
    +
    +
    Was this helpful?
    + + +
    + +
    +

    + +
    + + + +
    +
    + +
    +
    Thanks for your feedback!
    +
    + + + + Want to improve these docs? Propose a change. + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_site/docs/latest/embedding/public-links.html b/_site/docs/latest/embedding/public-links.html index 4a980b73bc..c1b5f7a684 100644 --- a/_site/docs/latest/embedding/public-links.html +++ b/_site/docs/latest/embedding/public-links.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
  • Optionalheight?: Height<string | number>
  • OptionalhiddenParameters?: string[]
  • OptionalinitialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
  • OptionalisSaveEnabled?: boolean

    Whether to show the save button.

  • OptionalonBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

  • OptionalonNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

  • OptionalonRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

  • OptionalonSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
  • OptionalonSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

  • OptionalonVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

    -
  • Optionalplugins?: MetabasePluginsConfig
  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

    +
  • Optionalplugins?: MetabasePluginsConfig
  • OptionalsqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
    +
  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

  • OptionaltargetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

  • Optionaltitle?: SdkQuestionTitleProps

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

  • Optionalwidth?: Width<string | number>

    A number or string specifying a CSS size value that specifies the width of the component

  • OptionalwithAlerts?: boolean

    Enables the ability to set up alerts on the question.

  • OptionalwithChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

  • OptionalwithDownloads?: boolean

    Enables the ability to download results in the question.

    +
  • OptionalwithEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

  • undefined
  • Returns Element

    Use <InteractiveQuestion questionId="new" /> instead.

    diff --git a/_site/docs/latest/embedding/sdk/api/CreateQuestionProps.html b/_site/docs/latest/embedding/sdk/api/CreateQuestionProps.html index ada1c01668..c70a4168e3 100644 --- a/_site/docs/latest/embedding/sdk/api/CreateQuestionProps.html +++ b/_site/docs/latest/embedding/sdk/api/CreateQuestionProps.html @@ -21,7 +21,7 @@ -

    Interface CreateQuestionProps

    interface CreateQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className? +

    Interface CreateQuestionProps

    interface CreateQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onSqlParametersChange?: (payload: SqlParameterChangePayload) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        sqlParameters?: SqlParameterValues;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withEditorButton?: boolean;
    }
    Index

    Properties

    className?: string

    A custom class name to be added to the root element.

    dataPicker?: EmbeddingDataPicker

    Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting dataPicker = "staged".

    entityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    hiddenParameters?: string[]

    A list of parameters to hide.

    initialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

    onRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

    Type Declaration

      • (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • display:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new display type

          -

        Returns void

    A custom style object to be added to the root element.

    +

    Returns void

    sqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
    +

    A custom style object to be added to the root element.

    targetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    width?: Width<string | number>

    A number or string specifying a CSS size value that specifies the width of the component

    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +
    withEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

    +

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/DrillThroughQuestionProps.html b/_site/docs/latest/embedding/sdk/api/DrillThroughQuestionProps.html index 8192d80555..7aaece0676 100644 --- a/_site/docs/latest/embedding/sdk/api/DrillThroughQuestionProps.html +++ b/_site/docs/latest/embedding/sdk/api/DrillThroughQuestionProps.html @@ -22,7 +22,7 @@

    Interface DrillThroughQuestionProps

    Props for the drill-through question

    -
    interface DrillThroughQuestionProps {
        children?: ReactNode;
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    interface DrillThroughQuestionProps {
        children?: ReactNode;
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withEditorButton?: boolean;
    }
    Index

    Properties

    children?: ReactNode

    The children of the component

    className?: string

    A custom class name to be added to the root element.

    dataPicker?: EmbeddingDataPicker

    Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting dataPicker = "staged".

    entityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    initialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    @@ -59,6 +70,7 @@
    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +
    withEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

    +

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/EditableDashboard.html b/_site/docs/latest/embedding/sdk/api/EditableDashboard.html index 4342b75da8..e4b06156aa 100644 --- a/_site/docs/latest/embedding/sdk/api/EditableDashboard.html +++ b/_site/docs/latest/embedding/sdk/api/EditableDashboard.html @@ -45,17 +45,43 @@
  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
  • OptionalinitialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

  • OptionalinitialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • OptionalonLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

  • OptionalonLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
  • OptionalonParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

  • OptionalonVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    +
  • Optionalparameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
  • Optionalplugins?: MetabasePluginsConfig

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

  • OptionalrenderDrillThroughQuestion?: () => ReactNode

    A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout.

    diff --git a/_site/docs/latest/embedding/sdk/api/EditableDashboardProps.html b/_site/docs/latest/embedding/sdk/api/EditableDashboardProps.html index 95576a1cb1..c092da98cf 100644 --- a/_site/docs/latest/embedding/sdk/api/EditableDashboardProps.html +++ b/_site/docs/latest/embedding/sdk/api/EditableDashboardProps.html @@ -21,7 +21,7 @@ -

    Interface EditableDashboardProps

    interface EditableDashboardProps {
        autoRefreshInterval?: number;
        className?: string;
        dashboardId: string | number;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        drillThroughQuestionHeight?: Height<string | number>;
        drillThroughQuestionProps?: DrillThroughQuestionProps;
        enableEntityNavigation?: boolean;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: MetabaseDashboard | null) => void;
        onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
        onVisualizationChange?: (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        renderDrillThroughQuestion?: () => ReactNode;
        style?: CSSProperties;
        token?: string | null;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withSubscriptions?: boolean;
        withTitle?: boolean;
    }
    Index

    Properties

    autoRefreshInterval? +

    Interface EditableDashboardProps

    interface EditableDashboardProps {
        autoRefreshInterval?: number;
        className?: string;
        dashboardId: string | number;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        drillThroughQuestionHeight?: Height<string | number>;
        drillThroughQuestionProps?: DrillThroughQuestionProps;
        enableEntityNavigation?: boolean;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: MetabaseDashboard | null) => void;
        onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
        onParametersChange?: (payload: ParameterChangePayload) => void;
        onVisualizationChange?: (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        parameters?: ParameterValues;
        plugins?: MetabasePluginsConfig;
        renderDrillThroughQuestion?: () => ReactNode;
        style?: CSSProperties;
        token?: string | null;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withSubscriptions?: boolean;
        withTitle?: boolean;
    }
    Index
  • OptionalentityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

  • Optionalheight?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

  • OptionalinitialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
  • OptionalisSaveEnabled?: boolean

    Whether to show the save button.

  • OptionalonBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

  • OptionalonRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    @@ -74,6 +86,7 @@
  • OptionalwithAlerts?: boolean

    Enables the ability to set up alerts on the question.

  • OptionalwithChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

  • OptionalwithDownloads?: boolean

    Enables the ability to download results in the question.

    +
  • OptionalwithEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

  • enableEntityNavigation?: boolean

    When true, internal click behaviors (links to dashboards/questions) are preserved. When false (default for SDK), these click behaviors are filtered out.

    hiddenParameters?: string[]

    A list of parameters to hide. @@ -83,19 +96,45 @@

  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
    initialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

    initialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
    onLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

    onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
    onParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    Type Declaration

      • (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • visualization:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new visualization type

          -

        Returns void

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    +

    Returns void

    parameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
    +

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    renderDrillThroughQuestion?: () => ReactNode

    A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout.

    A custom style object to be added to the root element.

    @@ -103,6 +142,6 @@
    withDownloads?: boolean

    Whether to hide the download button.

    withSubscriptions?: boolean

    Whether to show the subscriptions button.

    withTitle?: boolean

    Whether the dashboard should display a title.

    -

    +

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/IconName.html b/_site/docs/latest/embedding/sdk/api/IconName.html index df8dc9cdbb..5dbffe1e44 100644 --- a/_site/docs/latest/embedding/sdk/api/IconName.html +++ b/_site/docs/latest/embedding/sdk/api/IconName.html @@ -21,6 +21,6 @@ -

    Type Alias IconName

    IconName:
        | "string"
        | "number"
        | "function"
        | "collection"
        | "dashboard"
        | "question"
        | "model"
        | "archive"
        | "table"
        | "bar"
        | "line"
        | "pie"
        | "scalar"
        | "area"
        | "smartscalar"
        | "gauge"
        | "progress"
        | "funnel"
        | "boxplot"
        | "waterfall"
        | "sankey"
        | "list"
        | "revert"
        | "add"
        | "add_collection"
        | "add_column"
        | "add_data"
        | "add_folder"
        | "add_list"
        | "add_row"
        | "add_to_dash"
        | "add_comment"
        | "ai"
        | "alert"
        | "alert_filled"
        | "alert_confirm"
        | "attachment"
        | "arrow_up"
        | "arrow_down"
        | "arrow_left"
        | "arrow_left_to_line"
        | "arrow_right"
        | "arrow_split"
        | "audit"
        | "badge"
        | "ban"
        | "bell"
        | "birthday"
        | "book_open"
        | "bookmark"
        | "bookmark_filled"
        | "bolt"
        | "bolt_filled"
        | "breakout"
        | "bubble"
        | "broken_link"
        | "burger"
        | "calendar"
        | "camera"
        | "chart_layout_default"
        | "chart_layout_stack"
        | "check"
        | "check_filled"
        | "code_block"
        | "chevrondown"
        | "chevronleft"
        | "chevronright"
        | "chevronup"
        | "click"
        | "clipboard"
        | "clock"
        | "clone"
        | "close"
        | "cloud"
        | "cloud_filled"
        | "collection2"
        | "compare"
        | "combine"
        | "company"
        | "comment"
        | "currency"
        | "connections"
        | "contract"
        | "copy"
        | "corner_up_right"
        | "curved"
        | "database"
        | "database_routing"
        | "dependencies"
        | "data_studio"
        | "dash"
        | "curve"
        | "document"
        | "download"
        | "dyno"
        | "edit_document"
        | "edit_document_outlined"
        | "ellipsis"
        | "embed"
        | "embed_interactive"
        | "embed_modular"
        | "embed_static"
        | "empty"
        | "enter_or_return"
        | "exit"
        | "expand"
        | "expand_arrow"
        | "extract"
        | "eye"
        | "eye_crossed_out"
        | "eye_outline"
        | "factory"
        | "field"
        | "fields"
        | "filter"
        | "filter_plus"
        | "find_replace"
        | "bug"
        | "format_code"
        | "formula"
        | "funnel_outline"
        | "folder"
        | "folder_database"
        | "folder_filled"
        | "gear"
        | "gear_settings_filled"
        | "gem"
        | "ghost"
        | "globe"
        | "glossary"
        | "git_branch"
        | "grabber"
        | "grid"
        | "grid_2x2"
        | "grid_bordered"
        | "group"
        | "google"
        | "google_drive"
        | "google_sheet"
        | "history"
        | "home"
        | "horizontal_bar"
        | "hourglass"
        | "info"
        | "info_outline"
        | "insight"
        | "int"
        | "io"
        | "join_full_outer"
        | "join_inner"
        | "join_left_outer"
        | "join_right_outer"
        | "index"
        | "key"
        | "label"
        | "layout_grid"
        | "ldap"
        | "learn"
        | "lightbulb"
        | "link"
        | "lines"
        | "lineandbar"
        | "line_style_dashed"
        | "line_style_dotted"
        | "line_style_solid"
        | "location"
        | "lock"
        | "lock_filled"
        | "mail"
        | "mail_filled"
        | "mcp"
        | "medallion"
        | "message_circle"
        | "metabot"
        | "metabot_sad"
        | "metric"
        | "mode"
        | "model_with_badge"
        | "moon"
        | "move"
        | "move_card"
        | "network"
        | "new_folder"
        | "notebook"
        | "octagon_alert"
        | "package"
        | "palette"
        | "pause"
        | "pencil"
        | "pencil_lines"
        | "permissions_limited"
        | "person"
        | "pie_slice"
        | "pin"
        | "pinmap"
        | "pivot_table"
        | "play"
        | "play_outlined"
        | "popover"
        | "popular"
        | "publish"
        | "published"
        | "pulse"
        | "receipt"
        | "recents"
        | "share"
        | "send"
        | "settings"
        | "smile"
        | "split"
        | "sql"
        | "subscription"
        | "straight"
        | "stepped"
        | "sticky_note"
        | "sort"
        | "sort_arrows"
        | "sum"
        | "sync"
        | "synced_collection"
        | "transform"
        | "quote"
        | "redo"
        | "return"
        | "reference"
        | "refresh"
        | "refresh_downstream"
        | "rename"
        | "repository"
        | "rocket"
        | "ruler"
        | "schema"
        | "search"
        | "search_check"
        | "section"
        | "segment"
        | "shield"
        | "shield_outline"
        | "shield_stroke"
        | "sidebar_closed"
        | "sidebar_open"
        | "slack"
        | "slack_colorized"
        | "snail"
        | "snippet"
        | "sparkles"
        | "star_filled"
        | "star"
        | "stop"
        | "store"
        | "sun"
        | "t-shirt"
        | "tab"
        | "table2"
        | "text_bold"
        | "text_italic"
        | "text_strike"
        | "thumbs_down"
        | "thumbs_up"
        | "time_history"
        | "trash"
        | "trash_filled"
        | "triangle_left"
        | "triangle_right"
        | "unarchive"
        | "undo"
        | "unknown"
        | "unpin"
        | "unpublish"
        | "unreferenced"
        | "unsubscribe"
        | "upload"
        | "variable"
        | "verified"
        | "official_collection"
        | "open_folder"
        | "ordered_list"
        | "verified_filled"
        | "verified_round"
        | "view_archive"
        | "warning"
        | "warning_round_filled"
        | "warning_triangle_filled"
        | "webhook"
        | "10k"
        | "1m"
        | "zap"
        | "zoom_in"
        | "zoom_out"
        | "cake"
        | "external"
        | "beaker"
        | "test_tube"
        | "eye_filled"

    +

    Type Alias IconName

    IconName:
        | "string"
        | "number"
        | "function"
        | "collection"
        | "dashboard"
        | "question"
        | "model"
        | "archive"
        | "table"
        | "bar"
        | "line"
        | "pie"
        | "scalar"
        | "area"
        | "smartscalar"
        | "gauge"
        | "progress"
        | "funnel"
        | "boxplot"
        | "waterfall"
        | "sankey"
        | "list"
        | "revert"
        | "add"
        | "add_collection"
        | "add_column"
        | "add_data"
        | "add_folder"
        | "add_list"
        | "add_row"
        | "add_to_dash"
        | "add_comment"
        | "ai"
        | "alert"
        | "alert_filled"
        | "alert_confirm"
        | "attachment"
        | "arrow_up"
        | "arrow_down"
        | "arrow_left"
        | "arrow_left_to_line"
        | "arrow_right"
        | "arrow_split"
        | "audit"
        | "badge"
        | "ban"
        | "bell"
        | "birthday"
        | "book_open"
        | "bookmark"
        | "bookmark_filled"
        | "bolt"
        | "bolt_filled"
        | "breakout"
        | "bubble"
        | "broken_link"
        | "burger"
        | "calendar"
        | "camera"
        | "chart_layout_default"
        | "chart_layout_stack"
        | "check"
        | "check_filled"
        | "code_block"
        | "chevrondown"
        | "chevronleft"
        | "chevronright"
        | "chevronup"
        | "click"
        | "clipboard"
        | "clock"
        | "clone"
        | "close"
        | "cloud"
        | "cloud_filled"
        | "collection2"
        | "compare"
        | "combine"
        | "company"
        | "comment"
        | "currency"
        | "connections"
        | "contract"
        | "copy"
        | "corner_up_right"
        | "curved"
        | "database"
        | "database_routing"
        | "dependencies"
        | "dependent"
        | "data_studio"
        | "dash"
        | "curve"
        | "document"
        | "download"
        | "dyno"
        | "edit_document"
        | "edit_document_outlined"
        | "ellipsis"
        | "embed"
        | "embed_interactive"
        | "embed_modular"
        | "embed_static"
        | "empty"
        | "enter_or_return"
        | "exit"
        | "expand"
        | "expand_arrow"
        | "extract"
        | "eye"
        | "eye_crossed_out"
        | "eye_outline"
        | "factory"
        | "field"
        | "fields"
        | "filter"
        | "filter_plus"
        | "find_replace"
        | "bug"
        | "format_code"
        | "formula"
        | "funnel_outline"
        | "folder"
        | "folder_database"
        | "folder_filled"
        | "gear"
        | "gear_settings_filled"
        | "gem"
        | "ghost"
        | "globe"
        | "glossary"
        | "git_branch"
        | "grabber"
        | "grid"
        | "grid_2x2"
        | "grid_bordered"
        | "group"
        | "google"
        | "google_drive"
        | "google_sheet"
        | "history"
        | "home"
        | "horizontal_bar"
        | "hourglass"
        | "info"
        | "info_outline"
        | "insight"
        | "int"
        | "io"
        | "join_full_outer"
        | "join_inner"
        | "join_left_outer"
        | "join_right_outer"
        | "index"
        | "key"
        | "label"
        | "layout_grid"
        | "ldap"
        | "learn"
        | "lightbulb"
        | "link"
        | "lines"
        | "lineandbar"
        | "line_style_dashed"
        | "line_style_dotted"
        | "line_style_solid"
        | "location"
        | "lock"
        | "lock_filled"
        | "mail"
        | "mail_filled"
        | "mcp"
        | "medallion"
        | "message_circle"
        | "metabot"
        | "metabot_sad"
        | "metric"
        | "mode"
        | "model_with_badge"
        | "moon"
        | "move"
        | "move_card"
        | "network"
        | "new_folder"
        | "notebook"
        | "octagon_alert"
        | "package"
        | "palette"
        | "pause"
        | "pencil"
        | "pencil_lines"
        | "permissions_limited"
        | "person"
        | "pie_slice"
        | "pin"
        | "pinmap"
        | "pivot_table"
        | "play"
        | "play_outlined"
        | "popover"
        | "popular"
        | "publish"
        | "published"
        | "pulse"
        | "receipt"
        | "recents"
        | "share"
        | "send"
        | "settings"
        | "smile"
        | "split"
        | "sql"
        | "subscription"
        | "straight"
        | "stepped"
        | "sticky_note"
        | "sort"
        | "sort_arrows"
        | "sum"
        | "sync"
        | "synced_collection"
        | "transform"
        | "quote"
        | "redo"
        | "return"
        | "reference"
        | "refresh"
        | "refresh_downstream"
        | "rename"
        | "repository"
        | "rocket"
        | "ruler"
        | "schema"
        | "search"
        | "search_check"
        | "section"
        | "segment"
        | "shield"
        | "shield_outline"
        | "shield_stroke"
        | "sidebar_closed"
        | "sidebar_open"
        | "slack"
        | "slack_colorized"
        | "snail"
        | "snippet"
        | "sparkles"
        | "star_filled"
        | "star"
        | "stop"
        | "store"
        | "sun"
        | "t-shirt"
        | "tab"
        | "table2"
        | "text_bold"
        | "text_italic"
        | "text_strike"
        | "thumbs_down"
        | "thumbs_up"
        | "time_history"
        | "trash"
        | "trash_filled"
        | "triangle_left"
        | "triangle_right"
        | "unarchive"
        | "undo"
        | "unknown"
        | "unpin"
        | "unpublish"
        | "unreferenced"
        | "unsubscribe"
        | "upload"
        | "variable"
        | "verified"
        | "official_collection"
        | "open_folder"
        | "ordered_list"
        | "verified_filled"
        | "verified_round"
        | "view_archive"
        | "warning"
        | "warning_round"
        | "warning_round_filled"
        | "warning_triangle_filled"
        | "webhook"
        | "10k"
        | "1m"
        | "zap"
        | "zoom_in"
        | "zoom_out"
        | "cake"
        | "external"
        | "beaker"
        | "test_tube"
        | "eye_filled"

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/InteractiveDashboard.html b/_site/docs/latest/embedding/sdk/api/InteractiveDashboard.html index e5cf6c9a91..d23250be82 100644 --- a/_site/docs/latest/embedding/sdk/api/InteractiveDashboard.html +++ b/_site/docs/latest/embedding/sdk/api/InteractiveDashboard.html @@ -21,8 +21,8 @@ -

    Function InteractiveDashboard

    • A dashboard component with drill downs, click behaviors, and the ability to view and click into questions.

      -

      Parameters

      • props: {
            autoRefreshInterval?: number;
            dashboardId: SdkDashboardId;
            drillThroughQuestionHeight?: Height<string | number>;
            drillThroughQuestionProps?: DrillThroughQuestionProps;
            initialParameters?: ParameterValues;
            plugins?: MetabasePluginsConfig;
            renderDrillThroughQuestion?: () => ReactNode;
        } & { dashboardId?: SdkDashboardId
        | null; token?: string | null } & {
            enableEntityNavigation?: boolean;
            hiddenParameters?: string[];
            initialParameters?: ParameterValues;
            withCardTitle?: boolean;
            withDownloads?: boolean;
            withSubscriptions?: boolean;
            withTitle?: boolean;
        } & { className?: string; style?: CSSProperties } & {
            onLoad?: (dashboard: MetabaseDashboard | null) => void;
            onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
            onVisualizationChange?: (
                visualization:
                    | "object"
                    | "table"
                    | "bar"
                    | "line"
                    | "pie"
                    | "scalar"
                    | "row"
                    | "area"
                    | "combo"
                    | "pivot"
                    | "smartscalar"
                    | "gauge"
                    | "progress"
                    | "funnel"
                    | "map"
                    | "scatter"
                    | "boxplot"
                    | "waterfall"
                    | "sankey"
                    | "list",
            ) => void;
        } & { dataPickerProps?: Pick<SdkQuestionProps, "entityTypes"> } & {}
        • OptionalautoRefreshInterval?: number

          The interval between auto refreshes on the dashboard, in seconds.

          +

          Function InteractiveDashboard

          • A dashboard component with drill downs, click behaviors, and the ability to view and click into questions.

            +

            Parameters

            • props: {
                  autoRefreshInterval?: number;
                  dashboardId: SdkDashboardId;
                  drillThroughQuestionHeight?: Height<string | number>;
                  drillThroughQuestionProps?: DrillThroughQuestionProps;
                  initialParameters?: ParameterValues;
                  onParametersChange?: (payload: ParameterChangePayload) => void;
                  parameters?: ParameterValues;
                  plugins?: MetabasePluginsConfig;
                  renderDrillThroughQuestion?: () => ReactNode;
              } & { dashboardId?: SdkDashboardId
              | null; token?: string | null } & {
                  enableEntityNavigation?: boolean;
                  hiddenParameters?: string[];
                  initialParameters?: ParameterValues;
                  withCardTitle?: boolean;
                  withDownloads?: boolean;
                  withSubscriptions?: boolean;
                  withTitle?: boolean;
              } & { className?: string; style?: CSSProperties } & {
                  onLoad?: (dashboard: MetabaseDashboard | null) => void;
                  onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
                  onVisualizationChange?: (
                      visualization:
                          | "object"
                          | "table"
                          | "bar"
                          | "line"
                          | "pie"
                          | "scalar"
                          | "row"
                          | "area"
                          | "combo"
                          | "pivot"
                          | "smartscalar"
                          | "gauge"
                          | "progress"
                          | "funnel"
                          | "map"
                          | "scatter"
                          | "boxplot"
                          | "waterfall"
                          | "sankey"
                          | "list",
                  ) => void;
              } & { dataPickerProps?: Pick<SdkQuestionProps, "entityTypes"> } & {}
              • OptionalautoRefreshInterval?: number

                The interval between auto refreshes on the dashboard, in seconds.

              • dashboardId: SdkDashboardId

                The ID of the dashboard.
                This is either: @@ -34,13 +34,39 @@

          • OptionaldrillThroughQuestionHeight?: Height<string | number>

            Height of a question component when drilled from the dashboard to a question level.

          • OptionaldrillThroughQuestionProps?: DrillThroughQuestionProps

            Props of a question component when drilled from the dashboard to a question level.

            -
          • OptionalinitialParameters?: ParameterValues

            Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

          • OptionalinitialParameters?: ParameterValues

            Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
            +For each parameter:

              +
            • set to a value (string for a single option, array of strings for multiple): that value is applied. +
            • +
            • set to null: strictly cleared, ignoring the parameter's default. +
            • +
            • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
              +
            • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
            • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
            +
          • OptionalonParametersChange?: (payload: ParameterChangePayload) => void

            Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

            +
          • Optionalparameters?: ParameterValues

            Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

            +
              +
            • a parameter set to a value uses that value. +
            • +
            • a parameter set to null is cleared, even if it has a default. +
            • +
            • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
              +
              +Pair with onParametersChange to stay in sync with user edits. +
            • +
            • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
            • +
            • Combining parameters and hiddenParameters to declutter the user interface is fine.
            • +
          • Optionalplugins?: MetabasePluginsConfig

            Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

          • OptionalrenderDrillThroughQuestion?: () => ReactNode

            A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout.

            diff --git a/_site/docs/latest/embedding/sdk/api/InteractiveDashboardProps.html b/_site/docs/latest/embedding/sdk/api/InteractiveDashboardProps.html index b64c25ddd2..3410d47055 100644 --- a/_site/docs/latest/embedding/sdk/api/InteractiveDashboardProps.html +++ b/_site/docs/latest/embedding/sdk/api/InteractiveDashboardProps.html @@ -21,7 +21,7 @@ -

            Interface InteractiveDashboardProps

            interface InteractiveDashboardProps {
                autoRefreshInterval?: number;
                className?: string;
                dashboardId: string | number;
                dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
                drillThroughQuestionHeight?: Height<string | number>;
                drillThroughQuestionProps?: DrillThroughQuestionProps;
                enableEntityNavigation?: boolean;
                hiddenParameters?: string[];
                initialParameters?: ParameterValues;
                onLoad?: (dashboard: MetabaseDashboard | null) => void;
                onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
                onVisualizationChange?: (
                    visualization:
                        | "object"
                        | "table"
                        | "bar"
                        | "line"
                        | "pie"
                        | "scalar"
                        | "row"
                        | "area"
                        | "combo"
                        | "pivot"
                        | "smartscalar"
                        | "gauge"
                        | "progress"
                        | "funnel"
                        | "map"
                        | "scatter"
                        | "boxplot"
                        | "waterfall"
                        | "sankey"
                        | "list",
                ) => void;
                plugins?: MetabasePluginsConfig;
                renderDrillThroughQuestion?: () => ReactNode;
                style?: CSSProperties;
                token?: string | null;
                withCardTitle?: boolean;
                withDownloads?: boolean;
                withSubscriptions?: boolean;
                withTitle?: boolean;
            }
            Index

            Properties

            autoRefreshInterval? +

            Interface InteractiveDashboardProps

            interface InteractiveDashboardProps {
                autoRefreshInterval?: number;
                className?: string;
                dashboardId: string | number;
                dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
                drillThroughQuestionHeight?: Height<string | number>;
                drillThroughQuestionProps?: DrillThroughQuestionProps;
                enableEntityNavigation?: boolean;
                hiddenParameters?: string[];
                initialParameters?: ParameterValues;
                onLoad?: (dashboard: MetabaseDashboard | null) => void;
                onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
                onParametersChange?: (payload: ParameterChangePayload) => void;
                onVisualizationChange?: (
                    visualization:
                        | "object"
                        | "table"
                        | "bar"
                        | "line"
                        | "pie"
                        | "scalar"
                        | "row"
                        | "area"
                        | "combo"
                        | "pivot"
                        | "smartscalar"
                        | "gauge"
                        | "progress"
                        | "funnel"
                        | "map"
                        | "scatter"
                        | "boxplot"
                        | "waterfall"
                        | "sankey"
                        | "list",
                ) => void;
                parameters?: ParameterValues;
                plugins?: MetabasePluginsConfig;
                renderDrillThroughQuestion?: () => ReactNode;
                style?: CSSProperties;
                token?: string | null;
                withCardTitle?: boolean;
                withDownloads?: boolean;
                withSubscriptions?: boolean;
                withTitle?: boolean;
            }
            Index
          • OptionalentityTypes?: EmbeddingEntityType[]

            An array that specifies which entity types are available in the data picker

          • Optionalheight?: Height<string | number>

            A number or string specifying a CSS size value that specifies the height of the component

          • OptionalinitialCollection?: SdkCollectionId

            The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

            -
          • OptionalinitialSqlParameters?: SqlParameterValues

            Initial values for the SQL parameters.

            +
          • OptionalinitialSqlParameters?: SqlParameterValues

            Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
            +For each parameter: +

            +
              +
            • set to a value: that value is applied. +
            • +
            • set to null: strictly cleared, ignoring the parameter's default. +
            • +
            • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
            • +
          • OptionalisSaveEnabled?: boolean

            Whether to show the save button.

          • OptionalonBeforeSave?: (
                question: MetabaseQuestion | undefined,
                context: { isNewQuestion: boolean },
            ) => Promise<void>

            A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          • OptionalonRun?: (question: MetabaseQuestion | undefined) => void

            A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            @@ -74,6 +86,7 @@
          • OptionalwithAlerts?: boolean

            Enables the ability to set up alerts on the question.

          • OptionalwithChartTypeSelector?: boolean

            Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

          • OptionalwithDownloads?: boolean

            Enables the ability to download results in the question.

            +
          • OptionalwithEditorButton?: boolean

            Determines whether the editor button is shown. Only relevant when using the default layout.

    enableEntityNavigation?: boolean

    When true, internal click behaviors (links to dashboards/questions) are preserved. When false (default for SDK), these click behaviors are filtered out.

    hiddenParameters?: string[]

    A list of parameters to hide. @@ -83,19 +96,45 @@

  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
    initialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

    initialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
    onLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

    onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
    onParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    Type Declaration

      • (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • visualization:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new visualization type

          -

        Returns void

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    +

    Returns void

    parameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
    +

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    renderDrillThroughQuestion?: () => ReactNode

    A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout.

    A custom style object to be added to the root element.

    @@ -103,6 +142,6 @@
    withDownloads?: boolean

    Whether to hide the download button.

    withSubscriptions?: boolean

    Whether to show the subscriptions button.

    withTitle?: boolean

    Whether the dashboard should display a title.

    -

    +

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/InteractiveQuestion.html b/_site/docs/latest/embedding/sdk/api/InteractiveQuestion.html index 3878d95b55..c72b278689 100644 --- a/_site/docs/latest/embedding/sdk/api/InteractiveQuestion.html +++ b/_site/docs/latest/embedding/sdk/api/InteractiveQuestion.html @@ -28,12 +28,23 @@
  • Optionalheight?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

  • OptionalhiddenParameters?: string[]

    A list of parameters to hide.

  • OptionalinitialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
  • OptionalinitialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
  • OptionalisSaveEnabled?: boolean

    Whether to show the save button.

  • OptionalonBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

  • OptionalonNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

  • OptionalonRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

  • OptionalonSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
  • OptionalonSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

  • OptionalonVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

  • Optionalplugins?: MetabasePluginsConfig
  • Optionalquery?: undefined
  • OptionalquestionId?: SdkQuestionId | null

    The ID of the question.
    @@ -48,6 +59,18 @@

  • new-native to show the SQL editor for creating new native questions
  • +
  • OptionalsqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

  • OptionaltargetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

  • Optionaltitle?: SdkQuestionTitleProps

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    @@ -56,6 +79,7 @@
  • OptionalwithAlerts?: boolean

    Enables the ability to set up alerts on the question.

  • OptionalwithChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

  • OptionalwithDownloads?: boolean

    Enables the ability to download results in the question.

    +
  • OptionalwithEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

  • Returns Element

    Index

    InteractiveQuestion

    BackButton Breakout BreakoutDropdown diff --git a/_site/docs/latest/embedding/sdk/api/InteractiveQuestionProps.html b/_site/docs/latest/embedding/sdk/api/InteractiveQuestionProps.html index 86b4051c42..1e1f7a807e 100644 --- a/_site/docs/latest/embedding/sdk/api/InteractiveQuestionProps.html +++ b/_site/docs/latest/embedding/sdk/api/InteractiveQuestionProps.html @@ -21,7 +21,7 @@ -

    Interface InteractiveQuestionProps

    interface InteractiveQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        query?: undefined;
        questionId?: SdkQuestionId
        | null;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className? +

    Interface InteractiveQuestionProps

    interface InteractiveQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onSqlParametersChange?: (payload: SqlParameterChangePayload) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        query?: undefined;
        questionId?: SdkQuestionId
        | null;
        sqlParameters?: SqlParameterValues;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withEditorButton?: boolean;
    }
    Index

    Properties

    className?: string

    A custom class name to be added to the root element.

    dataPicker?: EmbeddingDataPicker

    Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting dataPicker = "staged".

    entityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    hiddenParameters?: string[]

    A list of parameters to hide.

    initialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

    onRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

    Type Declaration

      • (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • display:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new display type

        Returns void

    query?: undefined
    questionId?: SdkQuestionId | null

    The ID of the question. @@ -72,6 +86,18 @@

  • new-native to show the SQL editor for creating new native questions
  • +
    sqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +

    A custom style object to be added to the root element.

    targetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    @@ -80,6 +106,7 @@
    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +
    withEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

    +

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/MetabaseFontFamily.html b/_site/docs/latest/embedding/sdk/api/MetabaseFontFamily.html index abc8c6f7b4..4c5397a658 100644 --- a/_site/docs/latest/embedding/sdk/api/MetabaseFontFamily.html +++ b/_site/docs/latest/embedding/sdk/api/MetabaseFontFamily.html @@ -21,6 +21,6 @@ -

    Type Alias MetabaseFontFamily

    MetabaseFontFamily:
        | "Roboto"
        | "Merriweather"
        | "Open Sans"
        | "Lato"
        | "Noto Sans"
        | "Roboto Slab"
        | "Source Sans Pro"
        | "Raleway"
        | "Slabo 27px"
        | "PT Sans"
        | "Poppins"
        | "PT Serif"
        | "Roboto Mono"
        | "Roboto Condensed"
        | "Playfair Display"
        | "Oswald"
        | "Ubuntu"
        | "Montserrat"
        | "Lora"
        | "Custom"

    +

    Type Alias MetabaseFontFamily

    MetabaseFontFamily:
        | "Roboto"
        | "Merriweather"
        | "Open Sans"
        | "Lato"
        | "Inter"
        | "Noto Sans"
        | "Roboto Slab"
        | "Source Sans Pro"
        | "Raleway"
        | "Slabo 27px"
        | "PT Sans"
        | "Poppins"
        | "PT Serif"
        | "Roboto Mono"
        | "Roboto Condensed"
        | "Playfair Display"
        | "Oswald"
        | "Ubuntu"
        | "Montserrat"
        | "Lora"
        | "Custom"

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/ParameterChangePayload.html b/_site/docs/latest/embedding/sdk/api/ParameterChangePayload.html new file mode 100644 index 0000000000..ff929b9053 --- /dev/null +++ b/_site/docs/latest/embedding/sdk/api/ParameterChangePayload.html @@ -0,0 +1,31 @@ +ParameterChangePayload | Embedded analytics SDK API + + + + + + + + + + + + + + + + + + + + + + +

    Type Alias ParameterChangePayload

    Payload passed to onParametersChange callback

    +
    Index

    Properties

    defaultParameters: ParameterValues
    lastUsedParameters: ParameterValues
    parameters: ParameterValues

    + + \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/ParameterChangeSource.html b/_site/docs/latest/embedding/sdk/api/ParameterChangeSource.html new file mode 100644 index 0000000000..92ec0417d8 --- /dev/null +++ b/_site/docs/latest/embedding/sdk/api/ParameterChangeSource.html @@ -0,0 +1,32 @@ +ParameterChangeSource | Embedded analytics SDK API + + + + + + + + + + + + + + + + + + + + + + +

    Type Alias ParameterChangeSource

    ParameterChangeSource: "initial-state" | "manual-change" | "auto-change"

    Source of a parameter-change event:

    +
      +
    • initial-state - first applied snapshot, fired once per dashboard load.
    • +
    • manual-change - user edited parameters in UI.
    • +
    • auto-change - in the case of auto-updates, e.g. to pass normalized values back to parent.
    • +
    +

    + + \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/SdkQuestionProps.html b/_site/docs/latest/embedding/sdk/api/SdkQuestionProps.html index dbd528a988..c2d113fc6f 100644 --- a/_site/docs/latest/embedding/sdk/api/SdkQuestionProps.html +++ b/_site/docs/latest/embedding/sdk/api/SdkQuestionProps.html @@ -21,7 +21,7 @@ -

    Interface SdkQuestionProps

    interface SdkQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        questionId?: SdkQuestionId
        | null;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className? +

    Interface SdkQuestionProps

    interface SdkQuestionProps {
        className?: string;
        dataPicker?: EmbeddingDataPicker;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialCollection?: SdkCollectionId;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: MetabaseQuestion | undefined,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onNavigateBack?: () => void;
        onRun?: (question: MetabaseQuestion | undefined) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        onSqlParametersChange?: (payload: SqlParameterChangePayload) => void;
        onVisualizationChange?: (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        questionId?: SdkQuestionId
        | null;
        sqlParameters?: SqlParameterValues;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withEditorButton?: boolean;
    }
    Index

    Properties

    className?: string

    A custom class name to be added to the root element.

    dataPicker?: EmbeddingDataPicker

    Controls the menu for selecting data sources in questions. You can opt for the full data picker by setting dataPicker = "staged".

    entityTypes?: EmbeddingEntityType[]

    An array that specifies which entity types are available in the data picker

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    hiddenParameters?: string[]

    A list of parameters to hide.

    initialCollection?: SdkCollectionId

    The collection to preselect in the save modal's collection picker. Unlike targetCollection, the picker remains visible and the user can choose a different collection. Ignored when targetCollection is set.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: MetabaseQuestion | undefined,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onNavigateBack?: () => void

    A callback function that triggers when a user clicks the back button.

    onRun?: (question: MetabaseQuestion | undefined) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        display:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when the visualization type changes.

    Type Declaration

      • (
            display:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • display:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new display type

          -

        Returns void

    questionId?: SdkQuestionId | null

    A custom style object to be added to the root element.

    +

    Returns void

    questionId?: SdkQuestionId | null
    sqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
    +

    A custom style object to be added to the root element.

    targetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    token?: string | null
    width?: Width<string | number>

    A number or string specifying a CSS size value that specifies the width of the component

    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +
    withEditorButton?: boolean

    Determines whether the editor button is shown. Only relevant when using the default layout.

    +

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/SqlParameterChangePayload.html b/_site/docs/latest/embedding/sdk/api/SqlParameterChangePayload.html new file mode 100644 index 0000000000..745d058d17 --- /dev/null +++ b/_site/docs/latest/embedding/sdk/api/SqlParameterChangePayload.html @@ -0,0 +1,30 @@ +SqlParameterChangePayload | Embedded analytics SDK API + + + + + + + + + + + + + + + + + + + + + + +

    Type Alias SqlParameterChangePayload

    Payload passed to onSqlParametersChange callback

    +
    type SqlParameterChangePayload = {
        defaultParameters: ParameterValues;
        parameters: ParameterValues;
        source: SqlParameterChangeSource;
    }
    Index

    Properties

    defaultParameters: ParameterValues
    parameters: ParameterValues

    + + \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/SqlParameterChangeSource.html b/_site/docs/latest/embedding/sdk/api/SqlParameterChangeSource.html new file mode 100644 index 0000000000..721339be17 --- /dev/null +++ b/_site/docs/latest/embedding/sdk/api/SqlParameterChangeSource.html @@ -0,0 +1,32 @@ +SqlParameterChangeSource | Embedded analytics SDK API + + + + + + + + + + + + + + + + + + + + + + +

    Type Alias SqlParameterChangeSource

    SqlParameterChangeSource: "initial-state" | "manual-change" | "auto-change"

    Source of a sql-parameter-change event:

    +
      +
    • initial-state - first applied state, fired once per question load.
    • +
    • manual-change - user edited parameters in UI.
    • +
    • auto-change - in the case of auto-updates, e.g. to pass normalized values back to parent.
    • +
    +

    + + \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/StaticDashboard.html b/_site/docs/latest/embedding/sdk/api/StaticDashboard.html index ef2068efd3..76372643f0 100644 --- a/_site/docs/latest/embedding/sdk/api/StaticDashboard.html +++ b/_site/docs/latest/embedding/sdk/api/StaticDashboard.html @@ -41,17 +41,43 @@
  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
  • OptionalinitialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

  • OptionalinitialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • OptionalonLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

  • OptionalonLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
  • OptionalonParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

  • OptionalonVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    +
  • Optionalparameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
  • Optionalplugins?: MetabasePluginsConfig

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

  • Optionaltoken?: string | null

    A valid JWT token for the guest embed.

    diff --git a/_site/docs/latest/embedding/sdk/api/StaticDashboardProps.html b/_site/docs/latest/embedding/sdk/api/StaticDashboardProps.html index 9d7a643fa4..ed6d23512a 100644 --- a/_site/docs/latest/embedding/sdk/api/StaticDashboardProps.html +++ b/_site/docs/latest/embedding/sdk/api/StaticDashboardProps.html @@ -21,7 +21,7 @@ -

    Interface StaticDashboardProps

    interface StaticDashboardProps {
        autoRefreshInterval?: number;
        className?: string;
        dashboardId?: SdkDashboardId | null;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: MetabaseDashboard | null) => void;
        onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
        onVisualizationChange?: (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        token?: string
        | null;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withSubscriptions?: boolean;
        withTitle?: boolean;
    }
    Index

    Properties

    autoRefreshInterval? +

    Interface StaticDashboardProps

    interface StaticDashboardProps {
        autoRefreshInterval?: number;
        className?: string;
        dashboardId?: SdkDashboardId | null;
        dataPickerProps?: Pick<SdkQuestionProps, "entityTypes">;
        hiddenParameters?: string[];
        initialParameters?: ParameterValues;
        onLoad?: (dashboard: MetabaseDashboard | null) => void;
        onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void;
        onParametersChange?: (payload: ParameterChangePayload) => void;
        onVisualizationChange?: (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ) => void;
        parameters?: ParameterValues;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        token?: string
        | null;
        withCardTitle?: boolean;
        withDownloads?: boolean;
        withSubscriptions?: boolean;
        withTitle?: boolean;
    }
    Index
  • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
  • -
    initialParameters?: ParameterValues

    Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

    initialParameters?: ParameterValues

    Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter:

      +
    • set to a value (string for a single option, array of strings for multiple): that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default). +
      +
    • Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
    • Combining initialParameters and hiddenParameters to declutter the user interface is fine.
    onLoad?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded.

    onLoadWithoutCards?: (dashboard: MetabaseDashboard | null) => void

    Callback that is called when the dashboard is loaded without cards.

    +
    onParametersChange?: (payload: ParameterChangePayload) => void

    Fires on parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    onVisualizationChange?: (
        visualization:
            | "object"
            | "table"
            | "bar"
            | "line"
            | "pie"
            | "scalar"
            | "row"
            | "area"
            | "combo"
            | "pivot"
            | "smartscalar"
            | "gauge"
            | "progress"
            | "funnel"
            | "map"
            | "scatter"
            | "boxplot"
            | "waterfall"
            | "sankey"
            | "list",
    ) => void

    A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question.

    Type Declaration

      • (
            visualization:
                | "object"
                | "table"
                | "bar"
                | "line"
                | "pie"
                | "scalar"
                | "row"
                | "area"
                | "combo"
                | "pivot"
                | "smartscalar"
                | "gauge"
                | "progress"
                | "funnel"
                | "map"
                | "scatter"
                | "boxplot"
                | "waterfall"
                | "sankey"
                | "list",
        ): void
      • Parameters

        • visualization:
              | "object"
              | "table"
              | "bar"
              | "line"
              | "pie"
              | "scalar"
              | "row"
              | "area"
              | "combo"
              | "pivot"
              | "smartscalar"
              | "gauge"
              | "progress"
              | "funnel"
              | "map"
              | "scatter"
              | "boxplot"
              | "waterfall"
              | "sankey"
              | "list"

          the new visualization type

          -

        Returns void

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    +

    Returns void

    parameters?: ParameterValues

    Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onParametersChange to stay in sync with user edits. +
    • +
    • Combining parameters and hiddenParameters to filter data on the frontend is a security risk. +
    • +
    • Combining parameters and hiddenParameters to declutter the user interface is fine.
    • +
    +

    Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

    A custom style object to be added to the root element.

    token?: string | null

    A valid JWT token for the guest embed.

    withCardTitle?: boolean

    Whether the dashboard cards should display a title.

    withDownloads?: boolean

    Whether to hide the download button.

    withSubscriptions?: boolean

    Whether to show the subscriptions button.

    withTitle?: boolean

    Whether the dashboard should display a title.

    -

    +

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/StaticQuestion.html b/_site/docs/latest/embedding/sdk/api/StaticQuestion.html index 501fb50245..87b6e4afc8 100644 --- a/_site/docs/latest/embedding/sdk/api/StaticQuestion.html +++ b/_site/docs/latest/embedding/sdk/api/StaticQuestion.html @@ -25,7 +25,18 @@

    Parameters

    • props: StaticQuestionProps
      • OptionalclassName?: string

        A custom class name to be added to the root element.

      • Optionalheight?: Height<string | number>

        A number or string specifying a CSS size value that specifies the height of the component

      • OptionalhiddenParameters?: string[]

        A list of parameters to hide.

        -
      • OptionalinitialSqlParameters?: SqlParameterValues

        Initial values for the SQL parameters.

        +
      • OptionalinitialSqlParameters?: SqlParameterValues

        Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
        +For each parameter: +

        +
          +
        • set to a value: that value is applied. +
        • +
        • set to null: strictly cleared, ignoring the parameter's default. +
        • +
        • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
        • +
        +
      • OptionalonSqlParametersChange?: (payload: SqlParameterChangePayload) => void

        Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

      • Optionalquery?: undefined
      • OptionalquestionId?: SdkQuestionId | null

        The ID of the question.
        This is either: @@ -39,6 +50,18 @@

      • new-native to show the SQL editor for creating new native questions
      +
  • OptionalsqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +
  • Optionalstyle?: CSSProperties

    A custom style object to be added to the root element.

  • Optionaltitle?: SdkQuestionTitleProps

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

  • Optionaltoken?: string | null

    A valid JWT token for the guest embed.

    diff --git a/_site/docs/latest/embedding/sdk/api/StaticQuestionProps.html b/_site/docs/latest/embedding/sdk/api/StaticQuestionProps.html index c2d303b825..61f7352e6a 100644 --- a/_site/docs/latest/embedding/sdk/api/StaticQuestionProps.html +++ b/_site/docs/latest/embedding/sdk/api/StaticQuestionProps.html @@ -21,12 +21,14 @@ -

    Interface StaticQuestionProps

    interface StaticQuestionProps {
        className?: string;
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialSqlParameters?: SqlParameterValues;
        query?: undefined;
        questionId?: SdkQuestionId | null;
        style?: CSSProperties;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className? +

    Interface StaticQuestionProps

    interface StaticQuestionProps {
        className?: string;
        height?: Height<string | number>;
        hiddenParameters?: string[];
        initialSqlParameters?: SqlParameterValues;
        onSqlParametersChange?: (payload: SqlParameterChangePayload) => void;
        query?: undefined;
        questionId?: SdkQuestionId | null;
        sqlParameters?: SqlParameterValues;
        style?: CSSProperties;
        title?: SdkQuestionTitleProps;
        token?: string | null;
        width?: Width<string | number>;
        withAlerts?: boolean;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
    }
    Index

    Properties

    className?: string

    A custom class name to be added to the root element.

    height?: Height<string | number>

    A number or string specifying a CSS size value that specifies the height of the component

    hiddenParameters?: string[]

    A list of parameters to hide.

    -
    initialSqlParameters?: SqlParameterValues

    Initial values for the SQL parameters.

    +
    initialSqlParameters?: SqlParameterValues

    Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host. +
    +For each parameter: +

    +
      +
    • set to a value: that value is applied. +
    • +
    • set to null: strictly cleared, ignoring the parameter's default. +
    • +
    • omitted (or set to undefined): falls back to the parameter's default (or null if it has no default).
    • +
    +
    onSqlParametersChange?: (payload: SqlParameterChangePayload) => void

    Fires on SQL parameters change. The payload's source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change').

    query?: undefined
    questionId?: SdkQuestionId | null

    The ID of the question.
    This is either: @@ -51,6 +64,18 @@

  • new-native to show the SQL editor for creating new native questions
  • +
    sqlParameters?: SqlParameterValues

    Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question's parameter values: +

    +
      +
    • a parameter set to a value uses that value. +
    • +
    • a parameter set to null is cleared, even if it has a default. +
    • +
    • a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default). +
      +
      +Pair with onSqlParametersChange to stay in sync with user edits.
    • +

    A custom style object to be added to the root element.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default.

    token?: string | null

    A valid JWT token for the guest embed.

    @@ -58,6 +83,6 @@
    withAlerts?: boolean

    Enables the ability to set up alerts on the question.

    withChartTypeSelector?: boolean

    Determines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.

    withDownloads?: boolean

    Enables the ability to download results in the question.

    -

    +

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/assets/navigation.js b/_site/docs/latest/embedding/sdk/api/assets/navigation.js index d6af4cbcb8..2755dbda4a 100644 --- a/_site/docs/latest/embedding/sdk/api/assets/navigation.js +++ b/_site/docs/latest/embedding/sdk/api/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "eJylWtty2zYQ/Rc+ezqtp0mnflN8Se3YrWrJzkMmDxC5EVGBgAIurTid/HuHupAgsLiQfbIH5+AcLAAuF6A+/ZshfMPsIrtUQkCOXMl3Wu1q0NlZlpdcFBpkdvEpyNsyLCnopxIrkZ1lGy6L7OLtrz/O/DJzrbZ1QGuPDwXP37z98dnU1MAQrlhdrhTTxYMqmPBFQVNP5gQaioWg2+H4KCkR/d1A3c5EMBaDNPA8tdvjP8tyweo6u8gK2GrIGUKRea3JcAZgOJAuck8M1wVHthJg8o5eDhRYiVuJoFmO/IVSotCA2AIZ8pzQsYCAhDN2ax5p3J3KcISWqJcS0rVisiQpNLzgxiAi25dmurH4NrK5yzQXYllq1axLz871UhIn/dTnsmQal69buNJqW6id7ZPcZaRvu2OUftcgOqGlsCe5pfpMcYhrT1E9/V0AIpfrOn2Rgj0njuKZ1w0T/DtLC9jfbaT/I9SAqVvFJo/0WrD+/xulq7gh2WOk65KjgLhVTwumwGLj2ZU2MnKU71i+SV0Gi2s5/fz7b7+8OY+4aWAb1WD6nid7THDuEtwC2totJXHQXSZ4X6mdFIoVH3mxhhGxB/r971GMdZ/qesMFgk6PmeBPdk11m+pi5+PxGXyqc5ufUp9aizvFrakqpvn3EfUE3YX2NkuzB0C2YnWbEF944T3oFfCFSziRZw2Wl0p+4et+TD5GoEIjvI9iNjJCxJoqEg6l7FCMsejcxXV7fORYzrb8A7yGdHvWNIe7Hcbk73Y4TXvBKhETbzmp6rf1+3YThybcoSRubIWR84bLMp17ILYBeya1/yw0fFg6HK8i43ZIg7NZwqiHRPKEN2LMyxIqLtehSWY1XFcrKAou1y0dns/ddbYZoQd1Xy1cKqG0qWS2pm7APZ18IE9IqtJw/LH44ptYYelNyVQBpaqtkiAxUmd1tJREuJ8DIqMe2lMUPE+XgaSoeKaUmkniMiM0RT5GSJUsBka89ft9Su3daG/7QvSe123PppKha1ODFXVoalRVd8lz2d5TgmxuESrDwE+K6Q86HXRc/QBplH7byaPaQqO1DkO5FlCBxIDwgJfiQk+zjcSUuixzxZDNeb4xSysCTNa7lsjxtT2hEXo9GNXrmIfjwAd4Na9BCTRaQ+dK/snM9HBqiVffHHl3sdJmgmaQPF00pniv1twRMhqT30qC55tZTidOA5ygNxfNmsvaV235mCPep8e8Q741jth4teFTQePpqscs73mtDPFUVeL7gAON1oqsFs1Ld0E2V1ziX6t/ICcODRZhdCV0KqGC5V5PStW/AczLR/javrSXagPyhthsBClZX0m8YRUXRFXYY6lq74VaMRFZSIKUqh9RnqS53/hz3d4Ee6quA5iq91RTJ/wn58uwR0HhbA0S9zXSA9Q1W9tPLcEYoxwUnaC3hG9hTYOQqNtOVkjWwmOqc6ZZBQj6mYkGjLeVBUR1tELIEQr3IOVAMa1FsTESuvmddQgk6HSJ8VBRzJuV4Ll7me+njfGwhmq0j1G5V6y4fhkUlSScoHmIxhrWqTG5/z5rEhL79hQVrZXu3qVDoQE0WstdSAJPUW3n8w8mCwHaSaA0nqDafQsNbj0va4SDtcJ98wgN6ssZCSdotjnIGtOhKdr3q/AmJBeLqbWe7eczkMXdDh+h3ipZGxmTxuM3Mk0Ns+1W8Hx/IjieOajrGZJ4NHcx56bO9nxhXLQ/DmlrjzpgafMMxwEUM7R+ozTbcr8pye2NXTj951P2RiDh8N1kO4JGa5D45P8hm0Myht+3xybNvAvvToAeO5Lbu7pwkrnCiKNC10ZhYEGOjH1VRd9t91BiGbNP1L4axgQT9XxSiSpP3TQ8Qt0IHCSJAeJLD5//AyT7V6k=" \ No newline at end of file +window.navigationData = "eJylWsly3DYQ/ReeVanEFTsV3WQtjrdkopHsg8sHDNkeIgMCY7ApWU7531OYjSDQ2JiTVHgP72FtNMD59G+F8A2r8+pSCQE1ciVfavXYg67OqrrlotEgq/NPUd6WYUtBP7XYieqs2nDZVOcvfv1xFpZZaLXtI1o7fCr47PmLH59tTQ0M4Yr17Uox3bxXDROhXtDUozmBxvpC0N3uhCg5Pfp7gN6MRLQvFmnieSx3239W1YL1fXVeNbDVUDOEpgpak92ZgPGOnHoe6MN1w5GtBNi8g5cHRWbitUTQrEb+QClRaERsiQx5Teg4QETCa7szjjTuD2W8h45okBLTdfrkSFJoTG3BNOsAQV+2TK5hwZ6EYtYI0rij+PPvv/3y/FlYdakGXUNQdA/Tmp/pEU1sNJrpj3poy9n7QXMh7lqthnUb2GNBSubyONa5bJnGu6ctXGm1bdSj65NdpdDXrG2lXw6IXtdy2LPccn3mOKS156ge/y4Bkct1nz9J0ZozW/GB9wMT/DvL63C4WqH/LfSAuUvFJRd6Ldn4/43SXdqQrFHoesdRQNpqpEWDdbMJrEoXKWzlS1ZvcqfB4aaCN6WggW3UgPlrnqwxw/kU4JZgssycwEFXmeF9pR6lOe0+8mYNBX2P1PvfrSh1n+t6wwWCzu8zwZ/tmus218WNx+URfK6ziU+5u9bhznEbuo5p/r0gn6CrpLyXX0UqjwxSyrXdbDLESCeU7wHZivUmjD/wJniRbuALl3AkXwzYXir5ha/HJoQYkbyS8D6IuUiBiDPBJBw7aGJ9TPXOnzq/xkeO7cWWv4WnmO7Imufw5hFT8m8ecZ72knUiJW44ueqv+1dm68UG3KNkLmyFiVuSz7KdRyC1AEcmtf4cNP76sL++JtrtkSZ334xWT4nkDbqgzXctdFyuY4PMerjuVtA0XK4NHT488+fZZcQ26i7HuVRCaVvJLs1dgDs6uSGPSK7StP2p/qUXscI2GJKptE91WyVBYiI7PNFyAuFuDIiIui/PUQjsLgvJUQkMKTWSxGNRbIhCjJgqmcIU5CrjOqXWbrK2++D8jvem5tDJ2LO0xUo6DD2q7vSIdmnegUEOrxE6yyBMSulPKu11fP0IqUjfVAqoGqhYa9+UawEdSIwIT3g5LvQwu0hK6RRlrhiyBa83dmpFgNl61xI5Ppl7JaE3gkm9E3N/iXkLT/YzM4EmM/9ayT+ZHR6OJek7A0d+eg4ykWCYBE8fTSm+U2vuCVmF2aeS4PXmoqYDpwXO0FuIYc1lH8q2QsyC8/QQd8hT44CVq013BY3nqx6ifOBYmeK5qsT3Fw8q1krMFs3Ld0G2UFziX6t/oCYuDQ6hOBM6plDRdG8k5erfANbtLXw1h/ad2oC8IRYbQcrWVxJvWMcFkRWOWK7aK6FWTCQmkiDl6ieUZ2nuFv5Cm/frQNa1B3P17nvqhn/vfXkPKCi8WIPEXY70Hvqerd1dSzBKlKOiM/Tu4Ftc0yJk6prBisk6ePYnyg9MDGCdVg6Q1NEKoUZo/IuUByXfupqNFdDt17MpkKFzCoz7jGIxrASv/U8QYVqJh9NUq7xE5Z1izfXDJKkk4QzNfW+cZh0Ls+vvoiYhsSvPUdFa6dNZOhWaQMVa/kQSeI6qGc8/mGwEaC+A0niG6ukLbnTpBVkFDs4Mj8UFGtT3PhLO0DQxyGnTvqjkldsNSD6WUjOe5qMfyObNI95Cv1WytyImjadfZIYeLrZbwevdjeBw56CeZ0jiwdzHvJc61/OBcWF+fGNyjz5i6fIsxwmUMnR+A3ax5WFTkjsa+3D+z9PchUDC8bdJ04JBa5B4H/6hoEeymj+WpwbNfgs/3QADdiR3dPXhLHOFCUeFvo3CyIQcGLusin7bHqHMNGYXqEM5jA1m6oWkMlXuT8NwC/0gcBIkJkgoPHz+D9w00Bk=" \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/assets/search.js b/_site/docs/latest/embedding/sdk/api/assets/search.js index c2337b3e87..8e145947b8 100644 --- a/_site/docs/latest/embedding/sdk/api/assets/search.js +++ b/_site/docs/latest/embedding/sdk/api/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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u767T+abWCDfbt+MewbMu+fd65eUfTrB5away7S+a7+fqcOu97ArS1DGLGJDlHm2nPcDM40597q7NU39u6bgvfaNm3fuqvd/q+61OXWfiuOOdxuacza267Y9d7uPPdkQ+7g97BD7XHvGouzjJs0JtM+z6jDPae/urXR3M6p8YmszT/OxrHc2lz4dfVnG9N3R8Hsn++J915gp45uueVq75kvJuwG+5T20unV9cdzF2c9j2t1ivjjuxrdY861IV/BTVkwv3+db8dPpaciN4VvSkl73smbeU7nxiYS7BlStJV4aZVvcZ+8wLn7W9iF/LewdxIQ105uI2TagfcSEFZytxBV24N3EpC28DcV8e6b3FFOmzd9W3MXKefdv9uZito0T+4sJA2duMWZbl91lTNjF3mjMtii/15gwib/dmG0T2XFMGDKx6bhSO9x3sCxhbT2usCq7+5i0ir0BucKqsT3IpGFztiGzbQM7kQmD/hW+TPcjUyZMbElm62fsSiZMumJjMtvKeG8yYdD49mS27niHMqF7fJMyWzfep0zYwNuqXGVLulth2DK9YbnKFrxnYdjD27ZcZdPs53T7M8rsX/xbnFSJyC7Ixnvw9ze78rk47Tt7FKmEkzRD0YezkMYLmbw/E9ebnZ+smflpiWNqU1sr+bPTlZbedDv/Bfdxyu/82dJxXxta8f2LW72UyL66jmlwJRmLeJX0qD3XVdJjWMOocprYckW9U74lnOJVOYuuqWI1bdmsaqjUtJvqos6wjVMhNWvbNbVSp23jV02lhl1fP3WuVdc80ttrqk5bOV1dlVo1v84q14r5o9W1tVenLZquwkptmV+PlWvFNb5zfY3WaavmVmultt1at5VhIaOCa2LVFbVc+ZZccZeuru86bZVvyan0Su26pebrfMuu8f171IHlW8quCJsz8+rasNM2MqvEUsuurBc7bQ+vciw157oasjxrfOuparLIpmvryjIsm1NhNjHtllqzDNs4VWcTm66pPzvDlmuGiZtq0k7bNlmdltozu07ttA0zK9ZSi26sXQvtm9ihhyvByaBQ0pi/XydVadjCpwrUsC4pG/eJK1XxjZqqWzXTKtYzYj6dmc/ltWi90zJmCqriw2vReqe9YsoILyz7jGxlwG+zjGrq4tznRksmnsvkE5n5LEZzL646wJg1mn9+cdwExvHFuTag04vjRnAO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"; \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/api/index.html b/_site/docs/latest/embedding/sdk/api/index.html index 2748648e2d..5d43666af8 100644 --- a/_site/docs/latest/embedding/sdk/api/index.html +++ b/_site/docs/latest/embedding/sdk/api/index.html @@ -21,6 +21,6 @@ -

    Embedded analytics SDK API

    CollectionBrowser

    CollectionBrowser
    CollectionBrowserProps

    CreateDashboardModal

    CreateDashboardModal
    CreateDashboardModalProps

    CreateQuestion

    CreateQuestion
    CreateQuestionProps

    Dashboard

    EditableDashboard
    InteractiveDashboard
    StaticDashboard
    EditableDashboardProps
    InteractiveDashboardProps
    StaticDashboardProps

    InteractiveQuestion

    InteractiveQuestion
    DrillThroughQuestionProps
    InteractiveQuestionChartTypeDropdownProps
    InteractiveQuestionEditorButtonProps
    InteractiveQuestionEditorProps
    InteractiveQuestionProps
    InteractiveQuestionQuestionSettingsDropdownProps
    InteractiveQuestionQuestionVisualizationProps
    InteractiveQuestionResetButtonProps
    InteractiveQuestionSaveQuestionFormProps
    InteractiveQuestionTitleProps
    SdkQuestionProps
    InteractiveQuestionBackButtonProps
    InteractiveQuestionBreakoutDropdownProps
    InteractiveQuestionChartTypeSelectorProps
    InteractiveQuestionDownloadWidgetDropdownProps
    InteractiveQuestionDownloadWidgetProps
    InteractiveQuestionFilterDropdownProps
    InteractiveQuestionFilterProps
    InteractiveQuestionQuestionSettingsProps
    InteractiveQuestionSaveButtonProps
    InteractiveQuestionSummarizeDropdownProps

    MetabaseProvider

    defineMetabaseAuthConfig
    MetabaseProvider
    MetabaseProviderProps
    MetabaseAuthConfig
    MetabaseAuthConfigWithApiKey
    MetabaseAuthConfigWithJwt
    MetabaseAuthConfigWithSaml
    MetabaseIsGuestAuthConfig

    MetabotQuestion

    MetabotQuestion
    MetabotQuestionProps

    StaticQuestion

    StaticQuestion
    StaticQuestionProps

    Theming

    MetabaseEmbeddingThemeV2
    ChartColorV2
    MetabaseColorKey
    MetabaseEmbeddingTheme

    other

    InteractiveQuestionComponents
    MetabaseColors
    MetabaseQuestion
    MetabaseTheme
    StaticQuestionComponents
    ButtonProps
    ChartColor
    CollectionBrowserListColumns
    CustomDashboardCardMenuItem
    DashboardCardCustomMenuItem
    DashboardCardMenu
    DashboardCardMenuCustomElement
    DashCardMenuItem
    EmbeddingDataPicker
    EmbeddingEntityType
    EntityTypeFilterKeys
    IconName
    InitializationStatus
    LoginStatus
    MetabaseClickAction
    MetabaseClickActionPluginsConfig
    MetabaseCollection
    MetabaseCollectionItem
    MetabaseComponentTheme
    MetabaseDashboard
    MetabaseDashboardPluginsConfig
    MetabaseDataPointObject
    MetabaseEmbeddingColorKeyV2
    MetabaseFetchRequestTokenFn
    MetabaseFontFamily
    MetabaseGlobalPluginsConfig
    MetabasePluginsConfig
    MetabaseThemePreset
    MetabaseUser
    MetabotAgentChartMessage
    MetabotAgentMessage
    MetabotAgentTextMessage
    MetabotUserTextMessage
    ParameterValues
    ProtectedColorKey
    SdkCollectionId
    SdkDashboardEntityPublicProps
    SdkDashboardId
    SdkDashboardLoadEvent
    SdkEntityId
    SdkEntityToken
    SdkErrorComponent
    SdkErrorComponentProps
    SdkEventHandlersConfig
    SdkQuestionEntityPublicProps
    SdkQuestionId
    SdkQuestionTitleProps
    SdkUserId
    SqlParameterValues
    UserBackendJwtResponse

    useApplicationName

    useApplicationName

    useAvailableFonts

    useAvailableFonts

    useCreateDashboardApi

    useCreateDashboardApi
    CreateDashboardValues

    useCurrentUser

    useCurrentUser

    useMetabaseAuthStatus

    useMetabaseAuthStatus

    useMetabot

    useMetabot
    MetabotChartProps
    MetabotErrorMessage
    MetabotMessage
    UseMetabotResult

    +

    Embedded analytics SDK API

    CollectionBrowser

    CollectionBrowser
    CollectionBrowserProps

    CreateDashboardModal

    CreateDashboardModal
    CreateDashboardModalProps

    CreateQuestion

    CreateQuestion
    CreateQuestionProps

    Dashboard

    EditableDashboard
    InteractiveDashboard
    StaticDashboard
    EditableDashboardProps
    InteractiveDashboardProps
    StaticDashboardProps
    ParameterChangePayload
    ParameterChangeSource

    InteractiveQuestion

    InteractiveQuestion
    DrillThroughQuestionProps
    InteractiveQuestionChartTypeDropdownProps
    InteractiveQuestionEditorButtonProps
    InteractiveQuestionEditorProps
    InteractiveQuestionProps
    InteractiveQuestionQuestionSettingsDropdownProps
    InteractiveQuestionQuestionVisualizationProps
    InteractiveQuestionResetButtonProps
    InteractiveQuestionSaveQuestionFormProps
    InteractiveQuestionTitleProps
    SdkQuestionProps
    InteractiveQuestionBackButtonProps
    InteractiveQuestionBreakoutDropdownProps
    InteractiveQuestionChartTypeSelectorProps
    InteractiveQuestionDownloadWidgetDropdownProps
    InteractiveQuestionDownloadWidgetProps
    InteractiveQuestionFilterDropdownProps
    InteractiveQuestionFilterProps
    InteractiveQuestionQuestionSettingsProps
    InteractiveQuestionSaveButtonProps
    InteractiveQuestionSummarizeDropdownProps
    SqlParameterChangePayload
    SqlParameterChangeSource

    MetabaseProvider

    defineMetabaseAuthConfig
    MetabaseProvider
    MetabaseProviderProps
    MetabaseAuthConfig
    MetabaseAuthConfigWithApiKey
    MetabaseAuthConfigWithJwt
    MetabaseAuthConfigWithSaml
    MetabaseIsGuestAuthConfig

    MetabotQuestion

    MetabotQuestion
    MetabotQuestionProps

    StaticQuestion

    StaticQuestion
    StaticQuestionProps

    Theming

    MetabaseEmbeddingThemeV2
    ChartColorV2
    MetabaseColorKey
    MetabaseEmbeddingTheme

    other

    InteractiveQuestionComponents
    MetabaseColors
    MetabaseQuestion
    MetabaseTheme
    StaticQuestionComponents
    ButtonProps
    ChartColor
    CollectionBrowserListColumns
    CustomDashboardCardMenuItem
    DashboardCardCustomMenuItem
    DashboardCardMenu
    DashboardCardMenuCustomElement
    DashCardMenuItem
    EmbeddingDataPicker
    EmbeddingEntityType
    EntityTypeFilterKeys
    IconName
    InitializationStatus
    LoginStatus
    MetabaseClickAction
    MetabaseClickActionPluginsConfig
    MetabaseCollection
    MetabaseCollectionItem
    MetabaseComponentTheme
    MetabaseDashboard
    MetabaseDashboardPluginsConfig
    MetabaseDataPointObject
    MetabaseEmbeddingColorKeyV2
    MetabaseFetchRequestTokenFn
    MetabaseFontFamily
    MetabaseGlobalPluginsConfig
    MetabasePluginsConfig
    MetabaseThemePreset
    MetabaseUser
    MetabotAgentChartMessage
    MetabotAgentMessage
    MetabotAgentTextMessage
    MetabotUserTextMessage
    ParameterValues
    ProtectedColorKey
    SdkCollectionId
    SdkDashboardEntityPublicProps
    SdkDashboardId
    SdkDashboardLoadEvent
    SdkEntityId
    SdkEntityToken
    SdkErrorComponent
    SdkErrorComponentProps
    SdkEventHandlersConfig
    SdkQuestionEntityPublicProps
    SdkQuestionId
    SdkQuestionTitleProps
    SdkUserId
    SqlParameterValues
    UserBackendJwtResponse

    useApplicationName

    useApplicationName

    useAvailableFonts

    useAvailableFonts

    useCreateDashboardApi

    useCreateDashboardApi
    CreateDashboardValues

    useCurrentUser

    useCurrentUser

    useMetabaseAuthStatus

    useMetabaseAuthStatus

    useMetabot

    useMetabot
    MetabotChartProps
    MetabotErrorMessage
    MetabotMessage
    UseMetabotResult

    \ No newline at end of file diff --git a/_site/docs/latest/embedding/sdk/collections.html b/_site/docs/latest/embedding/sdk/collections.html index af3bddd66d..5399a1c811 100644 --- a/_site/docs/latest/embedding/sdk/collections.html +++ b/_site/docs/latest/embedding/sdk/collections.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6272,7 +6381,7 @@

      Props

      initialParameters? ParameterValues - Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options.
      - Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining initialParameters and hiddenParameters to declutter the user interface is fine. + Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
      For each parameter:
      - set to a value (string for a single option, array of strings for multiple): that value is applied.
      - set to null: strictly cleared, ignoring the parameter’s default.
      - omitted (or set to undefined): falls back to the parameter’s default (or null if it has no default).

      - Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining initialParameters and hiddenParameters to declutter the user interface is fine. onLoad? @@ -6284,11 +6393,21 @@

      Props

      (dashboard: MetabaseDashboard | null) => void Callback that is called when the dashboard is loaded without cards. + + onParametersChange? + (payload: ParameterChangePayload) => void + Fires on parameters change. The payload’s source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change'). + onVisualizationChange? (visualization: | "object" | "table" | "bar" | "line" | "pie" | "scalar" | "row" | "area" | "combo" | "pivot" | "smartscalar" | "gauge" | "progress" | "funnel" | "map" | "scatter" | "boxplot" | "waterfall" | "sankey" | "list") => void A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. + + parameters? + ParameterValues + Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard’s parameter values:
      - a parameter set to a value uses that value.
      - a parameter set to null is cleared, even if it has a default.
      - a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default).

      Pair with onParametersChange to stay in sync with user edits.
      - Combining parameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining parameters and hiddenParameters to declutter the user interface is fine. + plugins? MetabasePluginsConfig @@ -6392,7 +6511,7 @@

      Props

      initialParameters? ParameterValues - Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options.
      - Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining initialParameters and hiddenParameters to declutter the user interface is fine. + Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
      For each parameter:
      - set to a value (string for a single option, array of strings for multiple): that value is applied.
      - set to null: strictly cleared, ignoring the parameter’s default.
      - omitted (or set to undefined): falls back to the parameter’s default (or null if it has no default).

      - Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining initialParameters and hiddenParameters to declutter the user interface is fine. onLoad? @@ -6404,11 +6523,21 @@

      Props

      (dashboard: MetabaseDashboard | null) => void Callback that is called when the dashboard is loaded without cards. + + onParametersChange? + (payload: ParameterChangePayload) => void + Fires on parameters change. The payload’s source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change'). + onVisualizationChange? (visualization: | "object" | "table" | "bar" | "line" | "pie" | "scalar" | "row" | "area" | "combo" | "pivot" | "smartscalar" | "gauge" | "progress" | "funnel" | "map" | "scatter" | "boxplot" | "waterfall" | "sankey" | "list") => void A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. + + parameters? + ParameterValues + Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard’s parameter values:
      - a parameter set to a value uses that value.
      - a parameter set to null is cleared, even if it has a default.
      - a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default).

      Pair with onParametersChange to stay in sync with user edits.
      - Combining parameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining parameters and hiddenParameters to declutter the user interface is fine. + plugins? MetabasePluginsConfig @@ -6517,7 +6646,7 @@

      Props

      initialParameters? ParameterValues - Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options.
      - Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining initialParameters and hiddenParameters to declutter the user interface is fine. + Initial values for query parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
      For each parameter:
      - set to a value (string for a single option, array of strings for multiple): that value is applied.
      - set to null: strictly cleared, ignoring the parameter’s default.
      - omitted (or set to undefined): falls back to the parameter’s default (or null if it has no default).

      - Combining initialParameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining initialParameters and hiddenParameters to declutter the user interface is fine. onLoad? @@ -6529,11 +6658,21 @@

      Props

      (dashboard: MetabaseDashboard | null) => void Callback that is called when the dashboard is loaded without cards. + + onParametersChange? + (payload: ParameterChangePayload) => void + Fires on parameters change. The payload’s source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change'). + onVisualizationChange? (visualization: | "object" | "table" | "bar" | "line" | "pie" | "scalar" | "row" | "area" | "combo" | "pivot" | "smartscalar" | "gauge" | "progress" | "funnel" | "map" | "scatter" | "boxplot" | "waterfall" | "sankey" | "list") => void A callback function that triggers when a question is opened from a dashboard card or when the user changes the visualization type of a question. + + parameters? + ParameterValues + Controlled parameter values, slug-keyed. On every render, this object replaces the dashboard’s parameter values:
      - a parameter set to a value uses that value.
      - a parameter set to null is cleared, even if it has a default.
      - a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default).

      Pair with onParametersChange to stay in sync with user edits.
      - Combining parameters and hiddenParameters to filter data on the frontend is a security risk.
      - Combining parameters and hiddenParameters to declutter the user interface is fine. + plugins? MetabasePluginsConfig @@ -6611,6 +6750,10 @@

      Example }

  • +

    Pass parameter values to a dashboard

    + +

    See Modular embedding parameters.

    +

    Customizing dashboard height

    By default, dashboard components take full page height (100vh). You can override this with custom styles passed via style or className props.

    diff --git a/_site/docs/latest/embedding/sdk/introduction.html b/_site/docs/latest/embedding/sdk/introduction.html index fe24d77666..cdeb57fc3c 100644 --- a/_site/docs/latest/embedding/sdk/introduction.html +++ b/_site/docs/latest/embedding/sdk/introduction.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6293,7 +6402,12 @@

      Props

      initialSqlParameters? SqlParameterValues - Initial values for the SQL parameters. + Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
      For each parameter:
      - set to a value: that value is applied.
      - set to null: strictly cleared, ignoring the parameter’s default.
      - omitted (or set to undefined): falls back to the parameter’s default (or null if it has no default). + + + onSqlParametersChange? + (payload: SqlParameterChangePayload) => void + Fires on SQL parameters change. The payload’s source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change'). query? @@ -6305,6 +6419,11 @@

      Props

      SdkQuestionId | null The ID of the question.
      This is either:
      - the numerical ID when accessing a question link, i.e. http://localhost:3000/question/1-my-question where the ID is 1
      - the string ID found in the entity_id key of the question object when using the API directly or using the SDK Collection Browser to return data
      - new to show the notebook editor for creating new questions
      - new-native to show the SQL editor for creating new native questions + + sqlParameters? + SqlParameterValues + Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question’s parameter values:
      - a parameter set to a value uses that value.
      - a parameter set to null is cleared, even if it has a default.
      - a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default).

      Pair with onSqlParametersChange to stay in sync with user edits. + style? CSSProperties @@ -6424,7 +6543,7 @@

      Props

      initialSqlParameters? SqlParameterValues - Initial values for the SQL parameters. + Initial values for SQL parameters, slug-keyed. Applied once on mount; user widget edits afterwards are not reflected back to the host.
      For each parameter:
      - set to a value: that value is applied.
      - set to null: strictly cleared, ignoring the parameter’s default.
      - omitted (or set to undefined): falls back to the parameter’s default (or null if it has no default). isSaveEnabled? @@ -6451,6 +6570,11 @@

      Props

      (question: MetabaseQuestion, context: { dashboardTabId?: number; isNewQuestion: boolean; }) => void A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true + + onSqlParametersChange? + (payload: SqlParameterChangePayload) => void + Fires on SQL parameters change. The payload’s source distinguishes the initial state on load ('initial-state'), user edits in the UI ('manual-change'), and auto-updates ('auto-change'). + onVisualizationChange? (display: | "object" | "table" | "bar" | "line" | "pie" | "scalar" | "row" | "area" | "combo" | "pivot" | "smartscalar" | "gauge" | "progress" | "funnel" | "map" | "scatter" | "boxplot" | "waterfall" | "sankey" | "list") => void @@ -6471,6 +6595,11 @@

      Props

      SdkQuestionId | null The ID of the question.
      This is either:
      - the numerical ID when accessing a question link, i.e. http://localhost:3000/question/1-my-question where the ID is 1
      - the string ID found in the entity_id key of the question object when using the API directly or using the SDK Collection Browser to return data
      - new to show the notebook editor for creating new questions
      - new-native to show the SQL editor for creating new native questions + + sqlParameters? + SqlParameterValues + Controlled SQL parameter values, slug-keyed. On every render, this object replaces the question’s parameter values:
      - a parameter set to a value uses that value.
      - a parameter set to null is cleared, even if it has a default.
      - a parameter omitted from the object (or set to undefined) uses its default (or null if it has no default).

      Pair with onSqlParametersChange to stay in sync with user edits. + style? CSSProperties @@ -6511,20 +6640,17 @@

      Props

      boolean Enables the ability to download results in the question. + + withEditorButton? + boolean + Determines whether the editor button is shown. Only relevant when using the default layout. + -

      Pass SQL parameters to SQL questions with initialSqlParameters

      - -

      You can pass parameter values to questions defined with SQL via the initialSqlParameters prop, in the format of {parameter_name: parameter_value}. Learn more about SQL parameters.

      - -
      <StaticQuestion
      -  questionId={questionId}
      -  initialSqlParameters={{ product_id: 50 }}
      -/>
      -
      +

      Pass parameters to SQL questions

      -

      initialSqlParameters can’t be used with questions built using the query builder.

      +

      See Modular embedding parameters.

      Enable alerts on embedded questions

      diff --git a/_site/docs/latest/embedding/sdk/quickstart-cli.html b/_site/docs/latest/embedding/sdk/quickstart-cli.html index b63cad04c0..80221ba68f 100644 --- a/_site/docs/latest/embedding/sdk/quickstart-cli.html +++ b/_site/docs/latest/embedding/sdk/quickstart-cli.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
      Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    -

    This guide sets up the modular embedding SDK with a sample React app, but you can follow along with your own application.

    +

    This guide sets up the modular embedding SDK with a sample React app, but you can follow along with your own application.

    @@ -6245,17 +6354,17 @@

    Prerequisites

    Clone the sample app repo

      -
    1. Clone the sample React app.
    2. +
    3. Clone the sample React app.
    git clone git@github.com:metabase/metabase-nodejs-react-sdk-embedding-sample.git
     
      -
    1. Check out the branch in the metabase-nodejs-react-sdk-embedding-sample repo that corresponds to your Metabase version.
    2. +
    3. Check out the branch in the metabase-nodejs-react-sdk-embedding-sample repo that corresponds to your Metabase version.
    -
    git checkout 61-stable
    +
    git checkout 62-stable
     

    E.g., if you’re running Metabase 1.57 make sure the sample app repo is on the 57-stable branch. You can find your Metabase version in the Metabase UI by clicking the grid icon in the upper right, selecting Help, then choosing About Metabase.

    diff --git a/_site/docs/latest/embedding/sdk/quickstart.html b/_site/docs/latest/embedding/sdk/quickstart.html index c8782dd0ef..88f83a57ce 100644 --- a/_site/docs/latest/embedding/sdk/quickstart.html +++ b/_site/docs/latest/embedding/sdk/quickstart.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
  • - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6046,7 +6155,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6057,16 +6166,16 @@
    Other resources
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
  • - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6243,7 +6352,7 @@

      Back up your application database.

    • -
    • Download the Enterprise Edition version that corresponds with your current Metabase version. So if you’re running the Docker image for v0.61.3, you should switch to the Docker image for v1.61.3. To see a list of available versions for both the Open Source and Enterprise Editions, check out Metabase releases.
    • +
    • Download the Enterprise Edition version that corresponds with your current Metabase version. So if you’re running the Docker image for v0.62.1, you should switch to the Docker image for v1.62.1. To see a list of available versions for both the Open Source and Enterprise Editions, check out Metabase releases.
    • Stop your current Metabase Open Source edition.
    • Swap in the Enterprise Edition Docker image or jar that you downloaded.
    • Start your Metabase like you normally would using the new Enterprise Edition image or jar. You don’t need to do anything with your application database (which you’ve backed up in step one, right?).
    • diff --git a/_site/docs/latest/installation-and-operation/backing-up-metabase-application-data.html b/_site/docs/latest/installation-and-operation/backing-up-metabase-application-data.html index ea4116b955..06523b8df6 100644 --- a/_site/docs/latest/installation-and-operation/backing-up-metabase-application-data.html +++ b/_site/docs/latest/installation-and-operation/backing-up-metabase-application-data.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
      Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    -

    Metabase CLI

    +

    Metabase JAR commands

    + +
    +

    Looking for the mb command-line client that drives a Metabase instance over its API, on its own or through an AI agent? Check out the Metabase CLI.

    +
    -

    Metabase ships with some handy CLI commands for administration, maintenance, and automation tasks. These commands let you manage your Metabase instance, migrate databases, handle serialization, and generate documentation.

    +

    Metabase ships with some handy commands for administration, maintenance, and automation tasks. These commands run on the server, built into the Metabase JAR, and let you manage your Metabase instance, migrate databases, handle serialization, and generate documentation.

    To view a list of commands, run the Metabase jar followed by help.

    @@ -6383,7 +6496,7 @@
    Thanks for your feedback!
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6222,6 +6331,10 @@

      Serialization

      Export your questions, dashboards, and more as YAML files that you can check into version control.

      +

      Metabase CLI

      + +

      A command-line client that drives a Metabase instance over its API, on its own or through an AI agent.

      +

      Monitoring your Metabase

      Monitor your Metabase with JMX.

      @@ -6242,9 +6355,9 @@

      Accessibility

      Notes on Metabase’s accessibility.

      -

      Command line commands

      +

      Metabase JAR commands

      -

      Metabase’s CLI.

      +

      Administrative commands built into the Metabase JAR.


      diff --git a/_site/docs/latest/installation-and-operation/supported-browsers.html b/_site/docs/latest/installation-and-operation/supported-browsers.html index 8bddffc928..61f9bc143f 100644 --- a/_site/docs/latest/installation-and-operation/supported-browsers.html +++ b/_site/docs/latest/installation-and-operation/supported-browsers.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
      Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 diff --git a/_site/docs/latest/llms-embedding-full.txt b/_site/docs/latest/llms-embedding-full.txt index 4b0db03170..60343c5a9c 100644 --- a/_site/docs/latest/llms-embedding-full.txt +++ b/_site/docs/latest/llms-embedding-full.txt @@ -1,6 +1,6 @@ # Metabase Embedding - Complete Reference for AI agents -> **This documentation is for Metabase 61 (latest).** +> **This documentation is for Metabase 62 (latest).** > > Table of contents: https://metabase.com/docs/latest/llms.txt @@ -956,19 +956,20 @@ or `token` (for guest embeds), plus optional display configuration. -| Property | Type | Description | -| :--------------------------------------------------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `auto-refresh-interval` | `number` | Auto-refresh interval in seconds. For example, `60` refreshes the dashboard every 60 seconds.
      ---
      Optional
      Available in Pro/Enterprise and Guest embed. | -| `custom-context` | `string` | Optional custom context string passed through to the guest token endpoint.
      ---
      Optional
      Available in Guest embed. | -| `dashboard-id` | `string` \| `number` | The ID of the dashboard to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Only for SSO embeds — guest embeds set the ID with `token`. | -| `drills` | `boolean` | Whether to enable drill-through on the dashboard.
      ---
      Optional
      Default: `true`
      Available in Pro/Enterprise. | -| `enable-entity-navigation` | `boolean` | Whether to enable internal entity navigation (links to dashboards/questions). Requires `drills` to be `true`
      ---
      Optional
      Default: `false`
      Available in Pro/Enterprise. | -| `hidden-parameters` | `string`[] | List of filter names to hide from the dashboard, e.g. `['productId']`.
      ---
      Optional
      Available in Pro/Enterprise. | -| `initial-parameters` | `object` | Default values for dashboard filters, e.g. `{ 'productId': '42' }`.
      ---
      Optional
      Available in Pro/Enterprise and Guest embed. | -| `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
      ---
      Optional
      Available in Guest embed. | -| `with-downloads` | `boolean` | Whether to show the button to download the dashboard as PDF and download question results.
      ---
      Optional
      Default: `true` on OSS/Starter, `false` on Pro/Enterprise
      Available in Guest embed. | -| `with-subscriptions` | `boolean` | Whether to let people set up [dashboard subscriptions](/docs/latest/dashboards/subscriptions). Subscriptions sent from embedded dashboards exclude links to Metabase items.
      ---
      Optional
      Available in Pro/Enterprise. | -| `with-title` | `boolean` | Whether to show the dashboard title in the embed.
      ---
      Optional
      Default: `true`
      Available in Guest embed. | +| Property | Type | Description | +| :--------------------------------------------------------------- | :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `auto-refresh-interval` | `number` | Auto-refresh interval in seconds. For example, `60` refreshes the dashboard every 60 seconds.
      ---
      Optional
      Available in Pro/Enterprise and Guest embed. | +| `custom-context` | `string` | Optional custom context string passed through to the guest token endpoint.
      ---
      Optional
      Available in Guest embed. | +| `dashboard-id` | `string` \| `number` | The ID of the dashboard to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Only for SSO embeds — guest embeds set the ID with `token`. | +| `drills` | `boolean` | Whether to enable drill-through on the dashboard.
      ---
      Optional
      Default: `true`
      Available in Pro/Enterprise. | +| `enable-entity-navigation` | `boolean` | Whether to enable internal entity navigation (links to dashboards/questions). Requires `drills` to be `true`
      ---
      Optional
      Default: `false`
      Available in Pro/Enterprise. | +| `hidden-parameters` | `string`[] | List of filter names to hide from the dashboard, e.g. `['productId']`.
      ---
      Optional
      Available in Pro/Enterprise. | +| `initial-parameters` | `object` | Default values for dashboard filters, e.g. `{ 'productId': '42' }`.
      ---
      Optional
      Available in Pro/Enterprise and Guest embed. | +| `parameters` | `object` | Controlled dashboard filters values, e.g. `{ 'productId': '42' }`. Setting this attribute supersedes `initial-parameters` as the seed and stays in sync with subsequent mutations. Pair with the `parameters-change` DOM event to track edits.
      ---
      Optional
      Available in Pro/Enterprise and Guest embed. | +| `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
      ---
      Optional
      Available in Guest embed. | +| `with-downloads` | `boolean` | Whether to show the button to download the dashboard as PDF and download question results.
      ---
      Optional
      Default: `true` on OSS/Starter, `false` on Pro/Enterprise
      Available in Guest embed. | +| `with-subscriptions` | `boolean` | Whether to let people set up [dashboard subscriptions](/docs/latest/dashboards/subscriptions). Subscriptions sent from embedded dashboards exclude links to Metabase items.
      ---
      Optional
      Available in Pro/Enterprise. | +| `with-title` | `boolean` | Whether to show the dashboard title in the embed.
      ---
      Optional
      Default: `true`
      Available in Guest embed. | @@ -1020,6 +1021,7 @@ Use `question-id="new-native"` to embed the SQL editor interface. | `initial-sql-parameters` | `object` | Default values for SQL parameters, only applicable to native SQL questions, e.g. `{ "productId": "42" }`.
      ---
      Optional
      Available in Pro/Enterprise and Guest embed. | | `is-save-enabled` | `boolean` | Whether the save button is enabled.
      ---
      Optional
      Default: `false`
      Available in Pro/Enterprise. | | `question-id` | `string` \| `number` | The ID of the question to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Use `"new"` to embed the query builder, or `"new-native"` to embed the SQL editor. Only for SSO embeds — guest embeds use `token`. | +| `sql-parameters` | `object` | Controlled SQL parameter values, e.g. `{ "productId": "42" }`. Setting this attribute supersedes `initial-sql-parameters` as the seed and stays in sync with subsequent mutations. Pair with the `sql-parameters-change` DOM event to track edits.
      ---
      Optional
      Available in Pro/Enterprise and Guest embed. | | `target-collection` | `string` \| `number` | The collection to save a question to. Values: regular ID, entity ID, `"personal"`, `"root"`.
      ---
      Optional
      Available in Pro/Enterprise. | | `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
      ---
      Optional
      Available in Guest embed. | | `with-alerts` | `boolean` | Whether to show the alerts button.
      ---
      Optional
      Default: `false`
      Available in Pro/Enterprise. | @@ -1850,7 +1852,8 @@ You can set different attributes to enable/disable UI. Here are some example att | `token` | Required. The signed JWT token from your server. | | `with-title` | Show or hide the title. Values: `"true"` or `"false"`. | | `with-downloads`\* | Enable or disable downloads. Values: `"true"` or `"false"`. | -| `initial-parameters` | JSON string of parameter values. Example: `'{"category":["Gizmo"]}'`. | +| `initial-parameters` | JSON string of initial parameter values (uncontrolled). Example: `'{"category":["Gizmo"]}'`. See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). | +| `parameters` | JSON string of parameter values (controlled). Example: `'{"category":["Gizmo"]}'`. See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). | | `auto-refresh-interval` | Dashboards only. Auto-refresh interval in seconds. | | `custom-context` | Forwarded to your [`guestEmbedProviderUri`](#refreshing-or-initializing-the-jwt-from-your-server) endpoint as `customContext`. Either a string (e.g., `"gadgets-tab"`), or a JSON-stringified object like `initial-parameters` (e.g., `'{"tab":"gadgets","region":"us-east"}'`). | @@ -1934,6 +1937,8 @@ Fetch the JWT token from your backend and programmatically pass it to the 'metab ``` +See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components) for controlled parameters documentation. + ### Locked parameters Locked parameters let you filter data without exposing the filter to the end-user. Locking parameters is useful for restricting data based on who's viewing the embed (for example, showing each customer only their own data). @@ -2560,6 +2565,10 @@ When you're creating a new embed using **Admin > Embedding > Setup guide > Embed - **Allow alerts**: lets people set up [alerts](../questions/alerts) on embedded questions. Requires [email setup](../configuring-metabase/email). Only for authenticated (SSO) question embeds. +## Pass parameter values to embedded components + +See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). + ## Page-level config To define the configuration that applies to every embed on the page, use the `defineMetabaseConfig()` function. Its parameters include: @@ -2582,6 +2591,177 @@ For authentication setup including API keys for local testing, SSO with JWT/SAML --- +# Modular embedding parameters + +This page covers how to pass parameter values to embedded dashboards and SQL questions. + +## Modular embedding SDK (React) + +### Pass parameter values to a dashboard + +You can set initial values for embeds (uncontrolled), and optionally keep your app in sync with values as people change them (controlled). You can pick either `initialParameters` and `parameters`, but don't combine them. + +#### `initialParameters` (uncontrolled) + +Set the filter values once on load. Your app won't know when people change filters in the dashboard. Pick this when you don't need to track those changes. + +```typescript + +``` + +See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### `parameters` + `onParametersChange` (controlled) + +Push values from your app, and observe every applied change via `onParametersChange`. This works like a controlled ``. Your app holds the source of truth, the dashboard re-renders when the prop changes, and you receive a callback whenever applied values change. + +```typescript + +``` + +`onParametersChange` receives the [dashboard parameter change payload](#dashboard-parameter-change-payload). + + +> Don't combine `initialParameters` and `parameters` - pick one. For controlled behavior, only use `parameters`. + +### Pass parameters to SQL questions + +You can pass [parameter](../questions/native-editor/sql-parameters) values to SQL questions in the format `{parameter_name: parameter_value}`. You can set initial values for embeds (uncontrolled), and optionally keep your app in sync with values as people change them (controlled). + +These props only work with SQL questions, not query-builder questions. + +#### `initialSqlParameters` (uncontrolled) + +Set the parameter values once on load. Your app won't know when people change parameters in the question. Pick this when you don't need to track those changes. + +```typescript + +``` + +See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### `sqlParameters` + `onSqlParametersChange` (controlled) + +Push values from your app, and observe every applied change via `onSqlParametersChange`. This works like a controlled `` - your app holds the source of truth, the question re-renders when the prop changes, and you receive a callback whenever applied values change. + +```typescript + +``` + +`onSqlParametersChange` receives the [SQL question parameter change payload](#sql-question-parameter-change-payload). + +## Modular embedding (web components) + +### Pass parameter values to embedded components + +You can set dashboard filters and SQL parameters from your page, push new values at runtime, and listen for applied changes. + +#### Seed values once with `initial-parameters` / `initial-sql-parameters` + +Set values on mount via attributes. The component reads them once on load and ignores any subsequent changes to the attribute. User widget edits are not reflected back to your page. + +```html + + + +``` + +Attributes carry JSON. Pass an object whose keys are parameter slugs (dashboards) or SQL variable names (questions). See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### Push values at runtime with `parameters` / `sqlParameters` + +For controlled behavior, set the JS property on the element instead of the attribute. The component re-renders to apply the new values. + +```html + + + +``` + +The same pattern works for `metabase-question` via the `sqlParameters` property. + +To switch a component back to uncontrolled mode (leaving the last applied values in place), set the property to `undefined`. + +#### Clearing parameters + +To clear a single parameter, set its value to `null`. This strictly clears the parameter and ignores its default value. + +```html + +``` + +To clear every parameter, assign an empty object `{}`. + +```html + +``` + +#### Observe applied changes with `parameters-change` / `sql-parameters-change` + +Listen for events to keep your page in sync with what's actually applied: + +```html + + + +``` + +The `event.detail` carries the [dashboard parameter change payload](#dashboard-parameter-change-payload). + +For SQL questions, listen for `sql-parameters-change` on ``. Its `event.detail` carries the [SQL question parameter change payload](#sql-question-parameter-change-payload). + +## How parameter values are resolved + +These rules apply to all four props — `initialParameters` / `parameters` (dashboards) and `initialSqlParameters` / `sqlParameters` (SQL questions) — and to the matching web component attributes (`initial-parameters`, `parameters`, etc.). For each parameter slug: + +- **Set a value**: Pass a `string` for a single-option filter, and an array of `string`s for multi-option filters. +- **Clear a value:** Set to `null`: the parameter is cleared and its default is not used. +- **Reset to the default value**: Omit a value (or set to `undefined`) and the embed will fall back to the parameter's default (or `null` if it has no default). + +## Dashboard parameter change payload + +Delivered to `onParametersChange` (SDK) and as `event.detail` for the `parameters-change` event (web components). + + + +`source` indicates why the callback fired: + + + +## SQL question parameter change payload + +Delivered to `onSqlParametersChange` (SDK) and as `event.detail` for the `sql-parameters-change` event (web components). + + + +`source` indicates why the callback fired: + +--- + # Public sharing > Only admins can create public links and iframes. @@ -3015,6 +3195,10 @@ A dashboard component with the features available in the `InteractiveDashboard` ``` +## Pass parameter values to a dashboard + +See [Modular embedding parameters](../parameters#pass-parameter-values-to-a-dashboard). + ## Customizing dashboard height By default, dashboard components take full page height (100vh). You can override this with custom styles passed via `style` or `className` props. @@ -3464,15 +3648,9 @@ Use this component when you want to allow people to explore their data and custo -## Pass SQL parameters to SQL questions with `initialSqlParameters` - -You can pass parameter values to questions defined with SQL via the `initialSqlParameters` prop, in the format of `{parameter_name: parameter_value}`. Learn more about [SQL parameters](../../questions/native-editor/sql-parameters). - -```typescript - -``` +## Pass parameters to SQL questions -`initialSqlParameters` can't be used with questions built using the query builder. +See [Modular embedding parameters](../parameters#pass-parameters-to-sql-questions). ## Enable alerts on embedded questions diff --git a/_site/docs/latest/llms.txt b/_site/docs/latest/llms.txt index 09822b2457..f74aaf95f7 100644 --- a/_site/docs/latest/llms.txt +++ b/_site/docs/latest/llms.txt @@ -1,6 +1,6 @@ # Metabase Documentation -> **This documentation is for Metabase 61 (latest).** +> **This documentation is for Metabase 62 (latest).** Your pre-trained knowledge is out of date. ALWAYS read the Markdown files from `https://raw.githubusercontent.com` from the "Table of Contents" index. @@ -63,53 +63,54 @@ Watch out for these deprecated props and gotchas for Metabase 57 onwards, for mo ## Table of Contents -- [Configuration file](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/configuring-metabase/config-file.md) -- [Environment variables](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/configuring-metabase/environment-variables.md) -- [AI agent resources for embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/ai-agent-resources.md) -- [Customizing the appearance of modular embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/appearance.md) -- [Modular embedding - authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/authentication.md) -- [Modular embedding components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/components.md) -- [MetabaseBrowserAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/MetabaseBrowserAttributes.md) -- [MetabaseDashboardAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/MetabaseDashboardAttributes.md) -- [MetabaseMetabotAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/MetabaseMetabotAttributes.md) -- [MetabaseQuestionAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/MetabaseQuestionAttributes.md) -- [Index](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/index.md) -- [Full app embedding quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/full-app-embedding-quick-start-guide.md) -- [Full app embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/full-app-embedding.md) -- [Full app embedding UI components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/full-app-ui-components.md) -- [Guest embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/guest-embedding.md) -- [Embedding introduction](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/introduction.md) -- [Modular embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/modular-embedding.md) -- [Public sharing](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/public-links.md) -- [Modular embedding SDK - AI chat](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/ai-chat.md) -- [Modular embedding SDK - collections](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/collections.md) -- [Modular embedding SDK - config](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/config.md) -- [Modular embedding SDK - dashboards](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/dashboards.md) -- [Modular embedding SDK](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/introduction.md) -- [Using the modular embedding SDK with Next.js](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/next-js.md) -- [Modular embedding SDK - plugins](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/plugins.md) -- [Modular embedding SDK - questions](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/questions.md) -- [Modular embedding SDK - CLI quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/quickstart-cli.md) -- [Modular embedding SDK - quickstart with sample app](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/quickstart-with-sample-app.md) -- [Modular embedding SDK - quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/quickstart.md) -- [Upgrading Metabase and the modular embedding SDK](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/upgrade.md) -- [Modular embedding SDK - versions](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/version.md) -- [Securing embedded Metabase](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/securing-embeds.md) -- [Embedding overview](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/start.md) -- [Parameters for static embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/static-embedding-parameters.md) -- [Static embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/static-embedding.md) -- [Tenants](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/tenants.md) -- [Translate embedded components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/translations.md) -- [API keys](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/api-keys.md) -- [JWT-based authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/authenticating-with-jwt.md) -- [SAML-based authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/authenticating-with-saml.md) -- [Google Sign-In](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/google-sign-in.md) -- [LDAP](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/ldap.md) -- [SAML with Auth0](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-auth0.md) -- [SAML with Microsoft Entra ID](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-azure.md) -- [SAML with Google](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-google.md) -- [SAML with Keycloak](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-keycloak.md) -- [SAML with Okta](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-okta.md) +- [Configuration file](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/configuring-metabase/config-file.md) +- [Environment variables](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/configuring-metabase/environment-variables.md) +- [AI agent resources for embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/ai-agent-resources.md) +- [Customizing the appearance of modular embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/appearance.md) +- [Modular embedding - authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/authentication.md) +- [Modular embedding components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/components.md) +- [MetabaseBrowserAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/MetabaseBrowserAttributes.md) +- [MetabaseDashboardAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/MetabaseDashboardAttributes.md) +- [MetabaseMetabotAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/MetabaseMetabotAttributes.md) +- [MetabaseQuestionAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/MetabaseQuestionAttributes.md) +- [Index](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/index.md) +- [Full app embedding quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/full-app-embedding-quick-start-guide.md) +- [Full app embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/full-app-embedding.md) +- [Full app embedding UI components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/full-app-ui-components.md) +- [Guest embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/guest-embedding.md) +- [Embedding introduction](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/introduction.md) +- [Modular embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/modular-embedding.md) +- [Modular embedding parameters](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/parameters.md) +- [Public sharing](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/public-links.md) +- [Modular embedding SDK - AI chat](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/ai-chat.md) +- [Modular embedding SDK - collections](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/collections.md) +- [Modular embedding SDK - config](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/config.md) +- [Modular embedding SDK - dashboards](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/dashboards.md) +- [Modular embedding SDK](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/introduction.md) +- [Using the modular embedding SDK with Next.js](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/next-js.md) +- [Modular embedding SDK - plugins](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/plugins.md) +- [Modular embedding SDK - questions](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/questions.md) +- [Modular embedding SDK - CLI quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/quickstart-cli.md) +- [Modular embedding SDK - quickstart with sample app](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/quickstart-with-sample-app.md) +- [Modular embedding SDK - quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/quickstart.md) +- [Upgrading Metabase and the modular embedding SDK](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/upgrade.md) +- [Modular embedding SDK - versions](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/version.md) +- [Securing embedded Metabase](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/securing-embeds.md) +- [Embedding overview](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/start.md) +- [Parameters for static embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/static-embedding-parameters.md) +- [Static embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/static-embedding.md) +- [Tenants](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/tenants.md) +- [Translate embedded components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/translations.md) +- [API keys](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/api-keys.md) +- [JWT-based authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/authenticating-with-jwt.md) +- [SAML-based authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/authenticating-with-saml.md) +- [Google Sign-In](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/google-sign-in.md) +- [LDAP](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/ldap.md) +- [SAML with Auth0](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-auth0.md) +- [SAML with Microsoft Entra ID](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-azure.md) +- [SAML with Google](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-google.md) +- [SAML with Keycloak](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-keycloak.md) +- [SAML with Okta](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-okta.md) ## Complete References diff --git a/_site/docs/latest/people-and-groups/account-settings.html b/_site/docs/latest/people-and-groups/account-settings.html index ee4a2b1220..2950b2ea40 100644 --- a/_site/docs/latest/people-and-groups/account-settings.html +++ b/_site/docs/latest/people-and-groups/account-settings.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
      Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
      + +
    • - - v0.62 + + v0.61
    • - -
    • v0.60 @@ -6206,6 +6315,8 @@

      How to cr

      Date fields will either have a simple date filter (for date variables) or a dynamic date picker (for field filters mapped to a date field).

      +

      ID parameters also support all three widget types (input box, search box, and dropdown list), so you can power an ID filter with a dropdown or search box instead of a plain input box.

      +

      If you want to change the default filter widget for a particular field, you’ll need to ask an admin to update that field in the Table Metadata and set the desired “Filtering on this field” option.

      For dropdown lists and search boxes, you can also customize values available in the list. See below.

      @@ -6256,12 +6367,12 @@

      Customizing valu
    • Metabase will pop up a modal where you can select Where the values should come from.
    • -

      You can choose:

      +

      You can choose between:

        -
      • From connected fields. If you selected the Field filter variable type, you’ll also have the option to use the connected field.
      • -
      • From another model or question. If you select this option, you’ll need to pick a model or question, then a field from that model or question that Metabase will use to supply the values for that dropdown or search box. For example, if you want the dropdown to list the different plans an account could be on, you could select an “Account” model you created, and select the field “Plan” to power that dropdown. The dropdown would then list all of the distinct plan options that appear in the “Plan” column in the Accounts model.
      • -
      • Custom list. Enter each item on a line. You can enter any string values you like.
      • +
      • From connected fields: If you selected the Field filter variable type, you’ll also have the option to use the connected field.
      • +
      • From another model or question: Pick a model or question (built with either the query builder or SQL), then set the Column to supply the values that Metabase should filter on. You can also set a Column to supply the labels to display friendly labels in the dropdown while still filtering on the underlying values. For example, if you want the dropdown to list the different plans an account could be on, you could select an “Account” model you created and set the Column to supply the values to “Plan”. Or, to filter on product IDs while showing product names, set the Column to supply the values to “ID” and the Column to supply the labels to “Title”, so people see product names in the dropdown but the filter passes along the matching ID.
      • +
      • Custom list: Enter each item on a line. You can enter any string values you like.

      You can also change a dashboard filter’s selectable values.

      diff --git a/_site/docs/latest/questions/native-editor/optional-variables.html b/_site/docs/latest/questions/native-editor/optional-variables.html index 9d17184323..fde77a618c 100644 --- a/_site/docs/latest/questions/native-editor/optional-variables.html +++ b/_site/docs/latest/questions/native-editor/optional-variables.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@

      Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1818,9 +1862,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1834,6 +1917,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
    - v0.61 + v0.62 @@ -6087,16 +6196,16 @@
    Other resources
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1826,9 +1870,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1842,6 +1925,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -3646,6 +3740,21 @@
    Embedding
    +
  • + + Filters and parameters + + + + +
  • + + + + + + +
  • Appearance @@ -6076,7 +6185,7 @@
    Other resources
  • comment-delete
  • comment-update
  • create-permission-failure
  • +
  • custom-viz-plugin-create
  • +
  • custom-viz-plugin-delete
  • +
  • custom-viz-plugin-update
  • dashboard-add-cards
  • dashboard-create
  • dashboard-delete
  • @@ -6875,7 +6989,9 @@

    Activity log topics

  • transform-delete
  • transform-inspect-discover
  • transform-inspect-lens
  • +
  • transform-run-canceled
  • transform-run-start
  • +
  • transform-run-timeout
  • update-permission-failure
  • update-transform
  • upload-append
  • diff --git a/_site/docs/latest/usage-and-performance-tools/usage-analytics.html b/_site/docs/latest/usage-and-performance-tools/usage-analytics.html index 152681c982..74affc1078 100644 --- a/_site/docs/latest/usage-and-performance-tools/usage-analytics.html +++ b/_site/docs/latest/usage-and-performance-tools/usage-analytics.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -1887,7 +1981,7 @@
    Analytics
  • - + Queries and charts @@ -1910,7 +2004,7 @@
    Analytics
  • - + Introduction @@ -1946,7 +2040,7 @@
    Analytics
  • - + Editor @@ -1960,7 +2054,7 @@
    Analytics
  • - + Filtering @@ -1974,7 +2068,7 @@
    Analytics
  • - + Summarizing and grouping @@ -1988,7 +2082,7 @@
    Analytics
  • - + Joining data @@ -2002,7 +2096,7 @@
    Analytics
  • - + Custom expressions @@ -2016,7 +2110,7 @@
    Analytics
  • - + List of expressions @@ -2056,7 +2150,7 @@
    Analytics
  • - + SQL editor @@ -2070,7 +2164,7 @@
    Analytics
  • - + SQL parameters @@ -2084,7 +2178,7 @@
    Analytics
  • - + Field filters @@ -2098,7 +2192,7 @@
    Analytics
  • - + Basic SQL parameters @@ -2112,7 +2206,7 @@
    Analytics
  • - + Time grouping parameters @@ -2126,7 +2220,7 @@
    Analytics
  • - + Table variables @@ -2140,7 +2234,7 @@
    Analytics
  • - + Optional variables @@ -2154,7 +2248,7 @@
    Analytics
  • - + Filter widgets @@ -2168,7 +2262,7 @@
    Analytics
  • - + Referencing models and questions @@ -2182,7 +2276,7 @@
    Analytics
  • - + Snippets @@ -2196,7 +2290,7 @@
    Analytics
  • - + Snippet folder permissions @@ -2236,7 +2330,7 @@
    Analytics
  • - + Overview @@ -2250,7 +2344,7 @@
    Analytics
  • - + Box plot @@ -2264,7 +2358,7 @@
    Analytics
  • - + Combo chart @@ -2278,7 +2372,7 @@
    Analytics
  • - + Details chart @@ -2292,7 +2386,7 @@
    Analytics
  • - + Funnel chart @@ -2306,7 +2400,7 @@
    Analytics
  • - + Gauge chart @@ -2320,7 +2414,7 @@
    Analytics
  • - + Line, bar, and area charts @@ -2334,7 +2428,7 @@
    Analytics
  • - + Maps @@ -2348,7 +2442,7 @@
    Analytics
  • - + Number chart @@ -2362,7 +2456,7 @@
    Analytics
  • - + Pie and sunburst charts @@ -2376,7 +2470,7 @@
    Analytics
  • - + Pivot tables @@ -2390,7 +2484,7 @@
    Analytics
  • - + Progress bar @@ -2404,7 +2498,7 @@
    Analytics
  • - + Sankey chart @@ -2418,7 +2512,7 @@
    Analytics
  • - + Scatterplot @@ -2432,7 +2526,7 @@
    Analytics
  • - + Table @@ -2446,7 +2540,7 @@
    Analytics
  • - + Trend chart @@ -2460,7 +2554,7 @@
    Analytics
  • - + Waterfall chart @@ -2474,7 +2568,7 @@
    Analytics
  • - + Tooltips @@ -2493,7 +2587,7 @@
    Analytics
  • - + Metrics explorer @@ -2508,7 +2602,7 @@
    Analytics
  • - + Alerts @@ -2523,7 +2617,7 @@
    Analytics
  • - + Exporting data @@ -2544,7 +2638,7 @@
    Analytics
  • - + Dashboards @@ -2567,7 +2661,7 @@
    Analytics
  • - + Overview @@ -2582,7 +2676,7 @@
    Analytics
  • - + Dashboard filters @@ -2597,7 +2691,7 @@
    Analytics
  • - + Linked filters @@ -2612,7 +2706,7 @@
    Analytics
  • - + Dashboard interactivity @@ -2627,7 +2721,7 @@
    Analytics
  • - + Charts with multiple series @@ -2642,7 +2736,7 @@
    Analytics
  • - + Dashboard subscriptions @@ -2657,7 +2751,7 @@
    Analytics
  • - + Actions on dashboards @@ -2678,7 +2772,7 @@
    Analytics
  • - + Documents @@ -2701,7 +2795,7 @@
    Analytics
  • - + Overview @@ -2722,7 +2816,7 @@
    Analytics
  • - + AI @@ -2745,7 +2839,7 @@
    Analytics
  • - + Overview @@ -2760,7 +2854,7 @@
    Analytics
  • - + Metabot @@ -2775,7 +2869,7 @@
    Analytics
  • - + Metabot in Slack @@ -2790,7 +2884,7 @@
    Analytics
  • - + Settings @@ -2805,7 +2899,7 @@
    Analytics
  • - + MCP server @@ -2820,7 +2914,7 @@
    Analytics
  • - + Agent API @@ -2835,7 +2929,7 @@
    Analytics
  • - + Agent-driven development @@ -2850,7 +2944,7 @@
    Analytics
  • - + Customization @@ -2865,7 +2959,7 @@
    Analytics
  • - + System prompts @@ -2880,7 +2974,7 @@
    Analytics
  • - + Usage auditing @@ -2895,7 +2989,7 @@
    Analytics
  • - + Usage controls @@ -2910,7 +3004,7 @@
    Analytics
  • - + AI privacy @@ -2931,7 +3025,7 @@
    Analytics
  • - + Data modeling @@ -2954,7 +3048,7 @@
    Analytics
  • - + Models @@ -2969,7 +3063,7 @@
    Analytics
  • - + Model persistence @@ -2984,7 +3078,7 @@
    Analytics
  • - + Metrics @@ -2999,7 +3093,7 @@
    Analytics
  • - + Table metadata settings @@ -3014,7 +3108,7 @@
    Analytics
  • - + Data and semantic types @@ -3029,7 +3123,7 @@
    Analytics
  • - + Editable tables @@ -3044,7 +3138,7 @@
    Analytics
  • - + Formatting defaults @@ -3059,7 +3153,7 @@
    Analytics
  • - + Working with JSON @@ -3074,7 +3168,7 @@
    Analytics
  • - + Segments @@ -3110,7 +3204,7 @@
    Analytics
  • - + Overview @@ -3124,7 +3218,7 @@
    Analytics
  • - + Basic actions @@ -3138,7 +3232,7 @@
    Analytics
  • - + Custom actions @@ -3163,7 +3257,7 @@
    Analytics
  • - + Data Studio @@ -3186,7 +3280,7 @@
    Analytics
  • - + Overview @@ -3201,7 +3295,7 @@
    Analytics
  • - + Library @@ -3216,7 +3310,7 @@
    Analytics
  • - + Data structure @@ -3231,7 +3325,7 @@
    Analytics
  • - + Glossary @@ -3246,7 +3340,7 @@
    Analytics
  • - + Dependency graph @@ -3261,7 +3355,7 @@
    Analytics
  • - + Dependency diagnostics @@ -3297,7 +3391,7 @@
    Analytics
  • - + Overview @@ -3311,7 +3405,7 @@
    Analytics
  • - + Query transforms @@ -3325,7 +3419,7 @@
    Analytics
  • - + Python transforms @@ -3339,7 +3433,7 @@
    Analytics
  • - + Python runner @@ -3353,7 +3447,7 @@
    Analytics
  • - + Jobs and runs @@ -3367,7 +3461,7 @@
    Analytics
  • - + Transform inspector @@ -3381,7 +3475,7 @@
    Analytics
  • - + Add-ons @@ -3406,7 +3500,7 @@
    Analytics
  • - + Organization @@ -3429,7 +3523,7 @@
    Analytics
  • - + Basic exploration @@ -3444,7 +3538,7 @@
    Analytics
  • - + Keyboard shortcuts @@ -3459,7 +3553,7 @@
    Analytics
  • - + Collections @@ -3474,7 +3568,7 @@
    Analytics
  • - + Data reference @@ -3489,7 +3583,7 @@
    Analytics
  • - + Events and timelines @@ -3504,7 +3598,7 @@
    Analytics
  • - + X-rays @@ -3519,7 +3613,7 @@
    Analytics
  • - + Content verification @@ -3534,7 +3628,7 @@
    Analytics
  • - + History @@ -3549,7 +3643,7 @@
    Analytics
  • - + Delete and restore @@ -3576,7 +3670,7 @@
    Embedding
  • - + Overview @@ -3617,7 +3711,7 @@
    Embedding
  • - + Overview @@ -3632,7 +3726,7 @@
    Embedding
  • - + Components @@ -3647,7 +3741,22 @@
    Embedding
  • - + + Filters and parameters + + + + +
  • + + + + + + + +
  • + Appearance @@ -3662,7 +3771,7 @@
    Embedding
  • - + Authentication @@ -3677,7 +3786,7 @@
    Embedding
  • - + Tenants @@ -3713,7 +3822,7 @@
    Embedding
  • - + Overview @@ -3727,7 +3836,7 @@
    Embedding
  • - + Quickstarts @@ -3758,35 +3867,35 @@
    Embedding
  • - + Questions
  • - + Dashboards
  • - + AI chat
  • - + Collections
  • - + Plugins
  • @@ -3818,21 +3927,21 @@
    Embedding
  • - + Provider config
  • - + Working with Next.js
  • - + Versioning
  • @@ -3847,7 +3956,7 @@
    Embedding
  • - + Upgrading @@ -3861,7 +3970,7 @@
    Embedding
  • - + API @@ -3880,7 +3989,7 @@
    Embedding
  • - + Guest embedding @@ -3895,7 +4004,7 @@
    Embedding
  • - + Translate embeds @@ -3939,7 +4048,7 @@
    Embedding
  • - + Overview @@ -3954,7 +4063,7 @@
    Embedding
  • - + Quickstart @@ -3969,7 +4078,7 @@
    Embedding
  • - + Full app UI components @@ -3990,7 +4099,7 @@
    Embedding
  • - + Public links and embeds @@ -4008,7 +4117,7 @@
    Embedding
  • - + Securing embeds @@ -4026,7 +4135,7 @@
    Embedding
  • - + AI agent resources @@ -4050,7 +4159,7 @@
    Administration
  • - + Installation @@ -4094,7 +4203,7 @@
    Administration
  • - + Installation overview @@ -4122,7 +4231,7 @@
    Administration
  • - + Running the JAR file @@ -4136,7 +4245,7 @@
    Administration
  • - + Running in Docker @@ -4150,7 +4259,7 @@
    Administration
  • - + Other installation options @@ -4169,7 +4278,7 @@
    Administration
  • - + Upgrading Metabase @@ -4184,7 +4293,7 @@
    Administration
  • - + Configuring the Metabase application database @@ -4199,7 +4308,7 @@
    Administration
  • - + Activating Enterprise features @@ -4214,7 +4323,7 @@
    Administration
  • - + Migrating to a production application database @@ -4235,7 +4344,7 @@
    Administration
  • - + Data sources @@ -4258,7 +4367,7 @@
    Administration
  • - + Adding and managing databases @@ -4294,7 +4403,7 @@
    Administration
  • - + Athena @@ -4308,7 +4417,7 @@
    Administration
  • - + Amazon RDS @@ -4322,7 +4431,7 @@
    Administration
  • - + BigQuery @@ -4336,7 +4445,7 @@
    Administration
  • - + ClickHouse @@ -4350,7 +4459,7 @@
    Administration
  • - + Databricks @@ -4364,7 +4473,7 @@
    Administration
  • - + Druid @@ -4378,7 +4487,7 @@
    Administration
  • - + MariaDB @@ -4392,7 +4501,7 @@
    Administration
  • - + MongoDB @@ -4406,7 +4515,7 @@
    Administration
  • - + MySQL @@ -4420,7 +4529,7 @@
    Administration
  • - + Oracle @@ -4434,7 +4543,7 @@
    Administration
  • - + PostgreSQL @@ -4448,7 +4557,7 @@
    Administration
  • - + Presto @@ -4462,7 +4571,7 @@
    Administration
  • - + Redshift @@ -4476,7 +4585,7 @@
    Administration
  • - + Snowflake @@ -4490,7 +4599,7 @@
    Administration
  • - + SQL Server @@ -4504,7 +4613,7 @@
    Administration
  • - + SQLite @@ -4518,7 +4627,7 @@
    Administration
  • - + Spark SQL @@ -4532,7 +4641,7 @@
    Administration
  • - + Starburst @@ -4546,7 +4655,7 @@
    Administration
  • - + Vertica @@ -4560,7 +4669,7 @@
    Administration
  • - + Community drivers @@ -4579,7 +4688,7 @@
    Administration
  • - + Database users, roles, and privileges @@ -4594,7 +4703,7 @@
    Administration
  • - + Writeable connection @@ -4609,7 +4718,7 @@
    Administration
  • - + Syncing and scanning databases @@ -4624,7 +4733,7 @@
    Administration
  • - + Encrypting your database connection @@ -4639,7 +4748,7 @@
    Administration
  • - + SSH tunneling @@ -4654,7 +4763,7 @@
    Administration
  • - + SSL certificate @@ -4669,7 +4778,7 @@
    Administration
  • - + Setting up data uploads @@ -4684,7 +4793,7 @@
    Administration
  • - + Uploading data @@ -4735,7 +4844,7 @@
    Administration
  • - + Configuration @@ -4758,7 +4867,7 @@
    Administration
  • - + Setting up Metabase @@ -4773,7 +4882,7 @@
    Administration
  • - + General settings @@ -4788,7 +4897,7 @@
    Administration
  • - + Set up email @@ -4803,7 +4912,7 @@
    Administration
  • - + Set up Slack @@ -4818,7 +4927,7 @@
    Administration
  • - + Webhooks @@ -4833,7 +4942,7 @@
    Administration
  • - + Environment variables @@ -4848,7 +4957,7 @@
    Administration
  • - + Configuration file @@ -4863,7 +4972,7 @@
    Administration
  • - + Config file template @@ -4878,7 +4987,7 @@
    Administration
  • - + Metabase log configuration @@ -4893,7 +5002,7 @@
    Administration
  • - + Timezones @@ -4908,7 +5017,7 @@
    Administration
  • - + Languages and localization @@ -4923,7 +5032,7 @@
    Administration
  • - + Appearance @@ -4938,7 +5047,7 @@
    Administration
  • - + Fonts @@ -4953,7 +5062,7 @@
    Administration
  • - + Caching query results @@ -4968,7 +5077,7 @@
    Administration
  • - + Custom maps @@ -4983,7 +5092,7 @@
    Administration
  • - + Customizing the Metabase Jetty webserver @@ -5004,7 +5113,7 @@
    Administration
  • - + Operations and monitoring @@ -5027,7 +5136,7 @@
    Administration
  • - + Backing up Metabase @@ -5042,7 +5151,7 @@
    Administration
  • - + Development instances @@ -5057,7 +5166,7 @@
    Administration
  • - + Monitoring your Metabase @@ -5072,7 +5181,7 @@
    Administration
  • - + Observability with Prometheus @@ -5087,7 +5196,7 @@
    Administration
  • - + Serialization @@ -5102,7 +5211,7 @@
    Administration
  • - + Remote Sync @@ -5117,7 +5226,7 @@
    Administration
  • - + Commands @@ -5132,7 +5241,7 @@
    Administration
  • - + Usage analytics @@ -5147,7 +5256,7 @@
    Administration
  • - + Security center @@ -5162,7 +5271,7 @@
    Administration
  • - + Admin tools @@ -5183,7 +5292,7 @@
    Administration
  • - + Authentication @@ -5206,7 +5315,7 @@
    Administration
  • - + Account settings @@ -5221,7 +5330,7 @@
    Administration
  • - + Password complexity @@ -5236,7 +5345,7 @@
    Administration
  • - + Session expiration @@ -5251,7 +5360,7 @@
    Administration
  • - + Google Sign-In @@ -5266,7 +5375,7 @@
    Administration
  • - + LDAP @@ -5281,7 +5390,7 @@
    Administration
  • - + User provisioning @@ -5296,7 +5405,7 @@
    Administration
  • - + API keys @@ -5311,7 +5420,7 @@
    Administration
  • - + Paid SSO options @@ -5332,7 +5441,7 @@
    Administration
  • - + JWT-based authentication @@ -5346,7 +5455,7 @@
    Administration
  • - + SAML-based authentication @@ -5360,7 +5469,7 @@
    Administration
  • - + SAML with Auth0 @@ -5374,7 +5483,7 @@
    Administration
  • - + SAML with Microsoft Entra ID @@ -5388,7 +5497,7 @@
    Administration
  • - + SAML with Google @@ -5402,7 +5511,7 @@
    Administration
  • - + SAML with Keycloak @@ -5416,7 +5525,7 @@
    Administration
  • - + SAML with Okta @@ -5430,7 +5539,7 @@
    Administration
  • - + OIDC-based authentication @@ -5444,7 +5553,7 @@
    Administration
  • - + OIDC with Keycloak @@ -5469,7 +5578,7 @@
    Administration
  • - + Permissions @@ -5492,7 +5601,7 @@
    Administration
  • - + Permissions introduction @@ -5507,7 +5616,7 @@
    Administration
  • - + Managing people and groups @@ -5522,7 +5631,7 @@
    Administration
  • - + Data permissions @@ -5537,7 +5646,7 @@
    Administration
  • - + Collection permissions @@ -5552,7 +5661,7 @@
    Administration
  • - + Application permissions @@ -5567,7 +5676,7 @@
    Administration
  • - + Row and column security @@ -5582,7 +5691,7 @@
    Administration
  • - + Row and column security examples @@ -5597,7 +5706,7 @@
    Administration
  • - + Database routing @@ -5612,7 +5721,7 @@
    Administration
  • - + Impersonation @@ -5627,7 +5736,7 @@
    Administration
  • - + Snippets folder permissions @@ -5642,7 +5751,7 @@
    Administration
  • - + Notification permissions @@ -5657,7 +5766,7 @@
    Administration
  • - + Configuring permissions for embedding @@ -5684,7 +5793,7 @@
    Other resources
  • - + API @@ -5910,7 +6019,7 @@
    Other resources
  • - + Troubleshooting @@ -5928,7 +6037,7 @@
    Other resources
  • - + Developer guide @@ -5964,7 +6073,7 @@
    Other resources
  • - + Accessibility @@ -5982,7 +6091,7 @@
    Other resources
  • - + Supported browsers @@ -6000,7 +6109,7 @@
    Other resources
  • - + Privacy @@ -6018,7 +6127,7 @@
    Other resources
  • - + About the anonymous usage data we collect diff --git a/_site/docs/latest/util/resources/introduction.html b/_site/docs/latest/util/resources/introduction.html index 0eff338b23..a6235d13ef 100644 --- a/_site/docs/latest/util/resources/introduction.html +++ b/_site/docs/latest/util/resources/introduction.html @@ -218,6 +218,12 @@ + + + + + + @@ -1022,9 +1028,47 @@
    Learn
  • - @@ -1804,9 +1848,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1820,6 +1903,17 @@
    Embedded Analytics
    + + +
    @@ -1887,7 +1981,7 @@
    Analytics
  • - + Queries and charts @@ -1910,7 +2004,7 @@
    Analytics
  • - + Introduction @@ -1946,7 +2040,7 @@
    Analytics
  • - + Editor @@ -1960,7 +2054,7 @@
    Analytics
  • - + Filtering @@ -1974,7 +2068,7 @@
    Analytics
  • - + Summarizing and grouping @@ -1988,7 +2082,7 @@
    Analytics
  • - + Joining data @@ -2002,7 +2096,7 @@
    Analytics
  • - + Custom expressions @@ -2016,7 +2110,7 @@
    Analytics
  • - + List of expressions @@ -2056,7 +2150,7 @@
    Analytics
  • - + SQL editor @@ -2070,7 +2164,7 @@
    Analytics
  • - + SQL parameters @@ -2084,7 +2178,7 @@
    Analytics
  • - + Field filters @@ -2098,7 +2192,7 @@
    Analytics
  • - + Basic SQL parameters @@ -2112,7 +2206,7 @@
    Analytics
  • - + Time grouping parameters @@ -2126,7 +2220,7 @@
    Analytics
  • - + Table variables @@ -2140,7 +2234,7 @@
    Analytics
  • - + Optional variables @@ -2154,7 +2248,7 @@
    Analytics
  • - + Filter widgets @@ -2168,7 +2262,7 @@
    Analytics
  • - + Referencing models and questions @@ -2182,7 +2276,7 @@
    Analytics
  • - + Snippets @@ -2196,7 +2290,7 @@
    Analytics
  • - + Snippet folder permissions @@ -2236,7 +2330,7 @@
    Analytics
  • - + Overview @@ -2250,7 +2344,7 @@
    Analytics
  • - + Box plot @@ -2264,7 +2358,7 @@
    Analytics
  • - + Combo chart @@ -2278,7 +2372,7 @@
    Analytics
  • - + Details chart @@ -2292,7 +2386,7 @@
    Analytics
  • - + Funnel chart @@ -2306,7 +2400,7 @@
    Analytics
  • - + Gauge chart @@ -2320,7 +2414,7 @@
    Analytics
  • - + Line, bar, and area charts @@ -2334,7 +2428,7 @@
    Analytics
  • - + Maps @@ -2348,7 +2442,7 @@
    Analytics
  • - + Number chart @@ -2362,7 +2456,7 @@
    Analytics
  • - + Pie and sunburst charts @@ -2376,7 +2470,7 @@
    Analytics
  • - + Pivot tables @@ -2390,7 +2484,7 @@
    Analytics
  • - + Progress bar @@ -2404,7 +2498,7 @@
    Analytics
  • - + Sankey chart @@ -2418,7 +2512,7 @@
    Analytics
  • - + Scatterplot @@ -2432,7 +2526,7 @@
    Analytics
  • - + Table @@ -2446,7 +2540,7 @@
    Analytics
  • - + Trend chart @@ -2460,7 +2554,7 @@
    Analytics
  • - + Waterfall chart @@ -2474,7 +2568,7 @@
    Analytics
  • - + Tooltips @@ -2493,7 +2587,7 @@
    Analytics
  • - + Metrics explorer @@ -2508,7 +2602,7 @@
    Analytics
  • - + Alerts @@ -2523,7 +2617,7 @@
    Analytics
  • - + Exporting data @@ -2544,7 +2638,7 @@
    Analytics
  • - + Dashboards @@ -2567,7 +2661,7 @@
    Analytics
  • - + Overview @@ -2582,7 +2676,7 @@
    Analytics
  • - + Dashboard filters @@ -2597,7 +2691,7 @@
    Analytics
  • - + Linked filters @@ -2612,7 +2706,7 @@
    Analytics
  • - + Dashboard interactivity @@ -2627,7 +2721,7 @@
    Analytics
  • - + Charts with multiple series @@ -2642,7 +2736,7 @@
    Analytics
  • - + Dashboard subscriptions @@ -2657,7 +2751,7 @@
    Analytics
  • - + Actions on dashboards @@ -2678,7 +2772,7 @@
    Analytics
  • - + Documents @@ -2701,7 +2795,7 @@
    Analytics
  • - + Overview @@ -2722,7 +2816,7 @@
    Analytics
  • - + AI @@ -2745,7 +2839,7 @@
    Analytics
  • - + Overview @@ -2760,7 +2854,7 @@
    Analytics
  • - + Metabot @@ -2775,7 +2869,7 @@
    Analytics
  • - + Metabot in Slack @@ -2790,7 +2884,7 @@
    Analytics
  • - + Settings @@ -2805,7 +2899,7 @@
    Analytics
  • - + MCP server @@ -2820,7 +2914,7 @@
    Analytics
  • - + Agent API @@ -2835,7 +2929,7 @@
    Analytics
  • - + Agent-driven development @@ -2850,7 +2944,7 @@
    Analytics
  • - + Customization @@ -2865,7 +2959,7 @@
    Analytics
  • - + System prompts @@ -2880,7 +2974,7 @@
    Analytics
  • - + Usage auditing @@ -2895,7 +2989,7 @@
    Analytics
  • - + Usage controls @@ -2910,7 +3004,7 @@
    Analytics
  • - + AI privacy @@ -2931,7 +3025,7 @@
    Analytics
  • - + Data modeling @@ -2954,7 +3048,7 @@
    Analytics
  • - + Models @@ -2969,7 +3063,7 @@
    Analytics
  • - + Model persistence @@ -2984,7 +3078,7 @@
    Analytics
  • - + Metrics @@ -2999,7 +3093,7 @@
    Analytics
  • - + Table metadata settings @@ -3014,7 +3108,7 @@
    Analytics
  • - + Data and semantic types @@ -3029,7 +3123,7 @@
    Analytics
  • - + Editable tables @@ -3044,7 +3138,7 @@
    Analytics
  • - + Formatting defaults @@ -3059,7 +3153,7 @@
    Analytics
  • - + Working with JSON @@ -3074,7 +3168,7 @@
    Analytics
  • - + Segments @@ -3110,7 +3204,7 @@
    Analytics
  • - + Overview @@ -3124,7 +3218,7 @@
    Analytics
  • - + Basic actions @@ -3138,7 +3232,7 @@
    Analytics
  • - + Custom actions @@ -3163,7 +3257,7 @@
    Analytics
  • - + Data Studio @@ -3186,7 +3280,7 @@
    Analytics
  • - + Overview @@ -3201,7 +3295,7 @@
    Analytics
  • - + Library @@ -3216,7 +3310,7 @@
    Analytics
  • - + Data structure @@ -3231,7 +3325,7 @@
    Analytics
  • - + Glossary @@ -3246,7 +3340,7 @@
    Analytics
  • - + Dependency graph @@ -3261,7 +3355,7 @@
    Analytics
  • - + Dependency diagnostics @@ -3297,7 +3391,7 @@
    Analytics
  • - + Overview @@ -3311,7 +3405,7 @@
    Analytics
  • - + Query transforms @@ -3325,7 +3419,7 @@
    Analytics
  • - + Python transforms @@ -3339,7 +3433,7 @@
    Analytics
  • - + Python runner @@ -3353,7 +3447,7 @@
    Analytics
  • - + Jobs and runs @@ -3367,7 +3461,7 @@
    Analytics
  • - + Transform inspector @@ -3381,7 +3475,7 @@
    Analytics
  • - + Add-ons @@ -3406,7 +3500,7 @@
    Analytics
  • - + Organization @@ -3429,7 +3523,7 @@
    Analytics
  • - + Basic exploration @@ -3444,7 +3538,7 @@
    Analytics
  • - + Keyboard shortcuts @@ -3459,7 +3553,7 @@
    Analytics
  • - + Collections @@ -3474,7 +3568,7 @@
    Analytics
  • - + Data reference @@ -3489,7 +3583,7 @@
    Analytics
  • - + Events and timelines @@ -3504,7 +3598,7 @@
    Analytics
  • - + X-rays @@ -3519,7 +3613,7 @@
    Analytics
  • - + Content verification @@ -3534,7 +3628,7 @@
    Analytics
  • - + History @@ -3549,7 +3643,7 @@
    Analytics
  • - + Delete and restore @@ -3576,7 +3670,7 @@
    Embedding
  • - + Overview @@ -3617,7 +3711,7 @@
    Embedding
  • - + Overview @@ -3632,7 +3726,7 @@
    Embedding
  • - + Components @@ -3647,7 +3741,22 @@
    Embedding
  • - + + Filters and parameters + + + + +
  • + + + + + + + +
  • + Appearance @@ -3662,7 +3771,7 @@
    Embedding
  • - + Authentication @@ -3677,7 +3786,7 @@
    Embedding
  • - + Tenants @@ -3713,7 +3822,7 @@
    Embedding
  • - + Overview @@ -3727,7 +3836,7 @@
    Embedding
  • - + Quickstarts @@ -3758,35 +3867,35 @@
    Embedding
  • - + Questions
  • - + Dashboards
  • - + AI chat
  • - + Collections
  • - + Plugins
  • @@ -3818,21 +3927,21 @@
    Embedding
  • - + Provider config
  • - + Working with Next.js
  • - + Versioning
  • @@ -3847,7 +3956,7 @@
    Embedding
  • - + Upgrading @@ -3861,7 +3970,7 @@
    Embedding
  • - + API @@ -3880,7 +3989,7 @@
    Embedding
  • - + Guest embedding @@ -3895,7 +4004,7 @@
    Embedding
  • - + Translate embeds @@ -3939,7 +4048,7 @@
    Embedding
  • - + Overview @@ -3954,7 +4063,7 @@
    Embedding
  • - + Quickstart @@ -3969,7 +4078,7 @@
    Embedding
  • - + Full app UI components @@ -3990,7 +4099,7 @@
    Embedding
  • - + Public links and embeds @@ -4008,7 +4117,7 @@
    Embedding
  • - + Securing embeds @@ -4026,7 +4135,7 @@
    Embedding
  • - + AI agent resources @@ -4050,7 +4159,7 @@
    Administration
  • - + Installation @@ -4094,7 +4203,7 @@
    Administration
  • - + Installation overview @@ -4122,7 +4231,7 @@
    Administration
  • - + Running the JAR file @@ -4136,7 +4245,7 @@
    Administration
  • - + Running in Docker @@ -4150,7 +4259,7 @@
    Administration
  • - + Other installation options @@ -4169,7 +4278,7 @@
    Administration
  • - + Upgrading Metabase @@ -4184,7 +4293,7 @@
    Administration
  • - + Configuring the Metabase application database @@ -4199,7 +4308,7 @@
    Administration
  • - + Activating Enterprise features @@ -4214,7 +4323,7 @@
    Administration
  • - + Migrating to a production application database @@ -4235,7 +4344,7 @@
    Administration
  • - + Data sources @@ -4258,7 +4367,7 @@
    Administration
  • - + Adding and managing databases @@ -4294,7 +4403,7 @@
    Administration
  • - + Athena @@ -4308,7 +4417,7 @@
    Administration
  • - + Amazon RDS @@ -4322,7 +4431,7 @@
    Administration
  • - + BigQuery @@ -4336,7 +4445,7 @@
    Administration
  • - + ClickHouse @@ -4350,7 +4459,7 @@
    Administration
  • - + Databricks @@ -4364,7 +4473,7 @@
    Administration
  • - + Druid @@ -4378,7 +4487,7 @@
    Administration
  • - + MariaDB @@ -4392,7 +4501,7 @@
    Administration
  • - + MongoDB @@ -4406,7 +4515,7 @@
    Administration
  • - + MySQL @@ -4420,7 +4529,7 @@
    Administration
  • - + Oracle @@ -4434,7 +4543,7 @@
    Administration
  • - + PostgreSQL @@ -4448,7 +4557,7 @@
    Administration
  • - + Presto @@ -4462,7 +4571,7 @@
    Administration
  • - + Redshift @@ -4476,7 +4585,7 @@
    Administration
  • - + Snowflake @@ -4490,7 +4599,7 @@
    Administration
  • - + SQL Server @@ -4504,7 +4613,7 @@
    Administration
  • - + SQLite @@ -4518,7 +4627,7 @@
    Administration
  • - + Spark SQL @@ -4532,7 +4641,7 @@
    Administration
  • - + Starburst @@ -4546,7 +4655,7 @@
    Administration
  • - + Vertica @@ -4560,7 +4669,7 @@
    Administration
  • - + Community drivers @@ -4579,7 +4688,7 @@
    Administration
  • - + Database users, roles, and privileges @@ -4594,7 +4703,7 @@
    Administration
  • - + Writeable connection @@ -4609,7 +4718,7 @@
    Administration
  • - + Syncing and scanning databases @@ -4624,7 +4733,7 @@
    Administration
  • - + Encrypting your database connection @@ -4639,7 +4748,7 @@
    Administration
  • - + SSH tunneling @@ -4654,7 +4763,7 @@
    Administration
  • - + SSL certificate @@ -4669,7 +4778,7 @@
    Administration
  • - + Setting up data uploads @@ -4684,7 +4793,7 @@
    Administration
  • - + Uploading data @@ -4735,7 +4844,7 @@
    Administration
  • - + Configuration @@ -4758,7 +4867,7 @@
    Administration
  • - + Setting up Metabase @@ -4773,7 +4882,7 @@
    Administration
  • - + General settings @@ -4788,7 +4897,7 @@
    Administration
  • - + Set up email @@ -4803,7 +4912,7 @@
    Administration
  • - + Set up Slack @@ -4818,7 +4927,7 @@
    Administration
  • - + Webhooks @@ -4833,7 +4942,7 @@
    Administration
  • - + Environment variables @@ -4848,7 +4957,7 @@
    Administration
  • - + Configuration file @@ -4863,7 +4972,7 @@
    Administration
  • - + Config file template @@ -4878,7 +4987,7 @@
    Administration
  • - + Metabase log configuration @@ -4893,7 +5002,7 @@
    Administration
  • - + Timezones @@ -4908,7 +5017,7 @@
    Administration
  • - + Languages and localization @@ -4923,7 +5032,7 @@
    Administration
  • - + Appearance @@ -4938,7 +5047,7 @@
    Administration
  • - + Fonts @@ -4953,7 +5062,7 @@
    Administration
  • - + Caching query results @@ -4968,7 +5077,7 @@
    Administration
  • - + Custom maps @@ -4983,7 +5092,7 @@
    Administration
  • - + Customizing the Metabase Jetty webserver @@ -5004,7 +5113,7 @@
    Administration
  • - + Operations and monitoring @@ -5027,7 +5136,7 @@
    Administration
  • - + Backing up Metabase @@ -5042,7 +5151,7 @@
    Administration
  • - + Development instances @@ -5057,7 +5166,7 @@
    Administration
  • - + Monitoring your Metabase @@ -5072,7 +5181,7 @@
    Administration
  • - + Observability with Prometheus @@ -5087,7 +5196,7 @@
    Administration
  • - + Serialization @@ -5102,7 +5211,7 @@
    Administration
  • - + Remote Sync @@ -5117,7 +5226,7 @@
    Administration
  • - + Commands @@ -5132,7 +5241,7 @@
    Administration
  • - + Usage analytics @@ -5147,7 +5256,7 @@
    Administration
  • - + Security center @@ -5162,7 +5271,7 @@
    Administration
  • - + Admin tools @@ -5183,7 +5292,7 @@
    Administration
  • - + Authentication @@ -5206,7 +5315,7 @@
    Administration
  • - + Account settings @@ -5221,7 +5330,7 @@
    Administration
  • - + Password complexity @@ -5236,7 +5345,7 @@
    Administration
  • - + Session expiration @@ -5251,7 +5360,7 @@
    Administration
  • - + Google Sign-In @@ -5266,7 +5375,7 @@
    Administration
  • - + LDAP @@ -5281,7 +5390,7 @@
    Administration
  • - + User provisioning @@ -5296,7 +5405,7 @@
    Administration
  • - + API keys @@ -5311,7 +5420,7 @@
    Administration
  • - + Paid SSO options @@ -5332,7 +5441,7 @@
    Administration
  • - + JWT-based authentication @@ -5346,7 +5455,7 @@
    Administration
  • - + SAML-based authentication @@ -5360,7 +5469,7 @@
    Administration
  • - + SAML with Auth0 @@ -5374,7 +5483,7 @@
    Administration
  • - + SAML with Microsoft Entra ID @@ -5388,7 +5497,7 @@
    Administration
  • - + SAML with Google @@ -5402,7 +5511,7 @@
    Administration
  • - + SAML with Keycloak @@ -5416,7 +5525,7 @@
    Administration
  • - + SAML with Okta @@ -5430,7 +5539,7 @@
    Administration
  • - + OIDC-based authentication @@ -5444,7 +5553,7 @@
    Administration
  • - + OIDC with Keycloak @@ -5469,7 +5578,7 @@
    Administration
  • - + Permissions @@ -5492,7 +5601,7 @@
    Administration
  • - + Permissions introduction @@ -5507,7 +5616,7 @@
    Administration
  • - + Managing people and groups @@ -5522,7 +5631,7 @@
    Administration
  • - + Data permissions @@ -5537,7 +5646,7 @@
    Administration
  • - + Collection permissions @@ -5552,7 +5661,7 @@
    Administration
  • - + Application permissions @@ -5567,7 +5676,7 @@
    Administration
  • - + Row and column security @@ -5582,7 +5691,7 @@
    Administration
  • - + Row and column security examples @@ -5597,7 +5706,7 @@
    Administration
  • - + Database routing @@ -5612,7 +5721,7 @@
    Administration
  • - + Impersonation @@ -5627,7 +5736,7 @@
    Administration
  • - + Snippets folder permissions @@ -5642,7 +5751,7 @@
    Administration
  • - + Notification permissions @@ -5657,7 +5766,7 @@
    Administration
  • - + Configuring permissions for embedding @@ -5684,7 +5793,7 @@
    Other resources
  • - + API @@ -5910,7 +6019,7 @@
    Other resources
  • - + Troubleshooting @@ -5928,7 +6037,7 @@
    Other resources
  • - + Developer guide @@ -5964,7 +6073,7 @@
    Other resources
  • - + Accessibility @@ -5982,7 +6091,7 @@
    Other resources
  • - + Supported browsers @@ -6000,7 +6109,7 @@
    Other resources
  • - + Privacy @@ -6018,7 +6127,7 @@
    Other resources
  • - + About the anonymous usage data we collect diff --git a/_site/docs/llms-embedding-full.txt b/_site/docs/llms-embedding-full.txt index 4b0db03170..60343c5a9c 100644 --- a/_site/docs/llms-embedding-full.txt +++ b/_site/docs/llms-embedding-full.txt @@ -1,6 +1,6 @@ # Metabase Embedding - Complete Reference for AI agents -> **This documentation is for Metabase 61 (latest).** +> **This documentation is for Metabase 62 (latest).** > > Table of contents: https://metabase.com/docs/latest/llms.txt @@ -956,19 +956,20 @@ or `token` (for guest embeds), plus optional display configuration. -| Property | Type | Description | -| :--------------------------------------------------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `auto-refresh-interval` | `number` | Auto-refresh interval in seconds. For example, `60` refreshes the dashboard every 60 seconds.
    ---
    Optional
    Available in Pro/Enterprise and Guest embed. | -| `custom-context` | `string` | Optional custom context string passed through to the guest token endpoint.
    ---
    Optional
    Available in Guest embed. | -| `dashboard-id` | `string` \| `number` | The ID of the dashboard to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Only for SSO embeds — guest embeds set the ID with `token`. | -| `drills` | `boolean` | Whether to enable drill-through on the dashboard.
    ---
    Optional
    Default: `true`
    Available in Pro/Enterprise. | -| `enable-entity-navigation` | `boolean` | Whether to enable internal entity navigation (links to dashboards/questions). Requires `drills` to be `true`
    ---
    Optional
    Default: `false`
    Available in Pro/Enterprise. | -| `hidden-parameters` | `string`[] | List of filter names to hide from the dashboard, e.g. `['productId']`.
    ---
    Optional
    Available in Pro/Enterprise. | -| `initial-parameters` | `object` | Default values for dashboard filters, e.g. `{ 'productId': '42' }`.
    ---
    Optional
    Available in Pro/Enterprise and Guest embed. | -| `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
    ---
    Optional
    Available in Guest embed. | -| `with-downloads` | `boolean` | Whether to show the button to download the dashboard as PDF and download question results.
    ---
    Optional
    Default: `true` on OSS/Starter, `false` on Pro/Enterprise
    Available in Guest embed. | -| `with-subscriptions` | `boolean` | Whether to let people set up [dashboard subscriptions](/docs/latest/dashboards/subscriptions). Subscriptions sent from embedded dashboards exclude links to Metabase items.
    ---
    Optional
    Available in Pro/Enterprise. | -| `with-title` | `boolean` | Whether to show the dashboard title in the embed.
    ---
    Optional
    Default: `true`
    Available in Guest embed. | +| Property | Type | Description | +| :--------------------------------------------------------------- | :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `auto-refresh-interval` | `number` | Auto-refresh interval in seconds. For example, `60` refreshes the dashboard every 60 seconds.
    ---
    Optional
    Available in Pro/Enterprise and Guest embed. | +| `custom-context` | `string` | Optional custom context string passed through to the guest token endpoint.
    ---
    Optional
    Available in Guest embed. | +| `dashboard-id` | `string` \| `number` | The ID of the dashboard to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Only for SSO embeds — guest embeds set the ID with `token`. | +| `drills` | `boolean` | Whether to enable drill-through on the dashboard.
    ---
    Optional
    Default: `true`
    Available in Pro/Enterprise. | +| `enable-entity-navigation` | `boolean` | Whether to enable internal entity navigation (links to dashboards/questions). Requires `drills` to be `true`
    ---
    Optional
    Default: `false`
    Available in Pro/Enterprise. | +| `hidden-parameters` | `string`[] | List of filter names to hide from the dashboard, e.g. `['productId']`.
    ---
    Optional
    Available in Pro/Enterprise. | +| `initial-parameters` | `object` | Default values for dashboard filters, e.g. `{ 'productId': '42' }`.
    ---
    Optional
    Available in Pro/Enterprise and Guest embed. | +| `parameters` | `object` | Controlled dashboard filters values, e.g. `{ 'productId': '42' }`. Setting this attribute supersedes `initial-parameters` as the seed and stays in sync with subsequent mutations. Pair with the `parameters-change` DOM event to track edits.
    ---
    Optional
    Available in Pro/Enterprise and Guest embed. | +| `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
    ---
    Optional
    Available in Guest embed. | +| `with-downloads` | `boolean` | Whether to show the button to download the dashboard as PDF and download question results.
    ---
    Optional
    Default: `true` on OSS/Starter, `false` on Pro/Enterprise
    Available in Guest embed. | +| `with-subscriptions` | `boolean` | Whether to let people set up [dashboard subscriptions](/docs/latest/dashboards/subscriptions). Subscriptions sent from embedded dashboards exclude links to Metabase items.
    ---
    Optional
    Available in Pro/Enterprise. | +| `with-title` | `boolean` | Whether to show the dashboard title in the embed.
    ---
    Optional
    Default: `true`
    Available in Guest embed. | @@ -1020,6 +1021,7 @@ Use `question-id="new-native"` to embed the SQL editor interface. | `initial-sql-parameters` | `object` | Default values for SQL parameters, only applicable to native SQL questions, e.g. `{ "productId": "42" }`.
    ---
    Optional
    Available in Pro/Enterprise and Guest embed. | | `is-save-enabled` | `boolean` | Whether the save button is enabled.
    ---
    Optional
    Default: `false`
    Available in Pro/Enterprise. | | `question-id` | `string` \| `number` | The ID of the question to embed. Can be a regular ID or an [entity ID](/docs/latest/installation-and-operation/serialization#entity-ids-work-with-embedding). Use `"new"` to embed the query builder, or `"new-native"` to embed the SQL editor. Only for SSO embeds — guest embeds use `token`. | +| `sql-parameters` | `object` | Controlled SQL parameter values, e.g. `{ "productId": "42" }`. Setting this attribute supersedes `initial-sql-parameters` as the seed and stays in sync with subsequent mutations. Pair with the `sql-parameters-change` DOM event to track edits.
    ---
    Optional
    Available in Pro/Enterprise and Guest embed. | | `target-collection` | `string` \| `number` | The collection to save a question to. Values: regular ID, entity ID, `"personal"`, `"root"`.
    ---
    Optional
    Available in Pro/Enterprise. | | `token` | `string` | The token for guest embeds. Set automatically by the guest embed flow.
    ---
    Optional
    Available in Guest embed. | | `with-alerts` | `boolean` | Whether to show the alerts button.
    ---
    Optional
    Default: `false`
    Available in Pro/Enterprise. | @@ -1850,7 +1852,8 @@ You can set different attributes to enable/disable UI. Here are some example att | `token` | Required. The signed JWT token from your server. | | `with-title` | Show or hide the title. Values: `"true"` or `"false"`. | | `with-downloads`\* | Enable or disable downloads. Values: `"true"` or `"false"`. | -| `initial-parameters` | JSON string of parameter values. Example: `'{"category":["Gizmo"]}'`. | +| `initial-parameters` | JSON string of initial parameter values (uncontrolled). Example: `'{"category":["Gizmo"]}'`. See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). | +| `parameters` | JSON string of parameter values (controlled). Example: `'{"category":["Gizmo"]}'`. See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). | | `auto-refresh-interval` | Dashboards only. Auto-refresh interval in seconds. | | `custom-context` | Forwarded to your [`guestEmbedProviderUri`](#refreshing-or-initializing-the-jwt-from-your-server) endpoint as `customContext`. Either a string (e.g., `"gadgets-tab"`), or a JSON-stringified object like `initial-parameters` (e.g., `'{"tab":"gadgets","region":"us-east"}'`). | @@ -1934,6 +1937,8 @@ Fetch the JWT token from your backend and programmatically pass it to the 'metab ``` +See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components) for controlled parameters documentation. + ### Locked parameters Locked parameters let you filter data without exposing the filter to the end-user. Locking parameters is useful for restricting data based on who's viewing the embed (for example, showing each customer only their own data). @@ -2560,6 +2565,10 @@ When you're creating a new embed using **Admin > Embedding > Setup guide > Embed - **Allow alerts**: lets people set up [alerts](../questions/alerts) on embedded questions. Requires [email setup](../configuring-metabase/email). Only for authenticated (SSO) question embeds. +## Pass parameter values to embedded components + +See [Modular embedding parameters](./parameters#pass-parameter-values-to-embedded-components). + ## Page-level config To define the configuration that applies to every embed on the page, use the `defineMetabaseConfig()` function. Its parameters include: @@ -2582,6 +2591,177 @@ For authentication setup including API keys for local testing, SSO with JWT/SAML --- +# Modular embedding parameters + +This page covers how to pass parameter values to embedded dashboards and SQL questions. + +## Modular embedding SDK (React) + +### Pass parameter values to a dashboard + +You can set initial values for embeds (uncontrolled), and optionally keep your app in sync with values as people change them (controlled). You can pick either `initialParameters` and `parameters`, but don't combine them. + +#### `initialParameters` (uncontrolled) + +Set the filter values once on load. Your app won't know when people change filters in the dashboard. Pick this when you don't need to track those changes. + +```typescript + +``` + +See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### `parameters` + `onParametersChange` (controlled) + +Push values from your app, and observe every applied change via `onParametersChange`. This works like a controlled ``. Your app holds the source of truth, the dashboard re-renders when the prop changes, and you receive a callback whenever applied values change. + +```typescript + +``` + +`onParametersChange` receives the [dashboard parameter change payload](#dashboard-parameter-change-payload). + + +> Don't combine `initialParameters` and `parameters` - pick one. For controlled behavior, only use `parameters`. + +### Pass parameters to SQL questions + +You can pass [parameter](../questions/native-editor/sql-parameters) values to SQL questions in the format `{parameter_name: parameter_value}`. You can set initial values for embeds (uncontrolled), and optionally keep your app in sync with values as people change them (controlled). + +These props only work with SQL questions, not query-builder questions. + +#### `initialSqlParameters` (uncontrolled) + +Set the parameter values once on load. Your app won't know when people change parameters in the question. Pick this when you don't need to track those changes. + +```typescript + +``` + +See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### `sqlParameters` + `onSqlParametersChange` (controlled) + +Push values from your app, and observe every applied change via `onSqlParametersChange`. This works like a controlled `` - your app holds the source of truth, the question re-renders when the prop changes, and you receive a callback whenever applied values change. + +```typescript + +``` + +`onSqlParametersChange` receives the [SQL question parameter change payload](#sql-question-parameter-change-payload). + +## Modular embedding (web components) + +### Pass parameter values to embedded components + +You can set dashboard filters and SQL parameters from your page, push new values at runtime, and listen for applied changes. + +#### Seed values once with `initial-parameters` / `initial-sql-parameters` + +Set values on mount via attributes. The component reads them once on load and ignores any subsequent changes to the attribute. User widget edits are not reflected back to your page. + +```html + + + +``` + +Attributes carry JSON. Pass an object whose keys are parameter slugs (dashboards) or SQL variable names (questions). See [How parameter values are resolved](#how-parameter-values-are-resolved) for null / missing-slug semantics. + +#### Push values at runtime with `parameters` / `sqlParameters` + +For controlled behavior, set the JS property on the element instead of the attribute. The component re-renders to apply the new values. + +```html + + + +``` + +The same pattern works for `metabase-question` via the `sqlParameters` property. + +To switch a component back to uncontrolled mode (leaving the last applied values in place), set the property to `undefined`. + +#### Clearing parameters + +To clear a single parameter, set its value to `null`. This strictly clears the parameter and ignores its default value. + +```html + +``` + +To clear every parameter, assign an empty object `{}`. + +```html + +``` + +#### Observe applied changes with `parameters-change` / `sql-parameters-change` + +Listen for events to keep your page in sync with what's actually applied: + +```html + + + +``` + +The `event.detail` carries the [dashboard parameter change payload](#dashboard-parameter-change-payload). + +For SQL questions, listen for `sql-parameters-change` on ``. Its `event.detail` carries the [SQL question parameter change payload](#sql-question-parameter-change-payload). + +## How parameter values are resolved + +These rules apply to all four props — `initialParameters` / `parameters` (dashboards) and `initialSqlParameters` / `sqlParameters` (SQL questions) — and to the matching web component attributes (`initial-parameters`, `parameters`, etc.). For each parameter slug: + +- **Set a value**: Pass a `string` for a single-option filter, and an array of `string`s for multi-option filters. +- **Clear a value:** Set to `null`: the parameter is cleared and its default is not used. +- **Reset to the default value**: Omit a value (or set to `undefined`) and the embed will fall back to the parameter's default (or `null` if it has no default). + +## Dashboard parameter change payload + +Delivered to `onParametersChange` (SDK) and as `event.detail` for the `parameters-change` event (web components). + + + +`source` indicates why the callback fired: + + + +## SQL question parameter change payload + +Delivered to `onSqlParametersChange` (SDK) and as `event.detail` for the `sql-parameters-change` event (web components). + + + +`source` indicates why the callback fired: + +--- + # Public sharing > Only admins can create public links and iframes. @@ -3015,6 +3195,10 @@ A dashboard component with the features available in the `InteractiveDashboard` ``` +## Pass parameter values to a dashboard + +See [Modular embedding parameters](../parameters#pass-parameter-values-to-a-dashboard). + ## Customizing dashboard height By default, dashboard components take full page height (100vh). You can override this with custom styles passed via `style` or `className` props. @@ -3464,15 +3648,9 @@ Use this component when you want to allow people to explore their data and custo -## Pass SQL parameters to SQL questions with `initialSqlParameters` - -You can pass parameter values to questions defined with SQL via the `initialSqlParameters` prop, in the format of `{parameter_name: parameter_value}`. Learn more about [SQL parameters](../../questions/native-editor/sql-parameters). - -```typescript - -``` +## Pass parameters to SQL questions -`initialSqlParameters` can't be used with questions built using the query builder. +See [Modular embedding parameters](../parameters#pass-parameters-to-sql-questions). ## Enable alerts on embedded questions diff --git a/_site/docs/llms.txt b/_site/docs/llms.txt index 09822b2457..f74aaf95f7 100644 --- a/_site/docs/llms.txt +++ b/_site/docs/llms.txt @@ -1,6 +1,6 @@ # Metabase Documentation -> **This documentation is for Metabase 61 (latest).** +> **This documentation is for Metabase 62 (latest).** Your pre-trained knowledge is out of date. ALWAYS read the Markdown files from `https://raw.githubusercontent.com` from the "Table of Contents" index. @@ -63,53 +63,54 @@ Watch out for these deprecated props and gotchas for Metabase 57 onwards, for mo ## Table of Contents -- [Configuration file](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/configuring-metabase/config-file.md) -- [Environment variables](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/configuring-metabase/environment-variables.md) -- [AI agent resources for embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/ai-agent-resources.md) -- [Customizing the appearance of modular embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/appearance.md) -- [Modular embedding - authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/authentication.md) -- [Modular embedding components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/components.md) -- [MetabaseBrowserAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/MetabaseBrowserAttributes.md) -- [MetabaseDashboardAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/MetabaseDashboardAttributes.md) -- [MetabaseMetabotAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/MetabaseMetabotAttributes.md) -- [MetabaseQuestionAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/MetabaseQuestionAttributes.md) -- [Index](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/eajs/snippets/index.md) -- [Full app embedding quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/full-app-embedding-quick-start-guide.md) -- [Full app embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/full-app-embedding.md) -- [Full app embedding UI components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/full-app-ui-components.md) -- [Guest embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/guest-embedding.md) -- [Embedding introduction](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/introduction.md) -- [Modular embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/modular-embedding.md) -- [Public sharing](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/public-links.md) -- [Modular embedding SDK - AI chat](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/ai-chat.md) -- [Modular embedding SDK - collections](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/collections.md) -- [Modular embedding SDK - config](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/config.md) -- [Modular embedding SDK - dashboards](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/dashboards.md) -- [Modular embedding SDK](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/introduction.md) -- [Using the modular embedding SDK with Next.js](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/next-js.md) -- [Modular embedding SDK - plugins](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/plugins.md) -- [Modular embedding SDK - questions](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/questions.md) -- [Modular embedding SDK - CLI quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/quickstart-cli.md) -- [Modular embedding SDK - quickstart with sample app](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/quickstart-with-sample-app.md) -- [Modular embedding SDK - quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/quickstart.md) -- [Upgrading Metabase and the modular embedding SDK](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/upgrade.md) -- [Modular embedding SDK - versions](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/sdk/version.md) -- [Securing embedded Metabase](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/securing-embeds.md) -- [Embedding overview](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/start.md) -- [Parameters for static embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/static-embedding-parameters.md) -- [Static embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/static-embedding.md) -- [Tenants](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/tenants.md) -- [Translate embedded components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/embedding/translations.md) -- [API keys](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/api-keys.md) -- [JWT-based authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/authenticating-with-jwt.md) -- [SAML-based authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/authenticating-with-saml.md) -- [Google Sign-In](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/google-sign-in.md) -- [LDAP](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/ldap.md) -- [SAML with Auth0](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-auth0.md) -- [SAML with Microsoft Entra ID](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-azure.md) -- [SAML with Google](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-google.md) -- [SAML with Keycloak](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-keycloak.md) -- [SAML with Okta](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.61.x/docs/people-and-groups/saml-okta.md) +- [Configuration file](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/configuring-metabase/config-file.md) +- [Environment variables](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/configuring-metabase/environment-variables.md) +- [AI agent resources for embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/ai-agent-resources.md) +- [Customizing the appearance of modular embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/appearance.md) +- [Modular embedding - authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/authentication.md) +- [Modular embedding components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/components.md) +- [MetabaseBrowserAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/MetabaseBrowserAttributes.md) +- [MetabaseDashboardAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/MetabaseDashboardAttributes.md) +- [MetabaseMetabotAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/MetabaseMetabotAttributes.md) +- [MetabaseQuestionAttributes](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/MetabaseQuestionAttributes.md) +- [Index](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/eajs/snippets/index.md) +- [Full app embedding quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/full-app-embedding-quick-start-guide.md) +- [Full app embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/full-app-embedding.md) +- [Full app embedding UI components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/full-app-ui-components.md) +- [Guest embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/guest-embedding.md) +- [Embedding introduction](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/introduction.md) +- [Modular embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/modular-embedding.md) +- [Modular embedding parameters](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/parameters.md) +- [Public sharing](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/public-links.md) +- [Modular embedding SDK - AI chat](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/ai-chat.md) +- [Modular embedding SDK - collections](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/collections.md) +- [Modular embedding SDK - config](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/config.md) +- [Modular embedding SDK - dashboards](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/dashboards.md) +- [Modular embedding SDK](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/introduction.md) +- [Using the modular embedding SDK with Next.js](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/next-js.md) +- [Modular embedding SDK - plugins](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/plugins.md) +- [Modular embedding SDK - questions](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/questions.md) +- [Modular embedding SDK - CLI quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/quickstart-cli.md) +- [Modular embedding SDK - quickstart with sample app](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/quickstart-with-sample-app.md) +- [Modular embedding SDK - quickstart](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/quickstart.md) +- [Upgrading Metabase and the modular embedding SDK](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/upgrade.md) +- [Modular embedding SDK - versions](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/sdk/version.md) +- [Securing embedded Metabase](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/securing-embeds.md) +- [Embedding overview](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/start.md) +- [Parameters for static embeds](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/static-embedding-parameters.md) +- [Static embedding](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/static-embedding.md) +- [Tenants](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/tenants.md) +- [Translate embedded components](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/embedding/translations.md) +- [API keys](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/api-keys.md) +- [JWT-based authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/authenticating-with-jwt.md) +- [SAML-based authentication](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/authenticating-with-saml.md) +- [Google Sign-In](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/google-sign-in.md) +- [LDAP](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/ldap.md) +- [SAML with Auth0](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-auth0.md) +- [SAML with Microsoft Entra ID](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-azure.md) +- [SAML with Google](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-google.md) +- [SAML with Keycloak](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-keycloak.md) +- [SAML with Okta](https://raw.githubusercontent.com/metabase/metabase/refs/heads/release-x.62.x/docs/people-and-groups/saml-okta.md) ## Complete References diff --git a/_site/docs/v0.62/CONTRIBUTING.html b/_site/docs/v0.62/CONTRIBUTING.html index 1e8d2794df..24817bbd24 100644 --- a/_site/docs/v0.62/CONTRIBUTING.html +++ b/_site/docs/v0.62/CONTRIBUTING.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
  • - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6198,13 +6292,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/actions/basic.html b/_site/docs/v0.62/actions/basic.html index 8d26a73491..aba331c984 100644 --- a/_site/docs/v0.62/actions/basic.html +++ b/_site/docs/v0.62/actions/basic.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/actions/custom.html b/_site/docs/v0.62/actions/custom.html index 4378feab48..029320de63 100644 --- a/_site/docs/v0.62/actions/custom.html +++ b/_site/docs/v0.62/actions/custom.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/actions/introduction.html b/_site/docs/v0.62/actions/introduction.html index 02d73b8ce8..b777d56883 100644 --- a/_site/docs/v0.62/actions/introduction.html +++ b/_site/docs/v0.62/actions/introduction.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/actions/start.html b/_site/docs/v0.62/actions/start.html index 478528161c..d8b8733d77 100644 --- a/_site/docs/v0.62/actions/start.html +++ b/_site/docs/v0.62/actions/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/agent-api.html b/_site/docs/v0.62/ai/agent-api.html index b3d62d033d..04a5606885 100644 --- a/_site/docs/v0.62/ai/agent-api.html +++ b/_site/docs/v0.62/ai/agent-api.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/customization.html b/_site/docs/v0.62/ai/customization.html index 53c3b8121c..ab2116ec13 100644 --- a/_site/docs/v0.62/ai/customization.html +++ b/_site/docs/v0.62/ai/customization.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/file-based-development.html b/_site/docs/v0.62/ai/file-based-development.html index f68177b97d..a42e97a36f 100644 --- a/_site/docs/v0.62/ai/file-based-development.html +++ b/_site/docs/v0.62/ai/file-based-development.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/mcp.html b/_site/docs/v0.62/ai/mcp.html index 976f7c3078..3cf7c73ce6 100644 --- a/_site/docs/v0.62/ai/mcp.html +++ b/_site/docs/v0.62/ai/mcp.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/metabot-slack.html b/_site/docs/v0.62/ai/metabot-slack.html index ee0cb1a946..d5cc03a3bd 100644 --- a/_site/docs/v0.62/ai/metabot-slack.html +++ b/_site/docs/v0.62/ai/metabot-slack.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/metabot.html b/_site/docs/v0.62/ai/metabot.html index 8bff0ce3f8..36a6370e4c 100644 --- a/_site/docs/v0.62/ai/metabot.html +++ b/_site/docs/v0.62/ai/metabot.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/overview.html b/_site/docs/v0.62/ai/overview.html index 4086b8bc2d..3c92cb4f4d 100644 --- a/_site/docs/v0.62/ai/overview.html +++ b/_site/docs/v0.62/ai/overview.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/privacy.html b/_site/docs/v0.62/ai/privacy.html index 1db8ed1b2a..6dc5e17d6a 100644 --- a/_site/docs/v0.62/ai/privacy.html +++ b/_site/docs/v0.62/ai/privacy.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/settings.html b/_site/docs/v0.62/ai/settings.html index 5f04de71f0..8fc1d0bc56 100644 --- a/_site/docs/v0.62/ai/settings.html +++ b/_site/docs/v0.62/ai/settings.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/start.html b/_site/docs/v0.62/ai/start.html index ba34668f13..40adb91342 100644 --- a/_site/docs/v0.62/ai/start.html +++ b/_site/docs/v0.62/ai/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/system-prompts.html b/_site/docs/v0.62/ai/system-prompts.html index ba3ebef4f3..58414661b1 100644 --- a/_site/docs/v0.62/ai/system-prompts.html +++ b/_site/docs/v0.62/ai/system-prompts.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/usage-auditing.html b/_site/docs/v0.62/ai/usage-auditing.html index 6b67d80b2a..dfa02ef98c 100644 --- a/_site/docs/v0.62/ai/usage-auditing.html +++ b/_site/docs/v0.62/ai/usage-auditing.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/ai/usage-controls.html b/_site/docs/v0.62/ai/usage-controls.html index ea623f8cfe..df1ab68b19 100644 --- a/_site/docs/v0.62/ai/usage-controls.html +++ b/_site/docs/v0.62/ai/usage-controls.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/api.html b/_site/docs/v0.62/api.html index a49428517c..ada8d5e263 100644 --- a/_site/docs/v0.62/api.html +++ b/_site/docs/v0.62/api.html @@ -216,6 +216,12 @@ + + + + + + diff --git a/_site/docs/v0.62/configuring-metabase/appearance.html b/_site/docs/v0.62/configuring-metabase/appearance.html index 858716ff81..9945dc9822 100644 --- a/_site/docs/v0.62/configuring-metabase/appearance.html +++ b/_site/docs/v0.62/configuring-metabase/appearance.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/caching.html b/_site/docs/v0.62/configuring-metabase/caching.html index 7c8522b78d..bd18978875 100644 --- a/_site/docs/v0.62/configuring-metabase/caching.html +++ b/_site/docs/v0.62/configuring-metabase/caching.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/config-file.html b/_site/docs/v0.62/configuring-metabase/config-file.html index a8e97d5a9c..faf168b3bd 100644 --- a/_site/docs/v0.62/configuring-metabase/config-file.html +++ b/_site/docs/v0.62/configuring-metabase/config-file.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/config-template.html b/_site/docs/v0.62/configuring-metabase/config-template.html index aee34c028d..478488d0cf 100644 --- a/_site/docs/v0.62/configuring-metabase/config-template.html +++ b/_site/docs/v0.62/configuring-metabase/config-template.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/custom-maps.html b/_site/docs/v0.62/configuring-metabase/custom-maps.html index 22bd6fd1b4..4d273cfb48 100644 --- a/_site/docs/v0.62/configuring-metabase/custom-maps.html +++ b/_site/docs/v0.62/configuring-metabase/custom-maps.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/customizing-jetty-webserver.html b/_site/docs/v0.62/configuring-metabase/customizing-jetty-webserver.html index 27d6b59681..9dfbb6e448 100644 --- a/_site/docs/v0.62/configuring-metabase/customizing-jetty-webserver.html +++ b/_site/docs/v0.62/configuring-metabase/customizing-jetty-webserver.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/email.html b/_site/docs/v0.62/configuring-metabase/email.html index 2846f5f912..9786cd0d52 100644 --- a/_site/docs/v0.62/configuring-metabase/email.html +++ b/_site/docs/v0.62/configuring-metabase/email.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/environment-variables.html b/_site/docs/v0.62/configuring-metabase/environment-variables.html index 23b83a1cdb..0047fa3898 100644 --- a/_site/docs/v0.62/configuring-metabase/environment-variables.html +++ b/_site/docs/v0.62/configuring-metabase/environment-variables.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    @@ -9594,7 +9681,7 @@

    MB_NS_TR

    MB_PASSWORD_COMPLEXITY

    -

    Type: string ("weak", "normal", "strong")
    +

    Type: string ("weak", "normal", "strong", "strong-enough")
    Default: "normal"

    Enforce a password complexity rule to increase security for regular logins. This only applies to new users or users that are changing their password. Related MB_PASSWORD_LENGTH

    @@ -9603,6 +9690,7 @@

    weak no character constraints
  • normal at least 1 digit
  • strong minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character
  • +
  • strong-enough minimum 15 characters
  • MB_PASSWORD_LENGTH

    diff --git a/_site/docs/v0.62/configuring-metabase/fonts.html b/_site/docs/v0.62/configuring-metabase/fonts.html index d8f22707de..c4de808d35 100644 --- a/_site/docs/v0.62/configuring-metabase/fonts.html +++ b/_site/docs/v0.62/configuring-metabase/fonts.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn

    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/localization.html b/_site/docs/v0.62/configuring-metabase/localization.html index defa3f6a41..9795f49aed 100644 --- a/_site/docs/v0.62/configuring-metabase/localization.html +++ b/_site/docs/v0.62/configuring-metabase/localization.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/log-configuration.html b/_site/docs/v0.62/configuring-metabase/log-configuration.html index 627942419c..c987b9b5a3 100644 --- a/_site/docs/v0.62/configuring-metabase/log-configuration.html +++ b/_site/docs/v0.62/configuring-metabase/log-configuration.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/setting-up-metabase.html b/_site/docs/v0.62/configuring-metabase/setting-up-metabase.html index 3c278d782b..9c3991af28 100644 --- a/_site/docs/v0.62/configuring-metabase/setting-up-metabase.html +++ b/_site/docs/v0.62/configuring-metabase/setting-up-metabase.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/settings.html b/_site/docs/v0.62/configuring-metabase/settings.html index c3f642b223..ab793f0984 100644 --- a/_site/docs/v0.62/configuring-metabase/settings.html +++ b/_site/docs/v0.62/configuring-metabase/settings.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/slack.html b/_site/docs/v0.62/configuring-metabase/slack.html index a0659183a2..31447a3fd6 100644 --- a/_site/docs/v0.62/configuring-metabase/slack.html +++ b/_site/docs/v0.62/configuring-metabase/slack.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/start.html b/_site/docs/v0.62/configuring-metabase/start.html index 2e1b54574e..1fd508465d 100644 --- a/_site/docs/v0.62/configuring-metabase/start.html +++ b/_site/docs/v0.62/configuring-metabase/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/timezones.html b/_site/docs/v0.62/configuring-metabase/timezones.html index 3abd82f2bc..411f199c3f 100644 --- a/_site/docs/v0.62/configuring-metabase/timezones.html +++ b/_site/docs/v0.62/configuring-metabase/timezones.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/configuring-metabase/webhooks.html b/_site/docs/v0.62/configuring-metabase/webhooks.html index 52324dbaa5..41c09e2d1c 100644 --- a/_site/docs/v0.62/configuring-metabase/webhooks.html +++ b/_site/docs/v0.62/configuring-metabase/webhooks.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/dashboards/actions.html b/_site/docs/v0.62/dashboards/actions.html index 54e1d96d8e..3fa7877ebc 100644 --- a/_site/docs/v0.62/dashboards/actions.html +++ b/_site/docs/v0.62/dashboards/actions.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/dashboards/filters.html b/_site/docs/v0.62/dashboards/filters.html index eb23b7c683..d2d5662b97 100644 --- a/_site/docs/v0.62/dashboards/filters.html +++ b/_site/docs/v0.62/dashboards/filters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    @@ -6341,7 +6428,17 @@

    Location filters

    ID filter

    -

    The ID filter provides a simple input box where you can type the ID of a user, order, and so on.

    +

    The ID filter lets people filter on the ID of a user, order, and so on.

    + +

    You can select how people should filter on this column:

    + +
      +
    • Dropdown list
    • +
    • Search box
    • +
    • Input box
    • +
    + +

    See Set filter input type. To control which values appear in the dropdown or search box, see Change a filter’s selectable values.

    You can give people the option to pick one value or multiple values.

    @@ -6486,7 +6583,7 @@

    Change filter or parameter type

    1. When viewing a dashboard, click the pencil icon to Edit the dashboard.
    2. Click on the filter or parameter you want to edit. A widget editing sidebar should pop up on the right side.
    3. -
    4. In the sidebar, change the type of filter or parameter. Changing the widget type disconnects the widget from all cards. You’ll need to reconnect to the relevant columns on each card for the new type. If you’ve changed the widget type by mistake and want to restore the widget and its connections to cards, you can exit dashboard edit mode without saving your changes.
    5. +
    6. In the sidebar, change the type of filter or parameter. Changing the widget type disconnects the widget from all cards. You’ll need to reconnect the widget to the relevant columns on each card for the new type. If you’ve changed the widget type by mistake and want to restore the widget and its connections to cards, you can exit dashboard edit mode without saving your changes.

    Change filter operator

    @@ -6566,17 +6663,15 @@

    Change a filter’s selectable value

    Click Edit (to the right of “Dropdown list”) to specify where the values should come from:

      -
    • From connected fields
    • -
    • From another model or question
    • -
    • -

      Custom list

      - -

      Selectable values

      -
    • +
    • From connected fields: Use the values from the field the filter is connected to.
    • +
    • From another model or question: Pick a model or question (built with either the query builder or SQL), then set the Column to supply the values that the filter should pass along. You can also set a Column to supply the labels to show friendly labels in the dropdown while still filtering on the underlying values. For example, you could filter on product ID while showing the product’s title so people can search for products by name or ID.
    • +
    • Custom list: Enter each value on its own line.
    +

    Selectable values

    +

    Set a default filter value

    You might want to set a default filter value, like “Active,” so that when people load your dashboard, they only see data for “Active” records (not “Inactive,” “Canceled,” and so on).

    diff --git a/_site/docs/v0.62/dashboards/images/selectable-values.png b/_site/docs/v0.62/dashboards/images/selectable-values.png index ea42a7b321adf418f794d3ac961fd89886f5460f..67bafddaf5e50f86671de5a75422465c0c788b5b 100644 GIT binary patch literal 230077 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ΠB)UHVxoJK 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 z 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

    8m7KOrYY_2AE&R_-vk|Iyq5!+;; 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 Q5XHW%rlp$k+sz064;6dPa{vGU literal 87329 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 {;VCY>S?L zMRjh?WerlfD|DgT^L6s`alfOF_@ySLbLV3&TnM@P^*&`4bBiK|SQ>4Mh=9}!hQmTx!%U@&d_7%u!tAV! zJCn!g+CnNy*WF*0WTQDbgig z7CxI_V4G6K(J%1%BIw}QP{N&~e`iEJUe*P5coIn*aV36+{n8Iv`{xe@Bjbxrr(T6y zY{?uz7A{mY-|~u#A45Iu^b9x#Qckk8D(Taq;MAelQY?i|a;QUJLD$(6ziKhEMkP}) z`hJ>|$`TmOrrr3dv6E_oP?+^2{CT=j8Lj zll`hAk`PRKfws93GU~kDMuX*1znPW205V3SO`TyaaPb6HlL08h@2LcxIzQ$}dR+Ic zsz3#_YuvnApnglk+KP3KhJSyW@oQF-`?Wrs)QRiGQMJGI0PsLbQvU= zIl(m^TlX!0Lh7XdF@NiO`3GZQdATxl^gq+UGkFARB45j$>n3}D)h(Dc0&)F_q=x`E zhjip+RhqDOZ`}%tk4B*8Yc*!J^l!w1RKFLGm^o7M`I;vwE z@w$X@=PN`TYq1OxN-}o@X8W?IUvGXQ$AkNHFtF_d={tPq4IH(SNzO`yLZ+&z7n<+> zspy~WTx4syY{m4vNyU>Nqr%G@lq!KIV$V^`A;#e?%&2Qlzz=S{Xj>N z@KFCOaZG2V$UnB=$kD$h9W2b@%B-4tTY_`S+&bn%9+{@at7__00{L zMrkCzm7oRC_s=Kop0H6+OO~G)1nSGZnwu`1SVXM)TVcMXjirMezL152ZC0LT=Y?$6 zy5_#WsrPP!pG$c`d@RaT}R=|0J#ltL{%O z?8KjeAmyPjVoDj6Lp$r<>=^e@w(gksgCIQ(pTnL z@s;9aTaZ8@VvWC34HbO<37gJLTxPIa@y4 z^;My9%g@ZK23#fXh)--@8ZNyD59`meI>V(VSD1`TAWwoSyG;pxcU637iFX_{*42h9 zT(Yn-vJHxYv;n!R_Hd(Fp;RLk*Z0MDP?pa%6TOQnwJz>XSpCKMQ+k7-r8esG~2b&U2gFnH)CXJ{>;5$ZoZ^tq)RV0-s^{0?4RD3?a@Rg>52**`B z%aTn9=BC>C+4dB9L3oPhU+7pR-Fuq$w^xBus}cl?0G=?OGL%K5hhYp_bDWT}oe*!F zkbkyh7Cf(s{TBxS!(0&TT2r>1&JtgJtptXrI#uZlCY~|UuiZtSzO&{pnDz4Ir7sPX zuj5q6KhL8i5yW0&Krdua3`$=mbr|f1Gs+5O|J;2^y)<3{6UKGbL@!1S)pHAG=Xu}d zexb!$Pv@b7fbu$*NqGRCygCc%Sdz5edaJ zG!AqVVJE1<6&~3sw5T6nE;>mif3E@hHUBJnmmZ8ma(Oi3v#|6u3>-%l{TP@d-Ufw4 zm^Oapm%biHy=I)&^+Ks1~FT!&8rbHyafI{NonaCW@Zju6R*7 zc_zc{>(^7n2kt`|_#pZG55y0Hx4CI}Z62;n9n_ktJV9)9iO13yDdkIAFMuHy12?Bq zeyRlml{aKVT)Sgr8SI$h*Tk=OKBcQ2E!SLPJ=A`Z5t34p111DJ2!c1;1BZiEwamc( zfYJEHUgce6$3K2IL<5aRMA=$9`7|ZqqUkoXeh+Cu)3?5QH_T$g;8U`Dl693w3}EnF@4CKnPW zB62A7ON;fTEZk)Er7PFYB|4dqd&(>uLH6A@P?Su2jRnYRWK7 zd-OUtgZkmZJiby`(daT{_D&)xJ!Y@E~q_jiitMxGL>pMQ+K zqkqj%Xeusw4>pTVCK=k$_JQl_STk9SM&h4DqS$bS-HTwR8r-_bW7`0<#I+2aVi_G$ zjWhU>I2O*xSvFSfbff88eu7aX`)d}Y*rA~|Z<_E3qb%AGrzs>&MouqRM;+JKDc4k? zn8IsC9U>cI^Pf*MW82cUI7=e+^yg1mPkXbK#YElsCs*%Bw4UXmaV-J+u}Ies{{<3$ zauzW97pkG4nA83Ppxcj!&J6(Y%$fGjiv`V(><1;O|AYcX0rY!wFN1*74d4iks(tv? z{_{Wl8@mA~&6E&i)so47U~B(Hs$jawwLj@WaKH5C{LK!a2ec$Ye?qv%s(Wdcg5udx zHazQ)XQWR`tc-G8FrWY}>(H=-H@?)?Bb0d1lAzYyqh zT{hT$jR6tiepj05peHa}D1(*gvf8%gKhybWe)7uBe?mvJ3z5wYpfI^-5|3k0;MQWrP zfAF95q=tXqk8lIU{vWFX(ETEM39Rfy$3D9QSpCC{=mw47x)()|EAo9PGyqY9a`&8` zf&$?1`_XT*$?xYTI&B}|2|VB_TrmBAA<*A5AdG*Y$LW78RX7&>r}O?#s5}E0=>C%c z6@Tag7--smvboGcCI@?dgYoVJoOoU@1QVac z2kJSsm-{Z-(IpR1f3O!QlQApVJiV-k(cKn#VFfr+W%Xe_{cNHES5{cTa@={n$sn73 zcD9>A-U6_t)h5?GJa!)oI?QeAhwSy?VIh_wn}PbnY2QL&V5HH#-oX%z+)SNSBhS?| z>Bq$9PvQ2U{bpwJ$_B46B_|Z-a^J~DO2^bTG%&13fHhuVra_&++Mr#!VN~Q&v(K@< z?~*P28Xl!eFwReWLN}s?&UxPeCYC|nnmyhU^lY%Kl9D*>zNZ|}U@cm8pRFP+4XA08 zH4ei*`Lz-`1%3qWE!J%RG@2?6Dto#25hRe58ovF@^Xz`!*9_sIrHz>C8zvA_GJhm?T?6t%?O-?R; zHVJ;-fd+CVpF*55BtNIQ;+K&wk#&hiN1u#nYdmzA%jh@^_D42lms7wOwN;wr)b55I>e9F4}1}+XO*I$G@dK!Dsu+ z_&=l`qL3mKY7jJX=ofonc>p8P_HR@t9234)6ra=vqz}|iNhn;Ce*>l}+UnRqk-+>e zx2-g(>iFZ@$hi(1T)mpM37bv*FAV>g`1h&ab6VEPC2_u3s#_k(Bxn*zTMf0|u`NCmRHgRVDPr(MKH*SW*y5pV2dAE z2Q|vCbLP%aP2fX6+MTtd*s{UafklwQc{`8ss{q%{EvVmizGY@P)^?zu&@}!{n6B*b z`{}BG?mOo&0W*R#4!k@-jxib2W8b1eY#TlJ*?%p~Jd;NC_a?(J))O+NCl8f_c>djP zJF3D)uCqGA>@`Q)uT$2r;vO=wlhaXW?Q&2QNg<)cKGzYoSz=jJvvH0)k^b?OdSkt6?4mk)fwY+}kR z>WUf~Nrt3$(uT+>`H+txM|n#y|JjbxY*cM}f5p8vHu(3Q^9y`}f-yo)Db5`X`if(j z@xzrMGj2Cx=u`b;351ww<4doAHNSnA z(k%iqLkCg*n!xAJb1(wKI`9l};$!QwZCTUiu%tOhS>2g`iGQ_bA>P)pBR)&5FH>_1 zMo}t?#*wSLXA(=cRU53Fx%0M5w!e9Ge+&4xVMlt6bNU#MQ;-X_V#B{Nc{>b?TKmp? z$Rz4|wKHD-A|rVdZ*2jBfxW`np=C@5$$T}0{N^i$%vW%(8(wDk7Oa%}(0551WFuI7 zn=8A7YR~>LC&Kni$bf`5yH!F&mP6wdYd>z_$?JRHCn3lP>%WQK!HH|H_no{q zjsx6--j>Y0kx?PviH~ehOj}=HJy+Uqes;os{P=-wxzBl|WxnJ*#X!=}0;IgjurP-f zr(O~|pmuEU`CI&KY8mZETDUt|D0G?N2y#*Cu0-IjW7)gpp2r(&oD5(YXmRcd9hU7( zS&W$D+8bTf{l`!)nM>9BAp^O2^ zT}L=Dm!3;XK-kh!tXaVkaT%lqj+Gxj4Bb^(_V}6a1Qs=>HMN1py+Knwv-HEJl2i6~ z2?!=P9y`3M^84&vIT^T7JP=|X1i3zfKIp?p;VM(wolwiGVf(Nn>Y&eCjAi3Dj<5B# zV_|>XW+>;bW^voTRAW=;MyEjouf`}s%GKpa`Q~=2S&IrNza^4Lm0SiYs6DDKZD0L_ zZPf(uG({rX8$>tC?)z=au3j3co_s+nHu4JyM}M3t{~8cCD~}Q;HysLu(|e?!(mf8WRU(`e z1jv9e?%CAe^YNfKBuBn|e4ZL2fG_8^y*WWM`Nt_SKTkOaM*zM5N%IXr5_v`Q4|2#X zk~^yZw=c=EJO0zWe=Dgnkt|edDS|4n%s)tBCX+J23>VZVcYuGe^bt@`-m?7T`T)#{U> z*b~P|}P^Z{_=xTpyAF=m5sK~^U9g{r_gxW_z zA^YSJC*cJQkp}7h7>KnEa?694z50)s67$nfXDI21%ouO_SJq7k6bf>yY!P`+{QsovAvqT8kBVd$BP-xMfN1}8%b&h2MPAwc zuZ)LKvUDc+4I8R>j4@`Qz0cs72hq>&MeY9hXoYmTa%e zRv2xKHi?`5#=SmAHwL;vy!&amao9u6G_30^;9UZS2lcE8`)>}>E_BvP?dvlhH;}mA zhu<#WZ9D>G{FAC}x2>pbcez$NvPp?XR96RdTJ|gR3kt3-+AeG~h%CSA^H_Ul+dJKd zUsMn~#4O%6|M6du(JA@}(s5w$-4?5!ee2qQ^_ysaG!?1yaw}ynl(SbeK@Ju17}{<@ z{V*3GF%QJuHkRfH*^<&t99p?<3rnv3l>ks-+W{b-Nce({?z4=~a3>>W8o6ro-m&~RyLZaWj(Te7OI@a{fh>>l_1Dz5;{WNc!B6ptqwM<)qi zEo&O)VM_@+C(+ZRjU3gEyZo>o)xkj-?%TaD)GzN%g~(M ziCs$CI_fZ1fz+hbRr}uNr;A^OQa6vl!&%XD@f*U^S00U|VOvjA&pOF;WrsbhZh z8sQg#txV)~rM;uW zt6Ec(cje7b*%)zcHVoD{X*>3p9=cvK_iP(1GO+I=MdAWKYq-`){;UsN+3=w_-DTTd zFjD}CoDl?L(HAhOcpLAs9gC%BGQBStVi5k|s5FlPweu&t?6YAD(KuY{layge2p#h8C95N*oCVhMLOvtCkBs}NE87QoPN&mg&EP*d% zXi$vVt4AJ+*ES8=c<3N?`-!r0ur;ssuqOux923757Qh_oynWL(UMeN3@ZCRTEfpJ2 z)RkE;mdck!U8!lBYwHs{+3}ma%Pb(!z1tt&>t(SDGvn0l^}sYRR{wUmdtFptzOG*pu6funi`^$gwdy{=Un*Hy=T+b@?k=#o=Q&y43SXZL* zLdGhYD|JPP5D3PnuVhz!_2Ft{{%qOTz_q)6ZAod@;9#M59E>T<%}X|Vq}SagMts1` z!u;AliDRCav>mmUz0tYT+yauoBdm-^D#;zq;}w_3p0OMp``7?CyKDd#yxa)Ae&U@? z`V*Vs=Z_P#wI+}Jz%DRffiYOQ+Gp8^C1<)SymGpOCiYt+g5r~+UL2qJE98!zT$Tlk zu=TO?Tuexr>tJ#H#_V+MtBCE7*dnLR=QEKrtwtG3Rxx(VCqeK^eZOc_>SlOHQ^WA{ z(u6L;tZ!pAo-N-wOUikDVtR$>bzOBQ&^-Edn34%JYI~D;(tgKoTjB}3+3br~UJhmooE)S+{g@sXj3OE^L6 zl&X0j>P9b3#PD1rvN!<~Q&pF*UF<5^zcVOF{G{4jWyjL*kFB+>vg<9GcO`-WW}>=l zHD#R#9hbDW1UTq4x+!7)%0SneHDRG)dUiR;Z|H7e*W$c#SR1AOYUyy#^w6C%h|;xW z9!~bADlMzg3G>pWe`0q_(|OCK%}|hKf7SYEIrHy5smVh&Nb0c-9WXEdn9O*AU-;0+ zix$l1joJk$-{gL6IAiNGS|MGP9}r3({K&2&LxFIcpQk@X#~43)ZgfpJq(CwMU92+! z%?K83?nw^UfC$=Vi3b$V)+*U1HtHPn%bh3{3qxOPa#LJP@#0qkS*7Qpi_~9W_x$+0 z&5k-g`Qyi|R?7+HPl-Yzjfym%1kHQ7WZrk%B9dQ@X?GQlCCzx7=#;LTf9_HItkK96 z6vaOZ3~mO2LSzhhKVavZ0T#5>PQSC@Y0Gv+K#f_PTR&)WI;7e=YkOeQxK(=-aBp8 zaF5@pN!M-+3#nu=ab5E#O1G)iI_9l1!=|T_5x8EK{Iep-yRIcjybbS-Z*jd%!HN6; zYy_ho)ke*UsnNfrM(UIv{%C3!K}Bx6&AqF@#FRNAT`5KlhiKy5l0db=jUPT6+bA1Z z_-fYeXJUIpy==Rk9uLym_syRJPP?Siwimaz+P7WA)Ced2Xm`_%OW4GV9Gk}mtzUk5 zn5B_UU7H(Hd!8$nr)QOS!uAT!&H8tp0(ef&qI-=I=TDg)lVN*D9}w9EBaF_eU&G&Z zk--qvs^AH9DGtJ^j_u}^k~#EMa?V{=t6pfitDLzit52+@+(%0`ycGvte$bUGL5q9eR0Jz*6F-$sPMd5!M?~%S-DrS#INP>lSK^c=Sy9 zAg_Lfjfh*@n-BFMw1bVEbdaVl-fXSHB{b<6nyHI9S+t9~Zplt_ysFz3Via5XG3~M( z?{}inIkmpfd2^OQb#(v3G zc_P&85j;(UZ^d)5G!{hni&WKXAL(g=hRt&Hz{oxf*XR3Qy=}aXn{F4|xWtBgo>P3> z?&UG=9}csoewO)b3Q3Xa!~*Fe8Nr#o6sRoGnelU<<*u+jr8C7Zqn3mrIyZNiD}8 z^d#u97nhn7JF`r(3zXXW)ptIQ6uQqC(|qib(m zhe=s;jz#mmyWt~xUc)6n>b0hSg#Gw}<`=1wbjOq>&_jrW`eS__*k*N~c@^+39+Eg( z51gyCt&l(AL#E`Ipvw%@NNeJoFDox?ZIMn}v3;UaNR8|A28K(WusoOD3<@7mZat1k zETX7>JysY!|LNnrzDZ*nP7S3OQ_c4Iu=VSQIHO{TSn8^N?}6DphB4x9 zc-z&$!la7knAddzlPgxk9d5+1W&Jzgm5DC}SOYK1P!X|+@X*RsbGW)lo9=)l z)Y`H&R(NuF=$5#T&1Knwbi$Y8*5O$l5G|2UmA%_+ysUUT@Ni>-;={V>o7&@BRg)7X zLzh+RLX3ICrn)_bzP0y;?H1-*wCWIDeaD?zef6_N)yQhH+US#*C>g%8P(?K>@$@`L zCn(>G4d#6{jSZqy+aFi*8=Lu5iMLMz7dmRQS=&lCA;6icKG#_~JanPJZu2uvOgf## z7DZo=EaMP8EQ*j3`EN)(mS(lYG!#@dm?bec(%XoBw!3H-+s-gTtC0rT^^K^Fftq8vibPr z*APQBlNR$ap7LR?bOIgB?7Q~BR8@qxDQuIcz3jOsZS zE18Je?)xxDC3%yP)98kUO8#kTMJ<^10cC>S`$Jw$1>E&@8)NSo{TPdwIk{$xD_wnr@4_jN#nAz)&Ajz@;%=t^D$Zz6H8b8K!p21f34jZ zPIoTQGK$Tnw^0(`kT)YbvTi$hbLhpf8FdO~VfX%mZj1}#g-;-4A!}B!KiWZ&157MI zjYEy?6vxoRwq=aT*a$$V$6^l8vntQ_lyrXHJ>$Mw+TlpV-via(OuLx-#+Sj+#3mg= zyP{2_)ba!MOoLd9z%N>i@&!0-t1nfpMvm)Z?xcgMPHCar>LA$znX`1rd#`1A_0&pVn_-v%{<(J9ZdT)gW0af($#-E=@Z$cxK9p^So*( z5dOxinAO1U8U7{vd(qBrDiGHu@k8x?P7vlS4;=A4&HGf&>+99)BJh6)^FS)D1aD5G zn}jFNEehGw(Qg`{6B8v&IzEjJ2_rRsXBQ^rYS(^xXX5cx!-q38m(+aN2HzGftHAok z%XHHl#n%f3of02EKcl$41(?yypI&d&#J^fv0FlXj6Tfl9&i^y_C1DV=%dBd%G|JLd zuGc7s$=V{Xj2r6J3p81+oV_D;JHC&nMk#*jF{5FjcA3)vSkb?xx-+P^Aiv6n*UD!m zHAcf;e>mEhJ~`5Dm?EF0@8A{YlrlVm9&OzrRY$a8QqdDE(HSJ?(dSSC#6a z89g{o+b(Gc5yX5u%A@!$BP7N>27pYU4T=9DJ56L(CQC|#(<7qjTUD;u z$-W)rSZLI=-gB|eVa9*QnP6D>j7x;T0>KRXf9rZ)SlY=8!Sq;N9i=VGP8}&eW4@`a z)lEHkZGDcxw0rgOHQ;r|3I+G6;)16&6+V@;COkB|DA2m>s)u;V(2(~4KBj|M9bf8Z z1D%yhS)ss+R;NYZG|E}lsI7ZMyYn9Y*l3@i_+{OhyMn1BA7jVBS~3EG@Ywwv%!aUx z5p~nZuWrvndKDoEC9cbAt6xB}9j>*Vgl$qqO$qU&X_h#A^My~8BsOgiyJOgO-WMFK zl5DG%IkmY2R*%_0OjA2zr(Gidpf2?k;zQSm0I(H%+zCwAv}f&sr)94zf)^D^w(_}@ z2;O7U{kFwRw@)5x{8HbRmzk$ftEwm5IS4An(_~2LVg^6JNF8 zk|?+$0iGpy`kk2rx7@E9^_8q`axr2{!;Ar=`0l-~9+z>6b>H1c3$%=#p`0*I&P;-@ z8Y|#xlmFw(!mFsE7hgWTJuA|FHqOj6!U8FIf7-KMyy@OloR`;ac&APlA76F+yNMt8 zwwa#A)ni0NlcM+QnXkEOb=^E78G-H^xPE?4(WZ2x2z5TAeiL(QP>{7v?=}*pnUYAL z9#`Ob675qR5B_|_vvMj3aYr&y%-(`nJL{2Vt3EchHTfp{eT{-`DMaKv|D|3G?>Zcc z@84j5qrEexX7<3_hwdE16Pv7N&+>m+Bhv8V_uyb4TRVH!v>O1gGAA*~p*yS6_ zMcb9*G85C>wN=F4vdIg^pNIS=kf89Jn%IeqjFk2oDY#+0fyHX&TI6Tja9+H5MYJCm z3C-+8eZ9m0}9d}}14?ztST^jRavJ2}F9 z9UE0_WT`wgHZg&rmeO(!{Bf@410G8AUetCa>I5(pCpJtr46+hSR>Oh8;Lljk?gWcD zwU`RdOjM_&j1CkzF#n7DfapVU4Zq}vZj=E#QX@Cw8B8P6%}1iPZ3k$h%sSP=={p6g z;^PbYgpPgek`=$no?D`^&iy4SEeCb@^%EMUsY736Rg@L9@b9*Q%uF@(?SIt*@DNDS8mJfz{hmTZZ`L2%@` zSV40B{VJ!s8f= zgY`ND4=AiN)x((Jml+6o0E*>vfF%aaU#Y-@0J6P`Hvtf-Q*_C9tQ~0 z&8_0z6L0?cF^mTzw?&5*gqVl%Lg_n;x>^vuEt2z8C+#P7zJvK0hAV)>>T)bIPg?7M;D|H@s zxew2OEaSDIp?#0&UJa&ENk!22OPlk-bapjX3-zFq|AmAAdA)d>uF{pS&5PnOi`|h6iKuKt}m5 zF{uthy+-81Y4}3BOGzBI$YIypBHNa(Ncnw#fs<~@-&Gp;-MQp~62}E?yRp;9?5$Jw zC1?upiXm9&qF9nu_(ar@2n$#4qigD7hT@6e$`ioEu%VZlkI%i$Tp2NNQ-6hrc*5P} zIoau+mCM?_1Za|oOLc1JEW1Y5a>w*hWD4mnn2Fw9Wn9G+1w^T;N&Cm>ZjFWJTMne= zcNV+yUgJX$YjYxG7&`8(GK*>y+IMDy1erg1Wc2PscAFI*fDlO%ZI(UD7*y2!nC(oT z6yivi&rA)mpfr2`1_jaTT%jFrS)=7_J{Z>|D<9_6%_R;>a_W?RWQuIK&yix<2;SrM zCYdyXzQ@Ql6ch?ar6aTf_Oqa2bsE{4ZQmLVUNpN)%Q28f?{BTg=To$4J0%+| z5IsSqZ#3Nct&QN$=-%AkZrSVfl$cP0k2%IHA;9wFp_;>GccG^aVs1N1`Cmq-3R4+o zv<1~v9XHZEGlYLFbdW<%0N9jC08ry%7V37by&bl$S;a-yH)irWgjlqiOM`8|bNNf^ zbF><9X_X9SfT7WJmz%-oAV2&iHL5UFOT)qIB+pS`b1}jmxldbWKT)~v45@~hT+KR4 z)H95|W{^QFNK_m@OMgLPCwJD-rsG{6cpWSm9 zPjhR@GI+095i2EzE)YfO^QK(Z)*||BKoLA)_+v;HHLxk+q!|nvsouy*w493rS(?$o z4|`W8L;s>_YH#1jMl`026uKcKM6goDe-W22#zwwS(iWbD$=%jKAS4#^A$UgnSZr!k zu8QDbV!_U62{p4=B`AwOhH3&0~3ki1#S98f-b~wH-6_%mY&H_VwXya)AVjj zxyR24nPVExC9AUcEGCSqf+^Vj-j)I-1TNR4!LzI}sti9{UJIZrVbMkKmc5NxaPCs4 z>n8iK1_X4lt?g(W5Pan6*`oPyFlly}e>=~}7FzJG<+Y3;M$~P+nP59~uI-~Ec<+Zv z+&Mwc@WwzNgG>m!rLQjpNi9LCoJw2Qd+5r-SiM%slbYuM*8|wVb$+9ijT_d5`0gO^ zTIu%e;=S9$p979HK!&l}D!ARfYdcQKk+ibwCYYkm_^d`t)u5T{WQ2I5b zYSYex`OAdrCGpdEy55B=EF~3dbzo5Hl`1@eyJdbcS4n*!DeE8>suDNcW2ORF7?&`WYdbFeRwHsc0jZ z_lZz5(}gBRaw}Ep>_qx_nf2u9_NEmU3J-{9w4U%aFuAk@kV&&{>vG2yQBZMt zJJJsK`$rdiAG(BpEKBv|tcqt%uL}sh^&4(a66LQ-mw^oKyr5A4Vq#>#1^Up;I3j?*M8tZM)XpRo4b8A}e(*h;$X{ zZ50s(0VxtG0j0NqKteBe1O!wBqy!WMq=nu>2r5mw)Bqv$9(spR{ww&t`>pfsH}lWV z?Ch|RJkMROdaiSpyYEbIzh$z|THXzTiE?#JTul!UlL8`AJ#*O9fYq{DIZ> zCqGWwf4t|f-yubqqSA&_^Qq=I5mqswP4HmRf`cCua5(PJuq+FMIge#v(%OaTDREEMJ_&nq<@Ia%^ zveqTJ)&R`pmYl0Kw0atxA&|sB7{`~9sMQd$mupdl@-roDv|4yr7>};7^6a@2Y|%c$ z&&DRdm46S#$Pa}lYM4+=?PEll1jf>Y*)P5i*)GrSjK3b6j3c;odf?_zV=A)7f5~jnQDg520$8 z7}R!Nmz9FU*l%SvBk%LXXR-Vl)X^yy5e)|GQ2MvnHwh&%sZun1bM9)RAXaW@uqtsW zYGs_S5qdf*Ne$u17ZM3KBSP|45m17YPOok5 z+4C%?Rp>VD!a4J|;B3BO;yd}7vF$JIIDSZA#7M}(+%G}m!J&@aEKInrt*aILV6VQ!+~5Z zLX?lh^np_j$qB{F>==hjKV45I%%1OzOR@fH>H9e4-5kbi(g%5jdwga;rkXvpLx|hU zOSp~9%af*MymVTW_HFblU?sX*Mz@L_7Pep!@map$nz3>o!_A>lE7LChOYLpqFDzu- z*5{x2sw3qmV2x;uu`v=}bf^I!Pr^*l?r$K1HH4lZVM2O^Q~a{`VwV%S*vih%dwpZL za{*DIh=Ce5i=s)RmQnAYIQ_Y;9wIGs)S}QMc8|lM0z3I5EJ>~h;m$PiBhhYZ7+|GJ_utC? zCunYQbO&xp`wCdQPy7$J&dC+O`fr2{Pw@k(#Y|x_=M!K%VjY*YYn@5!QOVyy_7C>P; zpOb{3eX0HZW?qZ_uFXfQnE}BvKYbD-d=ey0C+LtomWMt}TuxI9YX8kJp~KqTNJo$P z36)slYp)zNmpb&>$d9pb_1!-afUmZp&N>?a6|(jE0060cZ{EGt)d;_~k@?SGTU^+| zox)gOSFE8rJoZW9-P=*UnnAJg|A1zlqN88>_Ayf~`$UXsGQY7-YTLE(WL1Jqe()#M zn#|62j+T^-1F8}5jF;IT+Ft^2qTMX}KVI@;_*+{xPLnml zEvUHnm0+X)34z3~TK>x;YoK?CSv?Q_61AR?>M9X-yiPm zvkow;{udFoV^nsKjP!d5ql*86e)Lon$LvfN{IRK{OQ$pu;6q6Hum3e&pVcd4haA0&2|n6 zoF31b++XIN9NOinL|i?bri!cP8#;bBd!fE_EitY8ab2{h_sxII9n6@H3|S1HFddD8 zUyjbo}_g zUj;hf?N6I&35!L??<&Lp`RPG+7T{m+;IvH7O;l( zq|Kj!_&aD}`uOS2^EZz|P+|8eV|#X*5=F`|YHKBU&e5m6z8@_;?{CCXAsje>P?|e< z7ViHA7?b{SASk!Av|4;!W>$&&;a8E|-hszUZ-HHZNK%9Gfxow@C!&jyYe-zc-muhr zdrJZ3<>fV4^*mS={^nuOs-ngQ{=B!<@lvT8qcas5Z{a}nh3?>8{2<6#Qf z1#>vibC^!rz2ax|XGO;Ac`lE&UOELbn9`4TA3$$Jw>Oq}Ej$+vg=%6vV%~*b>qZf>qbDKG#?FrDJ(!=EI1-vF{GgXGg^ogG z7}^x$JyssArgjwC&ff|wd@cMXFAZ6$D$NrRmbSb^avYgdTst9t`LgHSprqSGv`kE} z-G)}Z)2MLm6m?>PwqVAqMtT;oJ=s;_Q;!#czsRyW5QlV3!hCq-d*Tc)h`B3Ej2Zf;+~OZEN#FLg;-$O z;7TBW|CFpx%M+y|SApj^mbnG&BIh0;n&-^(Z}Bv{a901TgH7uyWmSYd8PHJ*w=(w z1cof*V|ZpJJ*MQZ;@42M4f1cGX=zI#rGKT0+l>x(_BPMD^?VS|Fj}ZT3SYk-wE9eI zqpP!z=7iY^JpF{cO5;Qh#n_y@V8JT@OeS-Ce}yuI)JyX0hhVV}{|&;_4mOwl?<>#pny(d$jbydX+&q zEH}*UAoF|{ozkC-%Bfr4l-vh&cJ4w3gwp~3DY^^jl}M=i6pw7=-=!%y8_p%E$F`!( zxAC`&`7b8)Em6gR3lzS9L(<)v@_cF^1BcJ*m|wsnFZI|G3C#M&b5&{Q=`Gqog3rsP zn@Hql)?iXFR^rTZGG%^CVXFTO56P~>d96m2QVA!NS-LadWM(A2SRGq58#j_bWpdmY z(#={J~x?DFM5#HGO?EPv&aas60Kt?LZvLb^=%xa7p8rl&K7f2kBKE)Vf9V`903 z;K!2$S(@9Xq*wf~(Q-~#3=$Z`TY8Q=^t9V|3km(|aPvioefO>C-3}Yu2B?x74frmpma zB=jb=0$YZSN}RQ(m37dVr6p*b9|LAHgSH%&v6@4^%oI2g!wTrpa>YROW+f^IZC%qFhZm~8_>A=$OF@_~9JC4(aK5NT%0Fh2>c9%&(D zl=hHR#F6u7Prb{G6k4Oet~W1SdqPY_S;W38TZI(UV6>XVPRw^$P+QUt z5Z922pRI}u#UtyHncam32I9B{U&h!!jDoa{df#*QXE9lnhlHu6gt5I)HxM_>Cfp0# zESiQhHX(hw$Hw7Cto*@!IB*szYMD(w~T^}E(<#DEe;~D?_@)BEtjkwU=+^ZXT;QgjDY7us~YZ=Y{ zY%ug?Mmko_bSIS17*c&5rq%^11FgbqkM z_Uxp{sH8O8XoFE$l%GN~g}=D6CZ#t|pHs&5t%ZZY~U(vJ)!?9<4|-Jk-j#9ABYAT2xeY z85-j?@kjxPlE>zHV2NvF&OU#eTf|blxMI>rLW-KM*Oe3ZB8n6%1EHar>)OfcOVh=B zV(li)#c@t^?oJ1kyVJ(n?K*TsZDR0`(jFBrz8T&V5<}^aPd_Se$iO8z{y_d2cW9+l z?4pdY5y4XT_|qSYT9w-?1M{fBBj&PR6gKBXhzH>XU=6PdiVf?1zMb4^ANDo5E6}15 zdCZ5BZ<4W0GSG@h(VWwT&o`MZUbW1t&m0r`~9bjz# zdSGffIn*f^DJteI<2hui3=I>`nA|`;>i2E0>FDz9^mkh}8sm!;4+cx}x1%?p`c;d- z!EDw|_669-;a03t5Z2LEtUSyuF}wZQN?3YZ{rB@U#v*5gmzToUsDFcw%+%)(gN&Rq z>!TC(MGN88XJir&?Vb$vpPmb`aQxWxX4s~;Wcz)fhkjn-Qb{I@dW%|GM-=;MUbPpi zv5Etgqr%o=cAcV_^^6Adc>;zOfX!X?S2644(NgrS?Meb9HdfT6BPb@3bAu+LS?T`EpsvA6= z>Ge4>dVh4fw5>@Gcs(%Z$zT*J++4wW7rye2Ezl;^IgRQw-ZhBMPRb3}jwyXGJe*1b z%NuU*pXokz!bC9%2KogL^UV9XS-d;e zCP%Brv~{H2%;cRT5D)KyD@KR$=`$mr+3TQdj)x0wMprj%gu(eJy@Q^SZ>>?Q zu#JtQxNd(rGZof)D>YxUb&#iVNPI-xuBS;XL}Zax%S&fJJ$<4ZlMfXtyQmu@eiE+mU1iR)kNpPR_YbP(`x3@Z-}!NN^oS<3}w1( zqbJl_Tc*?Eik()7?A-a@gU*za3DG}$-%f5EqZqukX-9=lMH2eVcI(`W_-MCXtU2xf zB)lLNJYbK|RyRMXXw`sipOTco(Te@0_IHnFrV8tp+ymEbN$6?)k{rA5cVak?Pen@L zWormpz&SyX^XtPH7zSLPI)#3gaIScDO~29uq*c~*6_cF#9=E@$j#S1nXq<3NZMQw) z!(3|4FWapHGitcf*DBq4-ECsOTUigYPlXwI>wlCMEApyXGzyfC6&+<9^mkwr%j5J^ zyW-~{DTKP8@0Waz;%|0I*xInhu1{N^BQ7T4j*YmByYleccOm@V;}!mD1a>#ufk${A z$`WaJUc39!M4spB<7fN^8HMd~Df8tgF~^ZwRm>Ia;IuGH42%ljYodH`J+BH3)<*Gm z2p)B8$Vv_0Cj_6Aq%^fPKOm{)<~8ZJdHT*)Y#&YU<~I2=oQY8j>mKN8$yi-l5A>{E zo|OH_|GE5V3LBS9x3^A4Z=s+)OOl3MMG%taJ}d=+2b0IEP)~Kk?3{zwk)w{Omtxaz zthMUm_uK9VFR%+T(v7^h+JX}aW-OL<%g0D;Nv0$FUIu`Ofc`!HiDi-J*LmnfbAMbE z`YO_!1MHwpF&df2!(d30Jw#C8oZGDji?5C{?PcJQH#NQCo?l(4`@r>azJ3;Wuf;EF zFs$}&I9_3_E2(gD()SGH^j!5ZUQ_&GRz}ISO9g7tG8SpX0|Frsw6AbUShFKYR*EYl z_4#{B-Nz3ty#}Cx963Y&jA@>lA4-jmU>&shwR(B%Fl;a)@s$Tax-Z; zRvgFgE-2gba)n}zvcWbDW_yBl$#e8ro4}~}nAS|nE1r@HWwr_qqIBLu+*S+-vnHzQ*mE3WAJEzQz*poQapff1~K z;)f3(yu4~krPI`TN!OzFBz><3!o2Vji}wBi2O!~9`b zTm0rr6P|KQ>65Dqu8p3JCqynP5U)Gk=jqMWKcMpD>tLz1M*>d0;f2HNt`hmBzNhp# z^sZCrbS(pa`GxDhXrsM#o013nQ!IpEF`Ye^q~9vsGSlPnUXATM+hh8jyqym)ATY4E zd2r}+vgB!VMTCJ^8I~g@XKI|D>7t@OUd|EoRBmXrVh>&_ZLDqOkZ?`Qo>=*%_N*lS zlQ5r@+dW*hVqdvU9q;)zN)#3$usk{7F5$SSot>>6mG}w0uA1-yh}8=`E8HdRQ|885 zS-XnkR8h|iV2TqE7uEXClk3H7%*g7G){=KyD#oSU)(JV|mof2Q66;sf0YSoPI10^U z{M?&l(6NC9gBlh99hs5F)M7nB#-|M6NT%3b53? z!G0MqvsoOB!)wxUH8vshR!ruG#oo0ac+_Knv&gTkeHwewDJG|cg7<2y=(M!9epBDx zyD!LJU*MTmUMZ)fvvR?lkq4uHNMhJ&-jgRfFD%)?d1T^ih{-|lsAYFo(^j~|Y`b`s zL~nvua&p+qDeH}Q9cNu5ej{=7#7)9_c@Hv3+QdzZPDtrVdRTxGjzi^;AX%#6{TPri zC5eT~hLjl)9aX1mB)V@;H4nY7GfW1*`<9H1W_KJIhI=t`X0oIYx0oxC&HLaEaC$-w__hn^tN;o zFa;ZN-Qcb^`)8X%@b&aOe-w{y3c&zyuUE+OybKVuks{DZW$Ey$EJ$+`b>KaeS8l<0-q@q0Ok*tp0xS+{P|wV-jPnH@NOST zpcaBa2$}7f&OXG`Gpxqd*0DM_xu$X_XQaC9E&;774iSJ?G0dBdS*Uu>-stfdpT9%t zPO403zys8otfrIJ)d7k_3|mZy;((lwxHXrJa^1nb*+~6T2M@qp$r2i%&yE@7rYko= zfK>z^V4QOQmUJ&ja_jh|%1%KS`JUhSWv_)jpJKh!Xy4;fSw29b4G?6aZd*d~;Niv(2E?LBBxPI`Ixkk8UOS3nEZjFFk-w6LKG`wPOH&Xf9!z z-*5}mdG3e(CRE5Zs_jP&Hf|o3wZ~*@Gr2zzL*k8{~ad}c@83h*T#By33onaRu+Fszyjva2+F*P|Q z1$C(meksf`6-kenvM+Zf_i#^`LrDHnMKH3=f4aYn#}Q3}K+&us&g)6338}XhkrsZY zPAYwjm5t3TShUDEUy2$pvBkvGSZ}myQD2L|#vF0jn~OCaIbr4FIy;+%zk)(xW!{7& zHS$+=OQ0(40ljVQmFKv04r3bu(R|kRHyrx47pl&1JeTxm$#bkvgbbltA9}#&k`h}T zVgCmooebzepzi3B-+i6xiVqVqqKi(Mx-S_>o}L=dS>AR#*RwuJFgEF2sI?E!W4U%q zq}0x1pS;(4E@b+WL7A{{ClV$q60yHw7}PBQ1LZPfc9dJ_Y+hFTxnDvBBW+Jsn0fXO z$UBN;SkIy?9Dg zU#2wY$#EWVP+|vzZXEFtVF^P6YV67JjH`s-igfRy-xOAyn)?Mw=gZ3m%D^IiheN;x zcNN4@R`1A5WBu}M$8m?Jz;?ZKGo;z+%z)+- z5b|LVDZgIg;I^yeBE8Y+Vo@ZJ$=vzFNM?-b;Cfo`r)M|XWS-1{&>fR=MoE2%5XYoj zaKD&9(Yu@FS+QQP?;;FYqZm_mFjxYnBG>Vh?sFmqW5E@vly7e^_%55_pdFmT?JX#@D#Uq+zp*ks9FEDy=)1;|Jki4Y_X?t2tIajOU zZHk`+^TO7uQ}uk_37Ym&G%S3H$BGJQBCyzBIwD$m*U?O)H6;wvbs07HT5k{Bj z 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

    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/dashboards/introduction.html b/_site/docs/v0.62/dashboards/introduction.html index c533e1cb4b..2e168d7311 100644 --- a/_site/docs/v0.62/dashboards/introduction.html +++ b/_site/docs/v0.62/dashboards/introduction.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/dashboards/linked-filters.html b/_site/docs/v0.62/dashboards/linked-filters.html index 24da664ee0..fa475009da 100644 --- a/_site/docs/v0.62/dashboards/linked-filters.html +++ b/_site/docs/v0.62/dashboards/linked-filters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/dashboards/multiple-series.html b/_site/docs/v0.62/dashboards/multiple-series.html index 22686823a1..4b0045d700 100644 --- a/_site/docs/v0.62/dashboards/multiple-series.html +++ b/_site/docs/v0.62/dashboards/multiple-series.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/dashboards/start.html b/_site/docs/v0.62/dashboards/start.html index 67ab3a7a90..6542b8030b 100644 --- a/_site/docs/v0.62/dashboards/start.html +++ b/_site/docs/v0.62/dashboards/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/dashboards/subscriptions.html b/_site/docs/v0.62/dashboards/subscriptions.html index 057e081c71..b6fe9eb4bb 100644 --- a/_site/docs/v0.62/dashboards/subscriptions.html +++ b/_site/docs/v0.62/dashboards/subscriptions.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/editable-tables.html b/_site/docs/v0.62/data-modeling/editable-tables.html index a1a9fe8d9d..23643ef56b 100644 --- a/_site/docs/v0.62/data-modeling/editable-tables.html +++ b/_site/docs/v0.62/data-modeling/editable-tables.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/formatting.html b/_site/docs/v0.62/data-modeling/formatting.html index d0e20d0e78..14e08730c8 100644 --- a/_site/docs/v0.62/data-modeling/formatting.html +++ b/_site/docs/v0.62/data-modeling/formatting.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/json-unfolding.html b/_site/docs/v0.62/data-modeling/json-unfolding.html index 39e3ae070e..00805abda7 100644 --- a/_site/docs/v0.62/data-modeling/json-unfolding.html +++ b/_site/docs/v0.62/data-modeling/json-unfolding.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/legacy-metrics.html b/_site/docs/v0.62/data-modeling/legacy-metrics.html index ba3ce228ae..44d4ddef53 100644 --- a/_site/docs/v0.62/data-modeling/legacy-metrics.html +++ b/_site/docs/v0.62/data-modeling/legacy-metrics.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/metadata-editing.html b/_site/docs/v0.62/data-modeling/metadata-editing.html index ce04682944..88f98c05b2 100644 --- a/_site/docs/v0.62/data-modeling/metadata-editing.html +++ b/_site/docs/v0.62/data-modeling/metadata-editing.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/metrics.html b/_site/docs/v0.62/data-modeling/metrics.html index 087fb32701..5b5c49d260 100644 --- a/_site/docs/v0.62/data-modeling/metrics.html +++ b/_site/docs/v0.62/data-modeling/metrics.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/model-persistence.html b/_site/docs/v0.62/data-modeling/model-persistence.html index b197f25aaf..9875ff3756 100644 --- a/_site/docs/v0.62/data-modeling/model-persistence.html +++ b/_site/docs/v0.62/data-modeling/model-persistence.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/models.html b/_site/docs/v0.62/data-modeling/models.html index 70c1b2f6e9..79e17dcbd0 100644 --- a/_site/docs/v0.62/data-modeling/models.html +++ b/_site/docs/v0.62/data-modeling/models.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/segments.html b/_site/docs/v0.62/data-modeling/segments.html index c670ec1957..3050711d4b 100644 --- a/_site/docs/v0.62/data-modeling/segments.html +++ b/_site/docs/v0.62/data-modeling/segments.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/semantic-types.html b/_site/docs/v0.62/data-modeling/semantic-types.html index 996847d52c..d07f297031 100644 --- a/_site/docs/v0.62/data-modeling/semantic-types.html +++ b/_site/docs/v0.62/data-modeling/semantic-types.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-modeling/start.html b/_site/docs/v0.62/data-modeling/start.html index 95c6e127df..7fb17f3381 100644 --- a/_site/docs/v0.62/data-modeling/start.html +++ b/_site/docs/v0.62/data-modeling/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/dependencies/diagnostics.html b/_site/docs/v0.62/data-studio/dependencies/diagnostics.html index 0d23f3fd55..7b5693704f 100644 --- a/_site/docs/v0.62/data-studio/dependencies/diagnostics.html +++ b/_site/docs/v0.62/data-studio/dependencies/diagnostics.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/dependencies/graph.html b/_site/docs/v0.62/data-studio/dependencies/graph.html index 25b7b0b794..87aa3835e2 100644 --- a/_site/docs/v0.62/data-studio/dependencies/graph.html +++ b/_site/docs/v0.62/data-studio/dependencies/graph.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/dependencies/replace-data-sources.html b/_site/docs/v0.62/data-studio/dependencies/replace-data-sources.html index 1a60ed23d9..f9371721ab 100644 --- a/_site/docs/v0.62/data-studio/dependencies/replace-data-sources.html +++ b/_site/docs/v0.62/data-studio/dependencies/replace-data-sources.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/library.html b/_site/docs/v0.62/data-studio/library.html index 47111c9999..9be0896a06 100644 --- a/_site/docs/v0.62/data-studio/library.html +++ b/_site/docs/v0.62/data-studio/library.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/managing-tables.html b/_site/docs/v0.62/data-studio/managing-tables.html index 1487a7dc42..2ba054ef27 100644 --- a/_site/docs/v0.62/data-studio/managing-tables.html +++ b/_site/docs/v0.62/data-studio/managing-tables.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/measures.html b/_site/docs/v0.62/data-studio/measures.html index ba231c46b7..243fa9a85b 100644 --- a/_site/docs/v0.62/data-studio/measures.html +++ b/_site/docs/v0.62/data-studio/measures.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/overview.html b/_site/docs/v0.62/data-studio/overview.html index 498339f9ce..773ee87a42 100644 --- a/_site/docs/v0.62/data-studio/overview.html +++ b/_site/docs/v0.62/data-studio/overview.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/segments.html b/_site/docs/v0.62/data-studio/segments.html index dca63348f0..5a165029ef 100644 --- a/_site/docs/v0.62/data-studio/segments.html +++ b/_site/docs/v0.62/data-studio/segments.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/transforms/addons.html b/_site/docs/v0.62/data-studio/transforms/addons.html index bd1360da16..1510a921d6 100644 --- a/_site/docs/v0.62/data-studio/transforms/addons.html +++ b/_site/docs/v0.62/data-studio/transforms/addons.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/transforms/jobs-and-runs.html b/_site/docs/v0.62/data-studio/transforms/jobs-and-runs.html index c0a8c3da39..ce3dfae5e8 100644 --- a/_site/docs/v0.62/data-studio/transforms/jobs-and-runs.html +++ b/_site/docs/v0.62/data-studio/transforms/jobs-and-runs.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/transforms/python-runner.html b/_site/docs/v0.62/data-studio/transforms/python-runner.html index 55c07a61e8..9df93aa8f3 100644 --- a/_site/docs/v0.62/data-studio/transforms/python-runner.html +++ b/_site/docs/v0.62/data-studio/transforms/python-runner.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/transforms/python-transforms.html b/_site/docs/v0.62/data-studio/transforms/python-transforms.html index eda9af805e..dbb7b081a7 100644 --- a/_site/docs/v0.62/data-studio/transforms/python-transforms.html +++ b/_site/docs/v0.62/data-studio/transforms/python-transforms.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/transforms/query-transforms.html b/_site/docs/v0.62/data-studio/transforms/query-transforms.html index acc6150823..a44bab2c62 100644 --- a/_site/docs/v0.62/data-studio/transforms/query-transforms.html +++ b/_site/docs/v0.62/data-studio/transforms/query-transforms.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/transforms/transform-inspector.html b/_site/docs/v0.62/data-studio/transforms/transform-inspector.html index 48a0762d10..284b62abb2 100644 --- a/_site/docs/v0.62/data-studio/transforms/transform-inspector.html +++ b/_site/docs/v0.62/data-studio/transforms/transform-inspector.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/data-studio/transforms/transforms-overview.html b/_site/docs/v0.62/data-studio/transforms/transforms-overview.html index 67c99b8499..aed8932fe7 100644 --- a/_site/docs/v0.62/data-studio/transforms/transforms-overview.html +++ b/_site/docs/v0.62/data-studio/transforms/transforms-overview.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connecting.html b/_site/docs/v0.62/databases/connecting.html index 4a72191be0..a3c6514e8d 100644 --- a/_site/docs/v0.62/databases/connecting.html +++ b/_site/docs/v0.62/databases/connecting.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/athena.html b/_site/docs/v0.62/databases/connections/athena.html index 987dd0940c..0062d874d3 100644 --- a/_site/docs/v0.62/databases/connections/athena.html +++ b/_site/docs/v0.62/databases/connections/athena.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/aws-rds.html b/_site/docs/v0.62/databases/connections/aws-rds.html index e3f8ba1288..d83c2f5c9f 100644 --- a/_site/docs/v0.62/databases/connections/aws-rds.html +++ b/_site/docs/v0.62/databases/connections/aws-rds.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/bigquery.html b/_site/docs/v0.62/databases/connections/bigquery.html index 3d8bae98a5..4f75d91c5f 100644 --- a/_site/docs/v0.62/databases/connections/bigquery.html +++ b/_site/docs/v0.62/databases/connections/bigquery.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/clickhouse.html b/_site/docs/v0.62/databases/connections/clickhouse.html index 590c86e9b8..54fb1a4b73 100644 --- a/_site/docs/v0.62/databases/connections/clickhouse.html +++ b/_site/docs/v0.62/databases/connections/clickhouse.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/databricks.html b/_site/docs/v0.62/databases/connections/databricks.html index ffd808727c..f42bd41dad 100644 --- a/_site/docs/v0.62/databases/connections/databricks.html +++ b/_site/docs/v0.62/databases/connections/databricks.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/druid.html b/_site/docs/v0.62/databases/connections/druid.html index ac4563bb97..e90bbca245 100644 --- a/_site/docs/v0.62/databases/connections/druid.html +++ b/_site/docs/v0.62/databases/connections/druid.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/mariadb.html b/_site/docs/v0.62/databases/connections/mariadb.html index 876a9201e3..f79de049cf 100644 --- a/_site/docs/v0.62/databases/connections/mariadb.html +++ b/_site/docs/v0.62/databases/connections/mariadb.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/mongodb.html b/_site/docs/v0.62/databases/connections/mongodb.html index 0debdfb945..e219ac4f21 100644 --- a/_site/docs/v0.62/databases/connections/mongodb.html +++ b/_site/docs/v0.62/databases/connections/mongodb.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/mysql.html b/_site/docs/v0.62/databases/connections/mysql.html index 40d0973c6d..4fef011f23 100644 --- a/_site/docs/v0.62/databases/connections/mysql.html +++ b/_site/docs/v0.62/databases/connections/mysql.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/oracle.html b/_site/docs/v0.62/databases/connections/oracle.html index a9edc20895..eef40ae421 100644 --- a/_site/docs/v0.62/databases/connections/oracle.html +++ b/_site/docs/v0.62/databases/connections/oracle.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/postgresql.html b/_site/docs/v0.62/databases/connections/postgresql.html index 83e9439ad1..f2287920a2 100644 --- a/_site/docs/v0.62/databases/connections/postgresql.html +++ b/_site/docs/v0.62/databases/connections/postgresql.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/presto.html b/_site/docs/v0.62/databases/connections/presto.html index 2c8ac9a8fe..ccbaadd844 100644 --- a/_site/docs/v0.62/databases/connections/presto.html +++ b/_site/docs/v0.62/databases/connections/presto.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/redshift.html b/_site/docs/v0.62/databases/connections/redshift.html index b7b7950930..407ddcdd51 100644 --- a/_site/docs/v0.62/databases/connections/redshift.html +++ b/_site/docs/v0.62/databases/connections/redshift.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/snowflake.html b/_site/docs/v0.62/databases/connections/snowflake.html index fc9c882cea..f3f31b914d 100644 --- a/_site/docs/v0.62/databases/connections/snowflake.html +++ b/_site/docs/v0.62/databases/connections/snowflake.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/sparksql.html b/_site/docs/v0.62/databases/connections/sparksql.html index e63f37cdb3..f8bc3326b6 100644 --- a/_site/docs/v0.62/databases/connections/sparksql.html +++ b/_site/docs/v0.62/databases/connections/sparksql.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/sql-server.html b/_site/docs/v0.62/databases/connections/sql-server.html index 1ff5c5b1a3..fad7ac1edd 100644 --- a/_site/docs/v0.62/databases/connections/sql-server.html +++ b/_site/docs/v0.62/databases/connections/sql-server.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/sqlite.html b/_site/docs/v0.62/databases/connections/sqlite.html index 5e83f0d568..173ef25f33 100644 --- a/_site/docs/v0.62/databases/connections/sqlite.html +++ b/_site/docs/v0.62/databases/connections/sqlite.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/starburst.html b/_site/docs/v0.62/databases/connections/starburst.html index 55a5c9574a..d6a3498533 100644 --- a/_site/docs/v0.62/databases/connections/starburst.html +++ b/_site/docs/v0.62/databases/connections/starburst.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/connections/vertica.html b/_site/docs/v0.62/databases/connections/vertica.html index 0fba37109a..076ac557a2 100644 --- a/_site/docs/v0.62/databases/connections/vertica.html +++ b/_site/docs/v0.62/databases/connections/vertica.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/danger-zone.html b/_site/docs/v0.62/databases/danger-zone.html index 0488f763aa..134bcc4b5a 100644 --- a/_site/docs/v0.62/databases/danger-zone.html +++ b/_site/docs/v0.62/databases/danger-zone.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/encrypting-details-at-rest.html b/_site/docs/v0.62/databases/encrypting-details-at-rest.html index 38f6075283..27d2a9771a 100644 --- a/_site/docs/v0.62/databases/encrypting-details-at-rest.html +++ b/_site/docs/v0.62/databases/encrypting-details-at-rest.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/ssh-tunnel.html b/_site/docs/v0.62/databases/ssh-tunnel.html index 4873f6fd3c..ab1c5fc5a9 100644 --- a/_site/docs/v0.62/databases/ssh-tunnel.html +++ b/_site/docs/v0.62/databases/ssh-tunnel.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/ssl-certificates.html b/_site/docs/v0.62/databases/ssl-certificates.html index fa6df4f1ed..6f65f28218 100644 --- a/_site/docs/v0.62/databases/ssl-certificates.html +++ b/_site/docs/v0.62/databases/ssl-certificates.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/start.html b/_site/docs/v0.62/databases/start.html index 64a50b10d8..0a7782f8e8 100644 --- a/_site/docs/v0.62/databases/start.html +++ b/_site/docs/v0.62/databases/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/sync-scan.html b/_site/docs/v0.62/databases/sync-scan.html index 5db35c9b6e..199b39ac3c 100644 --- a/_site/docs/v0.62/databases/sync-scan.html +++ b/_site/docs/v0.62/databases/sync-scan.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/uploads.html b/_site/docs/v0.62/databases/uploads.html index de18f9e72c..ad1ed92fe6 100644 --- a/_site/docs/v0.62/databases/uploads.html +++ b/_site/docs/v0.62/databases/uploads.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/users-roles-privileges.html b/_site/docs/v0.62/databases/users-roles-privileges.html index 4b07689b7e..e8b01c81f9 100644 --- a/_site/docs/v0.62/databases/users-roles-privileges.html +++ b/_site/docs/v0.62/databases/users-roles-privileges.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/databases/writable-connection.html b/_site/docs/v0.62/databases/writable-connection.html index 5dc45dfba9..337f5b76fb 100644 --- a/_site/docs/v0.62/databases/writable-connection.html +++ b/_site/docs/v0.62/databases/writable-connection.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/api-changelog.html b/_site/docs/v0.62/developers-guide/api-changelog.html index f1b4af6a31..9df75d4526 100644 --- a/_site/docs/v0.62/developers-guide/api-changelog.html +++ b/_site/docs/v0.62/developers-guide/api-changelog.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/build.html b/_site/docs/v0.62/developers-guide/build.html index 6c3f3c42e5..6dda1d4a67 100644 --- a/_site/docs/v0.62/developers-guide/build.html +++ b/_site/docs/v0.62/developers-guide/build.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/clojure.html b/_site/docs/v0.62/developers-guide/clojure.html index 764a36ddd6..714b78d575 100644 --- a/_site/docs/v0.62/developers-guide/clojure.html +++ b/_site/docs/v0.62/developers-guide/clojure.html @@ -226,6 +226,12 @@ + + + + + + @@ -1030,9 +1036,47 @@
    Learn
    - @@ -1812,9 +1856,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1828,6 +1911,17 @@
    Embedded Analytics
    + + +
    @@ -6210,13 +6304,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/code-reviews.html b/_site/docs/v0.62/developers-guide/code-reviews.html index 70c4ed03d0..0d8c3a2556 100644 --- a/_site/docs/v0.62/developers-guide/code-reviews.html +++ b/_site/docs/v0.62/developers-guide/code-reviews.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/community-drivers.html b/_site/docs/v0.62/developers-guide/community-drivers.html index a281aee292..7078e336ed 100644 --- a/_site/docs/v0.62/developers-guide/community-drivers.html +++ b/_site/docs/v0.62/developers-guide/community-drivers.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/custom-visualizations.html b/_site/docs/v0.62/developers-guide/custom-visualizations.html index efaf153fbc..beba18fc13 100644 --- a/_site/docs/v0.62/developers-guide/custom-visualizations.html +++ b/_site/docs/v0.62/developers-guide/custom-visualizations.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/dev-branch-docker.html b/_site/docs/v0.62/developers-guide/dev-branch-docker.html index bfb26b7335..b51abd31a8 100644 --- a/_site/docs/v0.62/developers-guide/dev-branch-docker.html +++ b/_site/docs/v0.62/developers-guide/dev-branch-docker.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/devenv.html b/_site/docs/v0.62/developers-guide/devenv.html index 07619e5e9f..82eb596dcd 100644 --- a/_site/docs/v0.62/developers-guide/devenv.html +++ b/_site/docs/v0.62/developers-guide/devenv.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/docs.html b/_site/docs/v0.62/developers-guide/docs.html index f645a3e4b8..55d139f445 100644 --- a/_site/docs/v0.62/developers-guide/docs.html +++ b/_site/docs/v0.62/developers-guide/docs.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/driver-changelog.html b/_site/docs/v0.62/developers-guide/driver-changelog.html index a21cac74aa..f159be0867 100644 --- a/_site/docs/v0.62/developers-guide/driver-changelog.html +++ b/_site/docs/v0.62/developers-guide/driver-changelog.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/drivers/basics.html b/_site/docs/v0.62/developers-guide/drivers/basics.html index 9569493161..96bc227554 100644 --- a/_site/docs/v0.62/developers-guide/drivers/basics.html +++ b/_site/docs/v0.62/developers-guide/drivers/basics.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/drivers/driver-tests.html b/_site/docs/v0.62/developers-guide/drivers/driver-tests.html index 297f02a222..c83f3582e6 100644 --- a/_site/docs/v0.62/developers-guide/drivers/driver-tests.html +++ b/_site/docs/v0.62/developers-guide/drivers/driver-tests.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/drivers/multimethods.html b/_site/docs/v0.62/developers-guide/drivers/multimethods.html index ee6e1f5459..46aa1c52d7 100644 --- a/_site/docs/v0.62/developers-guide/drivers/multimethods.html +++ b/_site/docs/v0.62/developers-guide/drivers/multimethods.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/drivers/plugins.html b/_site/docs/v0.62/developers-guide/drivers/plugins.html index 1962aa6a35..64e2c224c3 100644 --- a/_site/docs/v0.62/developers-guide/drivers/plugins.html +++ b/_site/docs/v0.62/developers-guide/drivers/plugins.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/drivers/start.html b/_site/docs/v0.62/developers-guide/drivers/start.html index 5847d2d843..e9c6a5450b 100644 --- a/_site/docs/v0.62/developers-guide/drivers/start.html +++ b/_site/docs/v0.62/developers-guide/drivers/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/e2e-tests.html b/_site/docs/v0.62/developers-guide/e2e-tests.html index 618bafe42e..9ce9273d64 100644 --- a/_site/docs/v0.62/developers-guide/e2e-tests.html +++ b/_site/docs/v0.62/developers-guide/e2e-tests.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/emacs.html b/_site/docs/v0.62/developers-guide/emacs.html index a8d00c1917..8d8604778b 100644 --- a/_site/docs/v0.62/developers-guide/emacs.html +++ b/_site/docs/v0.62/developers-guide/emacs.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/frontend.html b/_site/docs/v0.62/developers-guide/frontend.html index 4ac2471285..a6acc603a9 100644 --- a/_site/docs/v0.62/developers-guide/frontend.html +++ b/_site/docs/v0.62/developers-guide/frontend.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/internationalization.html b/_site/docs/v0.62/developers-guide/internationalization.html index 6bb9ffc12b..c0e12b7eb5 100644 --- a/_site/docs/v0.62/developers-guide/internationalization.html +++ b/_site/docs/v0.62/developers-guide/internationalization.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/mage.html b/_site/docs/v0.62/developers-guide/mage.html index 69d8510a94..b34c835dc9 100644 --- a/_site/docs/v0.62/developers-guide/mage.html +++ b/_site/docs/v0.62/developers-guide/mage.html @@ -6,10 +6,12 @@ - - + + + + + + +
    @@ -1885,7 +1981,7 @@
    Analytics
  • - + Queries and charts @@ -1908,7 +2004,7 @@
    Analytics
  • - + Introduction @@ -1944,7 +2040,7 @@
    Analytics
  • - + Editor @@ -1958,7 +2054,7 @@
    Analytics
  • - + Filtering @@ -1972,7 +2068,7 @@
    Analytics
  • - + Summarizing and grouping @@ -1986,7 +2082,7 @@
    Analytics
  • - + Joining data @@ -2000,7 +2096,7 @@
    Analytics
  • - + Custom expressions @@ -2014,7 +2110,7 @@
    Analytics
  • - + List of expressions @@ -2054,7 +2150,7 @@
    Analytics
  • - + SQL editor @@ -2068,7 +2164,7 @@
    Analytics
  • - + SQL parameters @@ -2082,7 +2178,7 @@
    Analytics
  • - + Field filters @@ -2096,7 +2192,7 @@
    Analytics
  • - + Basic SQL parameters @@ -2110,7 +2206,7 @@
    Analytics
  • - + Time grouping parameters @@ -2124,7 +2220,7 @@
    Analytics
  • - + Table variables @@ -2138,7 +2234,7 @@
    Analytics
  • - + Optional variables @@ -2152,7 +2248,7 @@
    Analytics
  • - + Filter widgets @@ -2166,7 +2262,7 @@
    Analytics
  • - + Referencing models and questions @@ -2180,7 +2276,7 @@
    Analytics
  • - + Snippets @@ -2194,7 +2290,7 @@
    Analytics
  • - + Snippet folder permissions @@ -2234,7 +2330,7 @@
    Analytics
  • - + Overview @@ -2248,7 +2344,7 @@
    Analytics
  • - + Box plot @@ -2262,7 +2358,7 @@
    Analytics
  • - + Combo chart @@ -2276,7 +2372,7 @@
    Analytics
  • - + Details chart @@ -2290,7 +2386,7 @@
    Analytics
  • - + Funnel chart @@ -2304,7 +2400,7 @@
    Analytics
  • - + Gauge chart @@ -2318,7 +2414,7 @@
    Analytics
  • - + Line, bar, and area charts @@ -2332,7 +2428,7 @@
    Analytics
  • - + Maps @@ -2346,7 +2442,7 @@
    Analytics
  • - + Number chart @@ -2360,7 +2456,7 @@
    Analytics
  • - + Pie and sunburst charts @@ -2374,7 +2470,7 @@
    Analytics
  • - + Pivot tables @@ -2388,7 +2484,7 @@
    Analytics
  • - + Progress bar @@ -2402,7 +2498,7 @@
    Analytics
  • - + Sankey chart @@ -2416,7 +2512,7 @@
    Analytics
  • - + Scatterplot @@ -2430,7 +2526,7 @@
    Analytics
  • - + Table @@ -2444,7 +2540,7 @@
    Analytics
  • - + Trend chart @@ -2458,7 +2554,7 @@
    Analytics
  • - + Waterfall chart @@ -2472,7 +2568,7 @@
    Analytics
  • - + Tooltips @@ -2491,7 +2587,7 @@
    Analytics
  • - + Metrics explorer @@ -2506,7 +2602,7 @@
    Analytics
  • - + Alerts @@ -2521,7 +2617,7 @@
    Analytics
  • - + Exporting data @@ -2542,7 +2638,7 @@
    Analytics
  • - + Dashboards @@ -2565,7 +2661,7 @@
    Analytics
  • - + Overview @@ -2580,7 +2676,7 @@
    Analytics
  • - + Dashboard filters @@ -2595,7 +2691,7 @@
    Analytics
  • - + Linked filters @@ -2610,7 +2706,7 @@
    Analytics
  • - + Dashboard interactivity @@ -2625,7 +2721,7 @@
    Analytics
  • - + Charts with multiple series @@ -2640,7 +2736,7 @@
    Analytics
  • - + Dashboard subscriptions @@ -2655,7 +2751,7 @@
    Analytics
  • - + Actions on dashboards @@ -2676,7 +2772,7 @@
    Analytics
  • - + Documents @@ -2699,7 +2795,7 @@
    Analytics
  • - + Overview @@ -2720,7 +2816,7 @@
    Analytics
  • - + AI @@ -2743,7 +2839,7 @@
    Analytics
  • - + Overview @@ -2758,7 +2854,7 @@
    Analytics
  • - + Metabot @@ -2773,7 +2869,7 @@
    Analytics
  • - + Metabot in Slack @@ -2788,7 +2884,7 @@
    Analytics
  • - + Settings @@ -2803,7 +2899,7 @@
    Analytics
  • - + MCP server @@ -2818,7 +2914,7 @@
    Analytics
  • - + Agent API @@ -2833,7 +2929,7 @@
    Analytics
  • - + Agent-driven development @@ -2848,7 +2944,7 @@
    Analytics
  • - + Customization @@ -2863,7 +2959,7 @@
    Analytics
  • - + System prompts @@ -2878,7 +2974,7 @@
    Analytics
  • - + Usage auditing @@ -2893,7 +2989,7 @@
    Analytics
  • - + Usage controls @@ -2908,7 +3004,7 @@
    Analytics
  • - + AI privacy @@ -2929,7 +3025,7 @@
    Analytics
  • - + Data modeling @@ -2952,7 +3048,7 @@
    Analytics
  • - + Models @@ -2967,7 +3063,7 @@
    Analytics
  • - + Model persistence @@ -2982,7 +3078,7 @@
    Analytics
  • - + Metrics @@ -2997,7 +3093,7 @@
    Analytics
  • - + Table metadata settings @@ -3012,7 +3108,7 @@
    Analytics
  • - + Data and semantic types @@ -3027,7 +3123,7 @@
    Analytics
  • - + Editable tables @@ -3042,7 +3138,7 @@
    Analytics
  • - + Formatting defaults @@ -3057,7 +3153,7 @@
    Analytics
  • - + Working with JSON @@ -3072,7 +3168,7 @@
    Analytics
  • - + Segments @@ -3108,7 +3204,7 @@
    Analytics
  • - + Overview @@ -3122,7 +3218,7 @@
    Analytics
  • - + Basic actions @@ -3136,7 +3232,7 @@
    Analytics
  • - + Custom actions @@ -3161,7 +3257,7 @@
    Analytics
  • - + Data Studio @@ -3184,7 +3280,7 @@
    Analytics
  • - + Overview @@ -3199,7 +3295,7 @@
    Analytics
  • - + Library @@ -3214,7 +3310,7 @@
    Analytics
  • - + Data structure @@ -3229,7 +3325,7 @@
    Analytics
  • - + Glossary @@ -3244,7 +3340,7 @@
    Analytics
  • - + Dependency graph @@ -3259,7 +3355,7 @@
    Analytics
  • - + Dependency diagnostics @@ -3295,7 +3391,7 @@
    Analytics
  • - + Overview @@ -3309,7 +3405,7 @@
    Analytics
  • - + Query transforms @@ -3323,7 +3419,7 @@
    Analytics
  • - + Python transforms @@ -3337,7 +3433,7 @@
    Analytics
  • - + Python runner @@ -3351,7 +3447,7 @@
    Analytics
  • - + Jobs and runs @@ -3365,7 +3461,7 @@
    Analytics
  • - + Transform inspector @@ -3379,7 +3475,7 @@
    Analytics
  • - + Add-ons @@ -3404,7 +3500,7 @@
    Analytics
  • - + Organization @@ -3427,7 +3523,7 @@
    Analytics
  • - + Basic exploration @@ -3442,7 +3538,7 @@
    Analytics
  • - + Keyboard shortcuts @@ -3457,7 +3553,7 @@
    Analytics
  • - + Collections @@ -3472,7 +3568,7 @@
    Analytics
  • - + Data reference @@ -3487,7 +3583,7 @@
    Analytics
  • - + Events and timelines @@ -3502,7 +3598,7 @@
    Analytics
  • - + X-rays @@ -3517,7 +3613,7 @@
    Analytics
  • - + Content verification @@ -3532,7 +3628,7 @@
    Analytics
  • - + History @@ -3547,7 +3643,7 @@
    Analytics
  • - + Delete and restore @@ -3574,7 +3670,7 @@
    Embedding
  • - + Overview @@ -3615,7 +3711,7 @@
    Embedding
  • - + Overview @@ -3630,7 +3726,7 @@
    Embedding
  • - + Components @@ -3645,7 +3741,7 @@
    Embedding
  • - + Filters and parameters @@ -3660,7 +3756,7 @@
    Embedding
  • - + Appearance @@ -3675,7 +3771,7 @@
    Embedding
  • - + Authentication @@ -3690,7 +3786,7 @@
    Embedding
  • - + Tenants @@ -3726,7 +3822,7 @@
    Embedding
  • - + Overview @@ -3740,7 +3836,7 @@
    Embedding
  • - + Quickstarts @@ -3771,35 +3867,35 @@
    Embedding
  • - + Questions
  • - + Dashboards
  • - + AI chat
  • - + Collections
  • - + Plugins
  • @@ -3831,21 +3927,21 @@
    Embedding
  • - + Provider config
  • - + Working with Next.js
  • - + Versioning
  • @@ -3860,7 +3956,7 @@
    Embedding
  • - + Upgrading @@ -3874,7 +3970,7 @@
    Embedding
  • - + API @@ -3893,7 +3989,7 @@
    Embedding
  • - + Guest embedding @@ -3908,7 +4004,7 @@
    Embedding
  • - + Translate embeds @@ -3952,7 +4048,7 @@
    Embedding
  • - + Overview @@ -3967,7 +4063,7 @@
    Embedding
  • - + Quickstart @@ -3982,7 +4078,7 @@
    Embedding
  • - + Full app UI components @@ -4003,7 +4099,7 @@
    Embedding
  • - + Public links and embeds @@ -4021,7 +4117,7 @@
    Embedding
  • - + Securing embeds @@ -4039,7 +4135,7 @@
    Embedding
  • - + AI agent resources @@ -4063,7 +4159,7 @@
    Administration
  • - + Installation @@ -4107,7 +4203,7 @@
    Administration
  • - + Installation overview @@ -4135,7 +4231,7 @@
    Administration
  • - + Running the JAR file @@ -4149,7 +4245,7 @@
    Administration
  • - + Running in Docker @@ -4163,7 +4259,7 @@
    Administration
  • - + Other installation options @@ -4182,7 +4278,7 @@
    Administration
  • - + Upgrading Metabase @@ -4197,7 +4293,7 @@
    Administration
  • - + Configuring the Metabase application database @@ -4212,7 +4308,7 @@
    Administration
  • - + Activating Enterprise features @@ -4227,7 +4323,7 @@
    Administration
  • - + Migrating to a production application database @@ -4248,7 +4344,7 @@
    Administration
  • - + Data sources @@ -4271,7 +4367,7 @@
    Administration
  • - + Adding and managing databases @@ -4307,7 +4403,7 @@
    Administration
  • - + Athena @@ -4321,7 +4417,7 @@
    Administration
  • - + Amazon RDS @@ -4335,7 +4431,7 @@
    Administration
  • - + BigQuery @@ -4349,7 +4445,7 @@
    Administration
  • - + ClickHouse @@ -4363,7 +4459,7 @@
    Administration
  • - + Databricks @@ -4377,7 +4473,7 @@
    Administration
  • - + Druid @@ -4391,7 +4487,7 @@
    Administration
  • - + MariaDB @@ -4405,7 +4501,7 @@
    Administration
  • - + MongoDB @@ -4419,7 +4515,7 @@
    Administration
  • - + MySQL @@ -4433,7 +4529,7 @@
    Administration
  • - + Oracle @@ -4447,7 +4543,7 @@
    Administration
  • - + PostgreSQL @@ -4461,7 +4557,7 @@
    Administration
  • - + Presto @@ -4475,7 +4571,7 @@
    Administration
  • - + Redshift @@ -4489,7 +4585,7 @@
    Administration
  • - + Snowflake @@ -4503,7 +4599,7 @@
    Administration
  • - + SQL Server @@ -4517,7 +4613,7 @@
    Administration
  • - + SQLite @@ -4531,7 +4627,7 @@
    Administration
  • - + Spark SQL @@ -4545,7 +4641,7 @@
    Administration
  • - + Starburst @@ -4559,7 +4655,7 @@
    Administration
  • - + Vertica @@ -4573,7 +4669,7 @@
    Administration
  • - + Community drivers @@ -4592,7 +4688,7 @@
    Administration
  • - + Database users, roles, and privileges @@ -4607,7 +4703,7 @@
    Administration
  • - + Writeable connection @@ -4622,7 +4718,7 @@
    Administration
  • - + Syncing and scanning databases @@ -4637,7 +4733,7 @@
    Administration
  • - + Encrypting your database connection @@ -4652,7 +4748,7 @@
    Administration
  • - + SSH tunneling @@ -4667,7 +4763,7 @@
    Administration
  • - + SSL certificate @@ -4682,7 +4778,7 @@
    Administration
  • - + Setting up data uploads @@ -4697,7 +4793,7 @@
    Administration
  • - + Uploading data @@ -4748,7 +4844,7 @@
    Administration
  • - + Configuration @@ -4771,7 +4867,7 @@
    Administration
  • - + Setting up Metabase @@ -4786,7 +4882,7 @@
    Administration
  • - + General settings @@ -4801,7 +4897,7 @@
    Administration
  • - + Set up email @@ -4816,7 +4912,7 @@
    Administration
  • - + Set up Slack @@ -4831,7 +4927,7 @@
    Administration
  • - + Webhooks @@ -4846,7 +4942,7 @@
    Administration
  • - + Environment variables @@ -4861,7 +4957,7 @@
    Administration
  • - + Configuration file @@ -4876,7 +4972,7 @@
    Administration
  • - + Config file template @@ -4891,7 +4987,7 @@
    Administration
  • - + Metabase log configuration @@ -4906,7 +5002,7 @@
    Administration
  • - + Timezones @@ -4921,7 +5017,7 @@
    Administration
  • - + Languages and localization @@ -4936,7 +5032,7 @@
    Administration
  • - + Appearance @@ -4951,7 +5047,7 @@
    Administration
  • - + Fonts @@ -4966,7 +5062,7 @@
    Administration
  • - + Caching query results @@ -4981,7 +5077,7 @@
    Administration
  • - + Custom maps @@ -4996,7 +5092,7 @@
    Administration
  • - + Customizing the Metabase Jetty webserver @@ -5017,7 +5113,7 @@
    Administration
  • - + Operations and monitoring @@ -5040,7 +5136,7 @@
    Administration
  • - + Backing up Metabase @@ -5055,7 +5151,7 @@
    Administration
  • - + Development instances @@ -5070,7 +5166,7 @@
    Administration
  • - + Monitoring your Metabase @@ -5085,7 +5181,7 @@
    Administration
  • - + Observability with Prometheus @@ -5100,7 +5196,7 @@
    Administration
  • - + Serialization @@ -5115,7 +5211,7 @@
    Administration
  • - + Remote Sync @@ -5130,7 +5226,7 @@
    Administration
  • - + Commands @@ -5145,7 +5241,7 @@
    Administration
  • - + Usage analytics @@ -5160,7 +5256,7 @@
    Administration
  • - + Security center @@ -5175,7 +5271,7 @@
    Administration
  • - + Admin tools @@ -5196,7 +5292,7 @@
    Administration
  • - + Authentication @@ -5219,7 +5315,7 @@
    Administration
  • - + Account settings @@ -5234,7 +5330,7 @@
    Administration
  • - + Password complexity @@ -5249,7 +5345,7 @@
    Administration
  • - + Session expiration @@ -5264,7 +5360,7 @@
    Administration
  • - + Google Sign-In @@ -5279,7 +5375,7 @@
    Administration
  • - + LDAP @@ -5294,7 +5390,7 @@
    Administration
  • - + User provisioning @@ -5309,7 +5405,7 @@
    Administration
  • - + API keys @@ -5324,7 +5420,7 @@
    Administration
  • - + Paid SSO options @@ -5345,7 +5441,7 @@
    Administration
  • - + JWT-based authentication @@ -5359,7 +5455,7 @@
    Administration
  • - + SAML-based authentication @@ -5373,7 +5469,7 @@
    Administration
  • - + SAML with Auth0 @@ -5387,7 +5483,7 @@
    Administration
  • - + SAML with Microsoft Entra ID @@ -5401,7 +5497,7 @@
    Administration
  • - + SAML with Google @@ -5415,7 +5511,7 @@
    Administration
  • - + SAML with Keycloak @@ -5429,7 +5525,7 @@
    Administration
  • - + SAML with Okta @@ -5443,7 +5539,7 @@
    Administration
  • - + OIDC-based authentication @@ -5457,7 +5553,7 @@
    Administration
  • - + OIDC with Keycloak @@ -5482,7 +5578,7 @@
    Administration
  • - + Permissions @@ -5505,7 +5601,7 @@
    Administration
  • - + Permissions introduction @@ -5520,7 +5616,7 @@
    Administration
  • - + Managing people and groups @@ -5535,7 +5631,7 @@
    Administration
  • - + Data permissions @@ -5550,7 +5646,7 @@
    Administration
  • - + Collection permissions @@ -5565,7 +5661,7 @@
    Administration
  • - + Application permissions @@ -5580,7 +5676,7 @@
    Administration
  • - + Row and column security @@ -5595,7 +5691,7 @@
    Administration
  • - + Row and column security examples @@ -5610,7 +5706,7 @@
    Administration
  • - + Database routing @@ -5625,7 +5721,7 @@
    Administration
  • - + Impersonation @@ -5640,7 +5736,7 @@
    Administration
  • - + Snippets folder permissions @@ -5655,7 +5751,7 @@
    Administration
  • - + Notification permissions @@ -5670,7 +5766,7 @@
    Administration
  • - + Configuring permissions for embedding @@ -5697,7 +5793,7 @@
    Other resources
  • - + API @@ -5923,7 +6019,7 @@
    Other resources
  • - + Troubleshooting @@ -5941,7 +6037,7 @@
    Other resources
  • - + Developer guide @@ -5977,7 +6073,7 @@
    Other resources
  • - + Accessibility @@ -5995,7 +6091,7 @@
    Other resources
  • - + Supported browsers @@ -6013,7 +6109,7 @@
    Other resources
  • - + Privacy @@ -6031,7 +6127,7 @@
    Other resources
  • - + About the anonymous usage data we collect @@ -6200,13 +6296,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/mbql-library-changelog.html b/_site/docs/v0.62/developers-guide/mbql-library-changelog.html index fe9a46b18d..fcee418f11 100644 --- a/_site/docs/v0.62/developers-guide/mbql-library-changelog.html +++ b/_site/docs/v0.62/developers-guide/mbql-library-changelog.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
  • - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/security-token-scanner.html b/_site/docs/v0.62/developers-guide/security-token-scanner.html index 54fe58652b..2db73b521d 100644 --- a/_site/docs/v0.62/developers-guide/security-token-scanner.html +++ b/_site/docs/v0.62/developers-guide/security-token-scanner.html @@ -6,10 +6,12 @@ - - + + + + + + +
    @@ -1885,7 +1981,7 @@
    Analytics
  • - + Queries and charts @@ -1908,7 +2004,7 @@
    Analytics
  • - + Introduction @@ -1944,7 +2040,7 @@
    Analytics
  • - + Editor @@ -1958,7 +2054,7 @@
    Analytics
  • - + Filtering @@ -1972,7 +2068,7 @@
    Analytics
  • - + Summarizing and grouping @@ -1986,7 +2082,7 @@
    Analytics
  • - + Joining data @@ -2000,7 +2096,7 @@
    Analytics
  • - + Custom expressions @@ -2014,7 +2110,7 @@
    Analytics
  • - + List of expressions @@ -2054,7 +2150,7 @@
    Analytics
  • - + SQL editor @@ -2068,7 +2164,7 @@
    Analytics
  • - + SQL parameters @@ -2082,7 +2178,7 @@
    Analytics
  • - + Field filters @@ -2096,7 +2192,7 @@
    Analytics
  • - + Basic SQL parameters @@ -2110,7 +2206,7 @@
    Analytics
  • - + Time grouping parameters @@ -2124,7 +2220,7 @@
    Analytics
  • - + Table variables @@ -2138,7 +2234,7 @@
    Analytics
  • - + Optional variables @@ -2152,7 +2248,7 @@
    Analytics
  • - + Filter widgets @@ -2166,7 +2262,7 @@
    Analytics
  • - + Referencing models and questions @@ -2180,7 +2276,7 @@
    Analytics
  • - + Snippets @@ -2194,7 +2290,7 @@
    Analytics
  • - + Snippet folder permissions @@ -2234,7 +2330,7 @@
    Analytics
  • - + Overview @@ -2248,7 +2344,7 @@
    Analytics
  • - + Box plot @@ -2262,7 +2358,7 @@
    Analytics
  • - + Combo chart @@ -2276,7 +2372,7 @@
    Analytics
  • - + Details chart @@ -2290,7 +2386,7 @@
    Analytics
  • - + Funnel chart @@ -2304,7 +2400,7 @@
    Analytics
  • - + Gauge chart @@ -2318,7 +2414,7 @@
    Analytics
  • - + Line, bar, and area charts @@ -2332,7 +2428,7 @@
    Analytics
  • - + Maps @@ -2346,7 +2442,7 @@
    Analytics
  • - + Number chart @@ -2360,7 +2456,7 @@
    Analytics
  • - + Pie and sunburst charts @@ -2374,7 +2470,7 @@
    Analytics
  • - + Pivot tables @@ -2388,7 +2484,7 @@
    Analytics
  • - + Progress bar @@ -2402,7 +2498,7 @@
    Analytics
  • - + Sankey chart @@ -2416,7 +2512,7 @@
    Analytics
  • - + Scatterplot @@ -2430,7 +2526,7 @@
    Analytics
  • - + Table @@ -2444,7 +2540,7 @@
    Analytics
  • - + Trend chart @@ -2458,7 +2554,7 @@
    Analytics
  • - + Waterfall chart @@ -2472,7 +2568,7 @@
    Analytics
  • - + Tooltips @@ -2491,7 +2587,7 @@
    Analytics
  • - + Metrics explorer @@ -2506,7 +2602,7 @@
    Analytics
  • - + Alerts @@ -2521,7 +2617,7 @@
    Analytics
  • - + Exporting data @@ -2542,7 +2638,7 @@
    Analytics
  • - + Dashboards @@ -2565,7 +2661,7 @@
    Analytics
  • - + Overview @@ -2580,7 +2676,7 @@
    Analytics
  • - + Dashboard filters @@ -2595,7 +2691,7 @@
    Analytics
  • - + Linked filters @@ -2610,7 +2706,7 @@
    Analytics
  • - + Dashboard interactivity @@ -2625,7 +2721,7 @@
    Analytics
  • - + Charts with multiple series @@ -2640,7 +2736,7 @@
    Analytics
  • - + Dashboard subscriptions @@ -2655,7 +2751,7 @@
    Analytics
  • - + Actions on dashboards @@ -2676,7 +2772,7 @@
    Analytics
  • - + Documents @@ -2699,7 +2795,7 @@
    Analytics
  • - + Overview @@ -2720,7 +2816,7 @@
    Analytics
  • - + AI @@ -2743,7 +2839,7 @@
    Analytics
  • - + Overview @@ -2758,7 +2854,7 @@
    Analytics
  • - + Metabot @@ -2773,7 +2869,7 @@
    Analytics
  • - + Metabot in Slack @@ -2788,7 +2884,7 @@
    Analytics
  • - + Settings @@ -2803,7 +2899,7 @@
    Analytics
  • - + MCP server @@ -2818,7 +2914,7 @@
    Analytics
  • - + Agent API @@ -2833,7 +2929,7 @@
    Analytics
  • - + Agent-driven development @@ -2848,7 +2944,7 @@
    Analytics
  • - + Customization @@ -2863,7 +2959,7 @@
    Analytics
  • - + System prompts @@ -2878,7 +2974,7 @@
    Analytics
  • - + Usage auditing @@ -2893,7 +2989,7 @@
    Analytics
  • - + Usage controls @@ -2908,7 +3004,7 @@
    Analytics
  • - + AI privacy @@ -2929,7 +3025,7 @@
    Analytics
  • - + Data modeling @@ -2952,7 +3048,7 @@
    Analytics
  • - + Models @@ -2967,7 +3063,7 @@
    Analytics
  • - + Model persistence @@ -2982,7 +3078,7 @@
    Analytics
  • - + Metrics @@ -2997,7 +3093,7 @@
    Analytics
  • - + Table metadata settings @@ -3012,7 +3108,7 @@
    Analytics
  • - + Data and semantic types @@ -3027,7 +3123,7 @@
    Analytics
  • - + Editable tables @@ -3042,7 +3138,7 @@
    Analytics
  • - + Formatting defaults @@ -3057,7 +3153,7 @@
    Analytics
  • - + Working with JSON @@ -3072,7 +3168,7 @@
    Analytics
  • - + Segments @@ -3108,7 +3204,7 @@
    Analytics
  • - + Overview @@ -3122,7 +3218,7 @@
    Analytics
  • - + Basic actions @@ -3136,7 +3232,7 @@
    Analytics
  • - + Custom actions @@ -3161,7 +3257,7 @@
    Analytics
  • - + Data Studio @@ -3184,7 +3280,7 @@
    Analytics
  • - + Overview @@ -3199,7 +3295,7 @@
    Analytics
  • - + Library @@ -3214,7 +3310,7 @@
    Analytics
  • - + Data structure @@ -3229,7 +3325,7 @@
    Analytics
  • - + Glossary @@ -3244,7 +3340,7 @@
    Analytics
  • - + Dependency graph @@ -3259,7 +3355,7 @@
    Analytics
  • - + Dependency diagnostics @@ -3295,7 +3391,7 @@
    Analytics
  • - + Overview @@ -3309,7 +3405,7 @@
    Analytics
  • - + Query transforms @@ -3323,7 +3419,7 @@
    Analytics
  • - + Python transforms @@ -3337,7 +3433,7 @@
    Analytics
  • - + Python runner @@ -3351,7 +3447,7 @@
    Analytics
  • - + Jobs and runs @@ -3365,7 +3461,7 @@
    Analytics
  • - + Transform inspector @@ -3379,7 +3475,7 @@
    Analytics
  • - + Add-ons @@ -3404,7 +3500,7 @@
    Analytics
  • - + Organization @@ -3427,7 +3523,7 @@
    Analytics
  • - + Basic exploration @@ -3442,7 +3538,7 @@
    Analytics
  • - + Keyboard shortcuts @@ -3457,7 +3553,7 @@
    Analytics
  • - + Collections @@ -3472,7 +3568,7 @@
    Analytics
  • - + Data reference @@ -3487,7 +3583,7 @@
    Analytics
  • - + Events and timelines @@ -3502,7 +3598,7 @@
    Analytics
  • - + X-rays @@ -3517,7 +3613,7 @@
    Analytics
  • - + Content verification @@ -3532,7 +3628,7 @@
    Analytics
  • - + History @@ -3547,7 +3643,7 @@
    Analytics
  • - + Delete and restore @@ -3574,7 +3670,7 @@
    Embedding
  • - + Overview @@ -3615,7 +3711,7 @@
    Embedding
  • - + Overview @@ -3630,7 +3726,7 @@
    Embedding
  • - + Components @@ -3645,7 +3741,7 @@
    Embedding
  • - + Filters and parameters @@ -3660,7 +3756,7 @@
    Embedding
  • - + Appearance @@ -3675,7 +3771,7 @@
    Embedding
  • - + Authentication @@ -3690,7 +3786,7 @@
    Embedding
  • - + Tenants @@ -3726,7 +3822,7 @@
    Embedding
  • - + Overview @@ -3740,7 +3836,7 @@
    Embedding
  • - + Quickstarts @@ -3771,35 +3867,35 @@
    Embedding
  • - + Questions
  • - + Dashboards
  • - + AI chat
  • - + Collections
  • - + Plugins
  • @@ -3831,21 +3927,21 @@
    Embedding
  • - + Provider config
  • - + Working with Next.js
  • - + Versioning
  • @@ -3860,7 +3956,7 @@
    Embedding
  • - + Upgrading @@ -3874,7 +3970,7 @@
    Embedding
  • - + API @@ -3893,7 +3989,7 @@
    Embedding
  • - + Guest embedding @@ -3908,7 +4004,7 @@
    Embedding
  • - + Translate embeds @@ -3952,7 +4048,7 @@
    Embedding
  • - + Overview @@ -3967,7 +4063,7 @@
    Embedding
  • - + Quickstart @@ -3982,7 +4078,7 @@
    Embedding
  • - + Full app UI components @@ -4003,7 +4099,7 @@
    Embedding
  • - + Public links and embeds @@ -4021,7 +4117,7 @@
    Embedding
  • - + Securing embeds @@ -4039,7 +4135,7 @@
    Embedding
  • - + AI agent resources @@ -4063,7 +4159,7 @@
    Administration
  • - + Installation @@ -4107,7 +4203,7 @@
    Administration
  • - + Installation overview @@ -4135,7 +4231,7 @@
    Administration
  • - + Running the JAR file @@ -4149,7 +4245,7 @@
    Administration
  • - + Running in Docker @@ -4163,7 +4259,7 @@
    Administration
  • - + Other installation options @@ -4182,7 +4278,7 @@
    Administration
  • - + Upgrading Metabase @@ -4197,7 +4293,7 @@
    Administration
  • - + Configuring the Metabase application database @@ -4212,7 +4308,7 @@
    Administration
  • - + Activating Enterprise features @@ -4227,7 +4323,7 @@
    Administration
  • - + Migrating to a production application database @@ -4248,7 +4344,7 @@
    Administration
  • - + Data sources @@ -4271,7 +4367,7 @@
    Administration
  • - + Adding and managing databases @@ -4307,7 +4403,7 @@
    Administration
  • - + Athena @@ -4321,7 +4417,7 @@
    Administration
  • - + Amazon RDS @@ -4335,7 +4431,7 @@
    Administration
  • - + BigQuery @@ -4349,7 +4445,7 @@
    Administration
  • - + ClickHouse @@ -4363,7 +4459,7 @@
    Administration
  • - + Databricks @@ -4377,7 +4473,7 @@
    Administration
  • - + Druid @@ -4391,7 +4487,7 @@
    Administration
  • - + MariaDB @@ -4405,7 +4501,7 @@
    Administration
  • - + MongoDB @@ -4419,7 +4515,7 @@
    Administration
  • - + MySQL @@ -4433,7 +4529,7 @@
    Administration
  • - + Oracle @@ -4447,7 +4543,7 @@
    Administration
  • - + PostgreSQL @@ -4461,7 +4557,7 @@
    Administration
  • - + Presto @@ -4475,7 +4571,7 @@
    Administration
  • - + Redshift @@ -4489,7 +4585,7 @@
    Administration
  • - + Snowflake @@ -4503,7 +4599,7 @@
    Administration
  • - + SQL Server @@ -4517,7 +4613,7 @@
    Administration
  • - + SQLite @@ -4531,7 +4627,7 @@
    Administration
  • - + Spark SQL @@ -4545,7 +4641,7 @@
    Administration
  • - + Starburst @@ -4559,7 +4655,7 @@
    Administration
  • - + Vertica @@ -4573,7 +4669,7 @@
    Administration
  • - + Community drivers @@ -4592,7 +4688,7 @@
    Administration
  • - + Database users, roles, and privileges @@ -4607,7 +4703,7 @@
    Administration
  • - + Writeable connection @@ -4622,7 +4718,7 @@
    Administration
  • - + Syncing and scanning databases @@ -4637,7 +4733,7 @@
    Administration
  • - + Encrypting your database connection @@ -4652,7 +4748,7 @@
    Administration
  • - + SSH tunneling @@ -4667,7 +4763,7 @@
    Administration
  • - + SSL certificate @@ -4682,7 +4778,7 @@
    Administration
  • - + Setting up data uploads @@ -4697,7 +4793,7 @@
    Administration
  • - + Uploading data @@ -4748,7 +4844,7 @@
    Administration
  • - + Configuration @@ -4771,7 +4867,7 @@
    Administration
  • - + Setting up Metabase @@ -4786,7 +4882,7 @@
    Administration
  • - + General settings @@ -4801,7 +4897,7 @@
    Administration
  • - + Set up email @@ -4816,7 +4912,7 @@
    Administration
  • - + Set up Slack @@ -4831,7 +4927,7 @@
    Administration
  • - + Webhooks @@ -4846,7 +4942,7 @@
    Administration
  • - + Environment variables @@ -4861,7 +4957,7 @@
    Administration
  • - + Configuration file @@ -4876,7 +4972,7 @@
    Administration
  • - + Config file template @@ -4891,7 +4987,7 @@
    Administration
  • - + Metabase log configuration @@ -4906,7 +5002,7 @@
    Administration
  • - + Timezones @@ -4921,7 +5017,7 @@
    Administration
  • - + Languages and localization @@ -4936,7 +5032,7 @@
    Administration
  • - + Appearance @@ -4951,7 +5047,7 @@
    Administration
  • - + Fonts @@ -4966,7 +5062,7 @@
    Administration
  • - + Caching query results @@ -4981,7 +5077,7 @@
    Administration
  • - + Custom maps @@ -4996,7 +5092,7 @@
    Administration
  • - + Customizing the Metabase Jetty webserver @@ -5017,7 +5113,7 @@
    Administration
  • - + Operations and monitoring @@ -5040,7 +5136,7 @@
    Administration
  • - + Backing up Metabase @@ -5055,7 +5151,7 @@
    Administration
  • - + Development instances @@ -5070,7 +5166,7 @@
    Administration
  • - + Monitoring your Metabase @@ -5085,7 +5181,7 @@
    Administration
  • - + Observability with Prometheus @@ -5100,7 +5196,7 @@
    Administration
  • - + Serialization @@ -5115,7 +5211,7 @@
    Administration
  • - + Remote Sync @@ -5130,7 +5226,7 @@
    Administration
  • - + Commands @@ -5145,7 +5241,7 @@
    Administration
  • - + Usage analytics @@ -5160,7 +5256,7 @@
    Administration
  • - + Security center @@ -5175,7 +5271,7 @@
    Administration
  • - + Admin tools @@ -5196,7 +5292,7 @@
    Administration
  • - + Authentication @@ -5219,7 +5315,7 @@
    Administration
  • - + Account settings @@ -5234,7 +5330,7 @@
    Administration
  • - + Password complexity @@ -5249,7 +5345,7 @@
    Administration
  • - + Session expiration @@ -5264,7 +5360,7 @@
    Administration
  • - + Google Sign-In @@ -5279,7 +5375,7 @@
    Administration
  • - + LDAP @@ -5294,7 +5390,7 @@
    Administration
  • - + User provisioning @@ -5309,7 +5405,7 @@
    Administration
  • - + API keys @@ -5324,7 +5420,7 @@
    Administration
  • - + Paid SSO options @@ -5345,7 +5441,7 @@
    Administration
  • - + JWT-based authentication @@ -5359,7 +5455,7 @@
    Administration
  • - + SAML-based authentication @@ -5373,7 +5469,7 @@
    Administration
  • - + SAML with Auth0 @@ -5387,7 +5483,7 @@
    Administration
  • - + SAML with Microsoft Entra ID @@ -5401,7 +5497,7 @@
    Administration
  • - + SAML with Google @@ -5415,7 +5511,7 @@
    Administration
  • - + SAML with Keycloak @@ -5429,7 +5525,7 @@
    Administration
  • - + SAML with Okta @@ -5443,7 +5539,7 @@
    Administration
  • - + OIDC-based authentication @@ -5457,7 +5553,7 @@
    Administration
  • - + OIDC with Keycloak @@ -5482,7 +5578,7 @@
    Administration
  • - + Permissions @@ -5505,7 +5601,7 @@
    Administration
  • - + Permissions introduction @@ -5520,7 +5616,7 @@
    Administration
  • - + Managing people and groups @@ -5535,7 +5631,7 @@
    Administration
  • - + Data permissions @@ -5550,7 +5646,7 @@
    Administration
  • - + Collection permissions @@ -5565,7 +5661,7 @@
    Administration
  • - + Application permissions @@ -5580,7 +5676,7 @@
    Administration
  • - + Row and column security @@ -5595,7 +5691,7 @@
    Administration
  • - + Row and column security examples @@ -5610,7 +5706,7 @@
    Administration
  • - + Database routing @@ -5625,7 +5721,7 @@
    Administration
  • - + Impersonation @@ -5640,7 +5736,7 @@
    Administration
  • - + Snippets folder permissions @@ -5655,7 +5751,7 @@
    Administration
  • - + Notification permissions @@ -5670,7 +5766,7 @@
    Administration
  • - + Configuring permissions for embedding @@ -5697,7 +5793,7 @@
    Other resources
  • - + API @@ -5923,7 +6019,7 @@
    Other resources
  • - + Troubleshooting @@ -5941,7 +6037,7 @@
    Other resources
  • - + Developer guide @@ -5977,7 +6073,7 @@
    Other resources
  • - + Accessibility @@ -5995,7 +6091,7 @@
    Other resources
  • - + Supported browsers @@ -6013,7 +6109,7 @@
    Other resources
  • - + Privacy @@ -6031,7 +6127,7 @@
    Other resources
  • - + About the anonymous usage data we collect @@ -6200,13 +6296,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/start.html b/_site/docs/v0.62/developers-guide/start.html index f2315ce887..d0003752b8 100644 --- a/_site/docs/v0.62/developers-guide/start.html +++ b/_site/docs/v0.62/developers-guide/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
  • - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/versioning.html b/_site/docs/v0.62/developers-guide/versioning.html index 26c36dfd4d..a55de0e3a5 100644 --- a/_site/docs/v0.62/developers-guide/versioning.html +++ b/_site/docs/v0.62/developers-guide/versioning.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/visual-studio-code.html b/_site/docs/v0.62/developers-guide/visual-studio-code.html index 425bb26abb..0db1c5408c 100644 --- a/_site/docs/v0.62/developers-guide/visual-studio-code.html +++ b/_site/docs/v0.62/developers-guide/visual-studio-code.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/developers-guide/visual-tests.html b/_site/docs/v0.62/developers-guide/visual-tests.html index b4c6dc4e3a..d4a9e02db9 100644 --- a/_site/docs/v0.62/developers-guide/visual-tests.html +++ b/_site/docs/v0.62/developers-guide/visual-tests.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/documents/introduction.html b/_site/docs/v0.62/documents/introduction.html index 8db3b635d8..37f8d62666 100644 --- a/_site/docs/v0.62/documents/introduction.html +++ b/_site/docs/v0.62/documents/introduction.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/documents/start.html b/_site/docs/v0.62/documents/start.html index 9df0470e33..e04af9c78b 100644 --- a/_site/docs/v0.62/documents/start.html +++ b/_site/docs/v0.62/documents/start.html @@ -230,6 +230,12 @@ + + + + + + @@ -1034,9 +1040,47 @@
    Learn
    - @@ -1816,9 +1860,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1832,6 +1915,17 @@
    Embedded Analytics
    + + +
    @@ -6214,13 +6308,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/ai-agent-resources.html b/_site/docs/v0.62/embedding/ai-agent-resources.html index a719a07680..1a5bda3e8e 100644 --- a/_site/docs/v0.62/embedding/ai-agent-resources.html +++ b/_site/docs/v0.62/embedding/ai-agent-resources.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/appearance.html b/_site/docs/v0.62/embedding/appearance.html index 2fe0da3c32..6ce2091822 100644 --- a/_site/docs/v0.62/embedding/appearance.html +++ b/_site/docs/v0.62/embedding/appearance.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/authentication.html b/_site/docs/v0.62/embedding/authentication.html index 544b3d2d75..25da0794b7 100644 --- a/_site/docs/v0.62/embedding/authentication.html +++ b/_site/docs/v0.62/embedding/authentication.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/components.html b/_site/docs/v0.62/embedding/components.html index d7c96a5819..87611874b4 100644 --- a/_site/docs/v0.62/embedding/components.html +++ b/_site/docs/v0.62/embedding/components.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/eajs/snippets/MetabaseBrowserAttributes.html b/_site/docs/v0.62/embedding/eajs/snippets/MetabaseBrowserAttributes.html index 2d730be0ab..e579f8d022 100644 --- a/_site/docs/v0.62/embedding/eajs/snippets/MetabaseBrowserAttributes.html +++ b/_site/docs/v0.62/embedding/eajs/snippets/MetabaseBrowserAttributes.html @@ -6,10 +6,12 @@ - - + + + + + + +
    @@ -1885,7 +1981,7 @@
    Analytics
  • - + Queries and charts @@ -1908,7 +2004,7 @@
    Analytics
  • - + Introduction @@ -1944,7 +2040,7 @@
    Analytics
  • - + Editor @@ -1958,7 +2054,7 @@
    Analytics
  • - + Filtering @@ -1972,7 +2068,7 @@
    Analytics
  • - + Summarizing and grouping @@ -1986,7 +2082,7 @@
    Analytics
  • - + Joining data @@ -2000,7 +2096,7 @@
    Analytics
  • - + Custom expressions @@ -2014,7 +2110,7 @@
    Analytics
  • - + List of expressions @@ -2054,7 +2150,7 @@
    Analytics
  • - + SQL editor @@ -2068,7 +2164,7 @@
    Analytics
  • - + SQL parameters @@ -2082,7 +2178,7 @@
    Analytics
  • - + Field filters @@ -2096,7 +2192,7 @@
    Analytics
  • - + Basic SQL parameters @@ -2110,7 +2206,7 @@
    Analytics
  • - + Time grouping parameters @@ -2124,7 +2220,7 @@
    Analytics
  • - + Table variables @@ -2138,7 +2234,7 @@
    Analytics
  • - + Optional variables @@ -2152,7 +2248,7 @@
    Analytics
  • - + Filter widgets @@ -2166,7 +2262,7 @@
    Analytics
  • - + Referencing models and questions @@ -2180,7 +2276,7 @@
    Analytics
  • - + Snippets @@ -2194,7 +2290,7 @@
    Analytics
  • - + Snippet folder permissions @@ -2234,7 +2330,7 @@
    Analytics
  • - + Overview @@ -2248,7 +2344,7 @@
    Analytics
  • - + Box plot @@ -2262,7 +2358,7 @@
    Analytics
  • - + Combo chart @@ -2276,7 +2372,7 @@
    Analytics
  • - + Details chart @@ -2290,7 +2386,7 @@
    Analytics
  • - + Funnel chart @@ -2304,7 +2400,7 @@
    Analytics
  • - + Gauge chart @@ -2318,7 +2414,7 @@
    Analytics
  • - + Line, bar, and area charts @@ -2332,7 +2428,7 @@
    Analytics
  • - + Maps @@ -2346,7 +2442,7 @@
    Analytics
  • - + Number chart @@ -2360,7 +2456,7 @@
    Analytics
  • - + Pie and sunburst charts @@ -2374,7 +2470,7 @@
    Analytics
  • - + Pivot tables @@ -2388,7 +2484,7 @@
    Analytics
  • - + Progress bar @@ -2402,7 +2498,7 @@
    Analytics
  • - + Sankey chart @@ -2416,7 +2512,7 @@
    Analytics
  • - + Scatterplot @@ -2430,7 +2526,7 @@
    Analytics
  • - + Table @@ -2444,7 +2540,7 @@
    Analytics
  • - + Trend chart @@ -2458,7 +2554,7 @@
    Analytics
  • - + Waterfall chart @@ -2472,7 +2568,7 @@
    Analytics
  • - + Tooltips @@ -2491,7 +2587,7 @@
    Analytics
  • - + Metrics explorer @@ -2506,7 +2602,7 @@
    Analytics
  • - + Alerts @@ -2521,7 +2617,7 @@
    Analytics
  • - + Exporting data @@ -2542,7 +2638,7 @@
    Analytics
  • - + Dashboards @@ -2565,7 +2661,7 @@
    Analytics
  • - + Overview @@ -2580,7 +2676,7 @@
    Analytics
  • - + Dashboard filters @@ -2595,7 +2691,7 @@
    Analytics
  • - + Linked filters @@ -2610,7 +2706,7 @@
    Analytics
  • - + Dashboard interactivity @@ -2625,7 +2721,7 @@
    Analytics
  • - + Charts with multiple series @@ -2640,7 +2736,7 @@
    Analytics
  • - + Dashboard subscriptions @@ -2655,7 +2751,7 @@
    Analytics
  • - + Actions on dashboards @@ -2676,7 +2772,7 @@
    Analytics
  • - + Documents @@ -2699,7 +2795,7 @@
    Analytics
  • - + Overview @@ -2720,7 +2816,7 @@
    Analytics
  • - + AI @@ -2743,7 +2839,7 @@
    Analytics
  • - + Overview @@ -2758,7 +2854,7 @@
    Analytics
  • - + Metabot @@ -2773,7 +2869,7 @@
    Analytics
  • - + Metabot in Slack @@ -2788,7 +2884,7 @@
    Analytics
  • - + Settings @@ -2803,7 +2899,7 @@
    Analytics
  • - + MCP server @@ -2818,7 +2914,7 @@
    Analytics
  • - + Agent API @@ -2833,7 +2929,7 @@
    Analytics
  • - + Agent-driven development @@ -2848,7 +2944,7 @@
    Analytics
  • - + Customization @@ -2863,7 +2959,7 @@
    Analytics
  • - + System prompts @@ -2878,7 +2974,7 @@
    Analytics
  • - + Usage auditing @@ -2893,7 +2989,7 @@
    Analytics
  • - + Usage controls @@ -2908,7 +3004,7 @@
    Analytics
  • - + AI privacy @@ -2929,7 +3025,7 @@
    Analytics
  • - + Data modeling @@ -2952,7 +3048,7 @@
    Analytics
  • - + Models @@ -2967,7 +3063,7 @@
    Analytics
  • - + Model persistence @@ -2982,7 +3078,7 @@
    Analytics
  • - + Metrics @@ -2997,7 +3093,7 @@
    Analytics
  • - + Table metadata settings @@ -3012,7 +3108,7 @@
    Analytics
  • - + Data and semantic types @@ -3027,7 +3123,7 @@
    Analytics
  • - + Editable tables @@ -3042,7 +3138,7 @@
    Analytics
  • - + Formatting defaults @@ -3057,7 +3153,7 @@
    Analytics
  • - + Working with JSON @@ -3072,7 +3168,7 @@
    Analytics
  • - + Segments @@ -3108,7 +3204,7 @@
    Analytics
  • - + Overview @@ -3122,7 +3218,7 @@
    Analytics
  • - + Basic actions @@ -3136,7 +3232,7 @@
    Analytics
  • - + Custom actions @@ -3161,7 +3257,7 @@
    Analytics
  • - + Data Studio @@ -3184,7 +3280,7 @@
    Analytics
  • - + Overview @@ -3199,7 +3295,7 @@
    Analytics
  • - + Library @@ -3214,7 +3310,7 @@
    Analytics
  • - + Data structure @@ -3229,7 +3325,7 @@
    Analytics
  • - + Glossary @@ -3244,7 +3340,7 @@
    Analytics
  • - + Dependency graph @@ -3259,7 +3355,7 @@
    Analytics
  • - + Dependency diagnostics @@ -3295,7 +3391,7 @@
    Analytics
  • - + Overview @@ -3309,7 +3405,7 @@
    Analytics
  • - + Query transforms @@ -3323,7 +3419,7 @@
    Analytics
  • - + Python transforms @@ -3337,7 +3433,7 @@
    Analytics
  • - + Python runner @@ -3351,7 +3447,7 @@
    Analytics
  • - + Jobs and runs @@ -3365,7 +3461,7 @@
    Analytics
  • - + Transform inspector @@ -3379,7 +3475,7 @@
    Analytics
  • - + Add-ons @@ -3404,7 +3500,7 @@
    Analytics
  • - + Organization @@ -3427,7 +3523,7 @@
    Analytics
  • - + Basic exploration @@ -3442,7 +3538,7 @@
    Analytics
  • - + Keyboard shortcuts @@ -3457,7 +3553,7 @@
    Analytics
  • - + Collections @@ -3472,7 +3568,7 @@
    Analytics
  • - + Data reference @@ -3487,7 +3583,7 @@
    Analytics
  • - + Events and timelines @@ -3502,7 +3598,7 @@
    Analytics
  • - + X-rays @@ -3517,7 +3613,7 @@
    Analytics
  • - + Content verification @@ -3532,7 +3628,7 @@
    Analytics
  • - + History @@ -3547,7 +3643,7 @@
    Analytics
  • - + Delete and restore @@ -3574,7 +3670,7 @@
    Embedding
  • - + Overview @@ -3615,7 +3711,7 @@
    Embedding
  • - + Overview @@ -3630,7 +3726,7 @@
    Embedding
  • - + Components @@ -3645,7 +3741,7 @@
    Embedding
  • - + Filters and parameters @@ -3660,7 +3756,7 @@
    Embedding
  • - + Appearance @@ -3675,7 +3771,7 @@
    Embedding
  • - + Authentication @@ -3690,7 +3786,7 @@
    Embedding
  • - + Tenants @@ -3726,7 +3822,7 @@
    Embedding
  • - + Overview @@ -3740,7 +3836,7 @@
    Embedding
  • - + Quickstarts @@ -3771,35 +3867,35 @@
    Embedding
  • - + Questions
  • - + Dashboards
  • - + AI chat
  • - + Collections
  • - + Plugins
  • @@ -3831,21 +3927,21 @@
    Embedding
  • - + Provider config
  • - + Working with Next.js
  • - + Versioning
  • @@ -3860,7 +3956,7 @@
    Embedding
  • - + Upgrading @@ -3874,7 +3970,7 @@
    Embedding
  • - + API @@ -3893,7 +3989,7 @@
    Embedding
  • - + Guest embedding @@ -3908,7 +4004,7 @@
    Embedding
  • - + Translate embeds @@ -3952,7 +4048,7 @@
    Embedding
  • - + Overview @@ -3967,7 +4063,7 @@
    Embedding
  • - + Quickstart @@ -3982,7 +4078,7 @@
    Embedding
  • - + Full app UI components @@ -4003,7 +4099,7 @@
    Embedding
  • - + Public links and embeds @@ -4021,7 +4117,7 @@
    Embedding
  • - + Securing embeds @@ -4039,7 +4135,7 @@
    Embedding
  • - + AI agent resources @@ -4063,7 +4159,7 @@
    Administration
  • - + Installation @@ -4107,7 +4203,7 @@
    Administration
  • - + Installation overview @@ -4135,7 +4231,7 @@
    Administration
  • - + Running the JAR file @@ -4149,7 +4245,7 @@
    Administration
  • - + Running in Docker @@ -4163,7 +4259,7 @@
    Administration
  • - + Other installation options @@ -4182,7 +4278,7 @@
    Administration
  • - + Upgrading Metabase @@ -4197,7 +4293,7 @@
    Administration
  • - + Configuring the Metabase application database @@ -4212,7 +4308,7 @@
    Administration
  • - + Activating Enterprise features @@ -4227,7 +4323,7 @@
    Administration
  • - + Migrating to a production application database @@ -4248,7 +4344,7 @@
    Administration
  • - + Data sources @@ -4271,7 +4367,7 @@
    Administration
  • - + Adding and managing databases @@ -4307,7 +4403,7 @@
    Administration
  • - + Athena @@ -4321,7 +4417,7 @@
    Administration
  • - + Amazon RDS @@ -4335,7 +4431,7 @@
    Administration
  • - + BigQuery @@ -4349,7 +4445,7 @@
    Administration
  • - + ClickHouse @@ -4363,7 +4459,7 @@
    Administration
  • - + Databricks @@ -4377,7 +4473,7 @@
    Administration
  • - + Druid @@ -4391,7 +4487,7 @@
    Administration
  • - + MariaDB @@ -4405,7 +4501,7 @@
    Administration
  • - + MongoDB @@ -4419,7 +4515,7 @@
    Administration
  • - + MySQL @@ -4433,7 +4529,7 @@
    Administration
  • - + Oracle @@ -4447,7 +4543,7 @@
    Administration
  • - + PostgreSQL @@ -4461,7 +4557,7 @@
    Administration
  • - + Presto @@ -4475,7 +4571,7 @@
    Administration
  • - + Redshift @@ -4489,7 +4585,7 @@
    Administration
  • - + Snowflake @@ -4503,7 +4599,7 @@
    Administration
  • - + SQL Server @@ -4517,7 +4613,7 @@
    Administration
  • - + SQLite @@ -4531,7 +4627,7 @@
    Administration
  • - + Spark SQL @@ -4545,7 +4641,7 @@
    Administration
  • - + Starburst @@ -4559,7 +4655,7 @@
    Administration
  • - + Vertica @@ -4573,7 +4669,7 @@
    Administration
  • - + Community drivers @@ -4592,7 +4688,7 @@
    Administration
  • - + Database users, roles, and privileges @@ -4607,7 +4703,7 @@
    Administration
  • - + Writeable connection @@ -4622,7 +4718,7 @@
    Administration
  • - + Syncing and scanning databases @@ -4637,7 +4733,7 @@
    Administration
  • - + Encrypting your database connection @@ -4652,7 +4748,7 @@
    Administration
  • - + SSH tunneling @@ -4667,7 +4763,7 @@
    Administration
  • - + SSL certificate @@ -4682,7 +4778,7 @@
    Administration
  • - + Setting up data uploads @@ -4697,7 +4793,7 @@
    Administration
  • - + Uploading data @@ -4748,7 +4844,7 @@
    Administration
  • - + Configuration @@ -4771,7 +4867,7 @@
    Administration
  • - + Setting up Metabase @@ -4786,7 +4882,7 @@
    Administration
  • - + General settings @@ -4801,7 +4897,7 @@
    Administration
  • - + Set up email @@ -4816,7 +4912,7 @@
    Administration
  • - + Set up Slack @@ -4831,7 +4927,7 @@
    Administration
  • - + Webhooks @@ -4846,7 +4942,7 @@
    Administration
  • - + Environment variables @@ -4861,7 +4957,7 @@
    Administration
  • - + Configuration file @@ -4876,7 +4972,7 @@
    Administration
  • - + Config file template @@ -4891,7 +4987,7 @@
    Administration
  • - + Metabase log configuration @@ -4906,7 +5002,7 @@
    Administration
  • - + Timezones @@ -4921,7 +5017,7 @@
    Administration
  • - + Languages and localization @@ -4936,7 +5032,7 @@
    Administration
  • - + Appearance @@ -4951,7 +5047,7 @@
    Administration
  • - + Fonts @@ -4966,7 +5062,7 @@
    Administration
  • - + Caching query results @@ -4981,7 +5077,7 @@
    Administration
  • - + Custom maps @@ -4996,7 +5092,7 @@
    Administration
  • - + Customizing the Metabase Jetty webserver @@ -5017,7 +5113,7 @@
    Administration
  • - + Operations and monitoring @@ -5040,7 +5136,7 @@
    Administration
  • - + Backing up Metabase @@ -5055,7 +5151,7 @@
    Administration
  • - + Development instances @@ -5070,7 +5166,7 @@
    Administration
  • - + Monitoring your Metabase @@ -5085,7 +5181,7 @@
    Administration
  • - + Observability with Prometheus @@ -5100,7 +5196,7 @@
    Administration
  • - + Serialization @@ -5115,7 +5211,7 @@
    Administration
  • - + Remote Sync @@ -5130,7 +5226,7 @@
    Administration
  • - + Commands @@ -5145,7 +5241,7 @@
    Administration
  • - + Usage analytics @@ -5160,7 +5256,7 @@
    Administration
  • - + Security center @@ -5175,7 +5271,7 @@
    Administration
  • - + Admin tools @@ -5196,7 +5292,7 @@
    Administration
  • - + Authentication @@ -5219,7 +5315,7 @@
    Administration
  • - + Account settings @@ -5234,7 +5330,7 @@
    Administration
  • - + Password complexity @@ -5249,7 +5345,7 @@
    Administration
  • - + Session expiration @@ -5264,7 +5360,7 @@
    Administration
  • - + Google Sign-In @@ -5279,7 +5375,7 @@
    Administration
  • - + LDAP @@ -5294,7 +5390,7 @@
    Administration
  • - + User provisioning @@ -5309,7 +5405,7 @@
    Administration
  • - + API keys @@ -5324,7 +5420,7 @@
    Administration
  • - + Paid SSO options @@ -5345,7 +5441,7 @@
    Administration
  • - + JWT-based authentication @@ -5359,7 +5455,7 @@
    Administration
  • - + SAML-based authentication @@ -5373,7 +5469,7 @@
    Administration
  • - + SAML with Auth0 @@ -5387,7 +5483,7 @@
    Administration
  • - + SAML with Microsoft Entra ID @@ -5401,7 +5497,7 @@
    Administration
  • - + SAML with Google @@ -5415,7 +5511,7 @@
    Administration
  • - + SAML with Keycloak @@ -5429,7 +5525,7 @@
    Administration
  • - + SAML with Okta @@ -5443,7 +5539,7 @@
    Administration
  • - + OIDC-based authentication @@ -5457,7 +5553,7 @@
    Administration
  • - + OIDC with Keycloak @@ -5482,7 +5578,7 @@
    Administration
  • - + Permissions @@ -5505,7 +5601,7 @@
    Administration
  • - + Permissions introduction @@ -5520,7 +5616,7 @@
    Administration
  • - + Managing people and groups @@ -5535,7 +5631,7 @@
    Administration
  • - + Data permissions @@ -5550,7 +5646,7 @@
    Administration
  • - + Collection permissions @@ -5565,7 +5661,7 @@
    Administration
  • - + Application permissions @@ -5580,7 +5676,7 @@
    Administration
  • - + Row and column security @@ -5595,7 +5691,7 @@
    Administration
  • - + Row and column security examples @@ -5610,7 +5706,7 @@
    Administration
  • - + Database routing @@ -5625,7 +5721,7 @@
    Administration
  • - + Impersonation @@ -5640,7 +5736,7 @@
    Administration
  • - + Snippets folder permissions @@ -5655,7 +5751,7 @@
    Administration
  • - + Notification permissions @@ -5670,7 +5766,7 @@
    Administration
  • - + Configuring permissions for embedding @@ -5697,7 +5793,7 @@
    Other resources
  • - + API @@ -5923,7 +6019,7 @@
    Other resources
  • - + Troubleshooting @@ -5941,7 +6037,7 @@
    Other resources
  • - + Developer guide @@ -5977,7 +6073,7 @@
    Other resources
  • - + Accessibility @@ -5995,7 +6091,7 @@
    Other resources
  • - + Supported browsers @@ -6013,7 +6109,7 @@
    Other resources
  • - + Privacy @@ -6031,7 +6127,7 @@
    Other resources
  • - + About the anonymous usage data we collect @@ -6200,13 +6296,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/eajs/snippets/MetabaseDashboardAttributes.html b/_site/docs/v0.62/embedding/eajs/snippets/MetabaseDashboardAttributes.html index c985151275..ff12747087 100644 --- a/_site/docs/v0.62/embedding/eajs/snippets/MetabaseDashboardAttributes.html +++ b/_site/docs/v0.62/embedding/eajs/snippets/MetabaseDashboardAttributes.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
  • - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/eajs/snippets/MetabaseMetabotAttributes.html b/_site/docs/v0.62/embedding/eajs/snippets/MetabaseMetabotAttributes.html index c6d2d47e65..9344118b9d 100644 --- a/_site/docs/v0.62/embedding/eajs/snippets/MetabaseMetabotAttributes.html +++ b/_site/docs/v0.62/embedding/eajs/snippets/MetabaseMetabotAttributes.html @@ -6,10 +6,12 @@ - - + + + + + + +
    @@ -1885,7 +1981,7 @@
    Analytics
  • - + Queries and charts @@ -1908,7 +2004,7 @@
    Analytics
  • - + Introduction @@ -1944,7 +2040,7 @@
    Analytics
  • - + Editor @@ -1958,7 +2054,7 @@
    Analytics
  • - + Filtering @@ -1972,7 +2068,7 @@
    Analytics
  • - + Summarizing and grouping @@ -1986,7 +2082,7 @@
    Analytics
  • - + Joining data @@ -2000,7 +2096,7 @@
    Analytics
  • - + Custom expressions @@ -2014,7 +2110,7 @@
    Analytics
  • - + List of expressions @@ -2054,7 +2150,7 @@
    Analytics
  • - + SQL editor @@ -2068,7 +2164,7 @@
    Analytics
  • - + SQL parameters @@ -2082,7 +2178,7 @@
    Analytics
  • - + Field filters @@ -2096,7 +2192,7 @@
    Analytics
  • - + Basic SQL parameters @@ -2110,7 +2206,7 @@
    Analytics
  • - + Time grouping parameters @@ -2124,7 +2220,7 @@
    Analytics
  • - + Table variables @@ -2138,7 +2234,7 @@
    Analytics
  • - + Optional variables @@ -2152,7 +2248,7 @@
    Analytics
  • - + Filter widgets @@ -2166,7 +2262,7 @@
    Analytics
  • - + Referencing models and questions @@ -2180,7 +2276,7 @@
    Analytics
  • - + Snippets @@ -2194,7 +2290,7 @@
    Analytics
  • - + Snippet folder permissions @@ -2234,7 +2330,7 @@
    Analytics
  • - + Overview @@ -2248,7 +2344,7 @@
    Analytics
  • - + Box plot @@ -2262,7 +2358,7 @@
    Analytics
  • - + Combo chart @@ -2276,7 +2372,7 @@
    Analytics
  • - + Details chart @@ -2290,7 +2386,7 @@
    Analytics
  • - + Funnel chart @@ -2304,7 +2400,7 @@
    Analytics
  • - + Gauge chart @@ -2318,7 +2414,7 @@
    Analytics
  • - + Line, bar, and area charts @@ -2332,7 +2428,7 @@
    Analytics
  • - + Maps @@ -2346,7 +2442,7 @@
    Analytics
  • - + Number chart @@ -2360,7 +2456,7 @@
    Analytics
  • - + Pie and sunburst charts @@ -2374,7 +2470,7 @@
    Analytics
  • - + Pivot tables @@ -2388,7 +2484,7 @@
    Analytics
  • - + Progress bar @@ -2402,7 +2498,7 @@
    Analytics
  • - + Sankey chart @@ -2416,7 +2512,7 @@
    Analytics
  • - + Scatterplot @@ -2430,7 +2526,7 @@
    Analytics
  • - + Table @@ -2444,7 +2540,7 @@
    Analytics
  • - + Trend chart @@ -2458,7 +2554,7 @@
    Analytics
  • - + Waterfall chart @@ -2472,7 +2568,7 @@
    Analytics
  • - + Tooltips @@ -2491,7 +2587,7 @@
    Analytics
  • - + Metrics explorer @@ -2506,7 +2602,7 @@
    Analytics
  • - + Alerts @@ -2521,7 +2617,7 @@
    Analytics
  • - + Exporting data @@ -2542,7 +2638,7 @@
    Analytics
  • - + Dashboards @@ -2565,7 +2661,7 @@
    Analytics
  • - + Overview @@ -2580,7 +2676,7 @@
    Analytics
  • - + Dashboard filters @@ -2595,7 +2691,7 @@
    Analytics
  • - + Linked filters @@ -2610,7 +2706,7 @@
    Analytics
  • - + Dashboard interactivity @@ -2625,7 +2721,7 @@
    Analytics
  • - + Charts with multiple series @@ -2640,7 +2736,7 @@
    Analytics
  • - + Dashboard subscriptions @@ -2655,7 +2751,7 @@
    Analytics
  • - + Actions on dashboards @@ -2676,7 +2772,7 @@
    Analytics
  • - + Documents @@ -2699,7 +2795,7 @@
    Analytics
  • - + Overview @@ -2720,7 +2816,7 @@
    Analytics
  • - + AI @@ -2743,7 +2839,7 @@
    Analytics
  • - + Overview @@ -2758,7 +2854,7 @@
    Analytics
  • - + Metabot @@ -2773,7 +2869,7 @@
    Analytics
  • - + Metabot in Slack @@ -2788,7 +2884,7 @@
    Analytics
  • - + Settings @@ -2803,7 +2899,7 @@
    Analytics
  • - + MCP server @@ -2818,7 +2914,7 @@
    Analytics
  • - + Agent API @@ -2833,7 +2929,7 @@
    Analytics
  • - + Agent-driven development @@ -2848,7 +2944,7 @@
    Analytics
  • - + Customization @@ -2863,7 +2959,7 @@
    Analytics
  • - + System prompts @@ -2878,7 +2974,7 @@
    Analytics
  • - + Usage auditing @@ -2893,7 +2989,7 @@
    Analytics
  • - + Usage controls @@ -2908,7 +3004,7 @@
    Analytics
  • - + AI privacy @@ -2929,7 +3025,7 @@
    Analytics
  • - + Data modeling @@ -2952,7 +3048,7 @@
    Analytics
  • - + Models @@ -2967,7 +3063,7 @@
    Analytics
  • - + Model persistence @@ -2982,7 +3078,7 @@
    Analytics
  • - + Metrics @@ -2997,7 +3093,7 @@
    Analytics
  • - + Table metadata settings @@ -3012,7 +3108,7 @@
    Analytics
  • - + Data and semantic types @@ -3027,7 +3123,7 @@
    Analytics
  • - + Editable tables @@ -3042,7 +3138,7 @@
    Analytics
  • - + Formatting defaults @@ -3057,7 +3153,7 @@
    Analytics
  • - + Working with JSON @@ -3072,7 +3168,7 @@
    Analytics
  • - + Segments @@ -3108,7 +3204,7 @@
    Analytics
  • - + Overview @@ -3122,7 +3218,7 @@
    Analytics
  • - + Basic actions @@ -3136,7 +3232,7 @@
    Analytics
  • - + Custom actions @@ -3161,7 +3257,7 @@
    Analytics
  • - + Data Studio @@ -3184,7 +3280,7 @@
    Analytics
  • - + Overview @@ -3199,7 +3295,7 @@
    Analytics
  • - + Library @@ -3214,7 +3310,7 @@
    Analytics
  • - + Data structure @@ -3229,7 +3325,7 @@
    Analytics
  • - + Glossary @@ -3244,7 +3340,7 @@
    Analytics
  • - + Dependency graph @@ -3259,7 +3355,7 @@
    Analytics
  • - + Dependency diagnostics @@ -3295,7 +3391,7 @@
    Analytics
  • - + Overview @@ -3309,7 +3405,7 @@
    Analytics
  • - + Query transforms @@ -3323,7 +3419,7 @@
    Analytics
  • - + Python transforms @@ -3337,7 +3433,7 @@
    Analytics
  • - + Python runner @@ -3351,7 +3447,7 @@
    Analytics
  • - + Jobs and runs @@ -3365,7 +3461,7 @@
    Analytics
  • - + Transform inspector @@ -3379,7 +3475,7 @@
    Analytics
  • - + Add-ons @@ -3404,7 +3500,7 @@
    Analytics
  • - + Organization @@ -3427,7 +3523,7 @@
    Analytics
  • - + Basic exploration @@ -3442,7 +3538,7 @@
    Analytics
  • - + Keyboard shortcuts @@ -3457,7 +3553,7 @@
    Analytics
  • - + Collections @@ -3472,7 +3568,7 @@
    Analytics
  • - + Data reference @@ -3487,7 +3583,7 @@
    Analytics
  • - + Events and timelines @@ -3502,7 +3598,7 @@
    Analytics
  • - + X-rays @@ -3517,7 +3613,7 @@
    Analytics
  • - + Content verification @@ -3532,7 +3628,7 @@
    Analytics
  • - + History @@ -3547,7 +3643,7 @@
    Analytics
  • - + Delete and restore @@ -3574,7 +3670,7 @@
    Embedding
  • - + Overview @@ -3615,7 +3711,7 @@
    Embedding
  • - + Overview @@ -3630,7 +3726,7 @@
    Embedding
  • - + Components @@ -3645,7 +3741,7 @@
    Embedding
  • - + Filters and parameters @@ -3660,7 +3756,7 @@
    Embedding
  • - + Appearance @@ -3675,7 +3771,7 @@
    Embedding
  • - + Authentication @@ -3690,7 +3786,7 @@
    Embedding
  • - + Tenants @@ -3726,7 +3822,7 @@
    Embedding
  • - + Overview @@ -3740,7 +3836,7 @@
    Embedding
  • - + Quickstarts @@ -3771,35 +3867,35 @@
    Embedding
  • - + Questions
  • - + Dashboards
  • - + AI chat
  • - + Collections
  • - + Plugins
  • @@ -3831,21 +3927,21 @@
    Embedding
  • - + Provider config
  • - + Working with Next.js
  • - + Versioning
  • @@ -3860,7 +3956,7 @@
    Embedding
  • - + Upgrading @@ -3874,7 +3970,7 @@
    Embedding
  • - + API @@ -3893,7 +3989,7 @@
    Embedding
  • - + Guest embedding @@ -3908,7 +4004,7 @@
    Embedding
  • - + Translate embeds @@ -3952,7 +4048,7 @@
    Embedding
  • - + Overview @@ -3967,7 +4063,7 @@
    Embedding
  • - + Quickstart @@ -3982,7 +4078,7 @@
    Embedding
  • - + Full app UI components @@ -4003,7 +4099,7 @@
    Embedding
  • - + Public links and embeds @@ -4021,7 +4117,7 @@
    Embedding
  • - + Securing embeds @@ -4039,7 +4135,7 @@
    Embedding
  • - + AI agent resources @@ -4063,7 +4159,7 @@
    Administration
  • - + Installation @@ -4107,7 +4203,7 @@
    Administration
  • - + Installation overview @@ -4135,7 +4231,7 @@
    Administration
  • - + Running the JAR file @@ -4149,7 +4245,7 @@
    Administration
  • - + Running in Docker @@ -4163,7 +4259,7 @@
    Administration
  • - + Other installation options @@ -4182,7 +4278,7 @@
    Administration
  • - + Upgrading Metabase @@ -4197,7 +4293,7 @@
    Administration
  • - + Configuring the Metabase application database @@ -4212,7 +4308,7 @@
    Administration
  • - + Activating Enterprise features @@ -4227,7 +4323,7 @@
    Administration
  • - + Migrating to a production application database @@ -4248,7 +4344,7 @@
    Administration
  • - + Data sources @@ -4271,7 +4367,7 @@
    Administration
  • - + Adding and managing databases @@ -4307,7 +4403,7 @@
    Administration
  • - + Athena @@ -4321,7 +4417,7 @@
    Administration
  • - + Amazon RDS @@ -4335,7 +4431,7 @@
    Administration
  • - + BigQuery @@ -4349,7 +4445,7 @@
    Administration
  • - + ClickHouse @@ -4363,7 +4459,7 @@
    Administration
  • - + Databricks @@ -4377,7 +4473,7 @@
    Administration
  • - + Druid @@ -4391,7 +4487,7 @@
    Administration
  • - + MariaDB @@ -4405,7 +4501,7 @@
    Administration
  • - + MongoDB @@ -4419,7 +4515,7 @@
    Administration
  • - + MySQL @@ -4433,7 +4529,7 @@
    Administration
  • - + Oracle @@ -4447,7 +4543,7 @@
    Administration
  • - + PostgreSQL @@ -4461,7 +4557,7 @@
    Administration
  • - + Presto @@ -4475,7 +4571,7 @@
    Administration
  • - + Redshift @@ -4489,7 +4585,7 @@
    Administration
  • - + Snowflake @@ -4503,7 +4599,7 @@
    Administration
  • - + SQL Server @@ -4517,7 +4613,7 @@
    Administration
  • - + SQLite @@ -4531,7 +4627,7 @@
    Administration
  • - + Spark SQL @@ -4545,7 +4641,7 @@
    Administration
  • - + Starburst @@ -4559,7 +4655,7 @@
    Administration
  • - + Vertica @@ -4573,7 +4669,7 @@
    Administration
  • - + Community drivers @@ -4592,7 +4688,7 @@
    Administration
  • - + Database users, roles, and privileges @@ -4607,7 +4703,7 @@
    Administration
  • - + Writeable connection @@ -4622,7 +4718,7 @@
    Administration
  • - + Syncing and scanning databases @@ -4637,7 +4733,7 @@
    Administration
  • - + Encrypting your database connection @@ -4652,7 +4748,7 @@
    Administration
  • - + SSH tunneling @@ -4667,7 +4763,7 @@
    Administration
  • - + SSL certificate @@ -4682,7 +4778,7 @@
    Administration
  • - + Setting up data uploads @@ -4697,7 +4793,7 @@
    Administration
  • - + Uploading data @@ -4748,7 +4844,7 @@
    Administration
  • - + Configuration @@ -4771,7 +4867,7 @@
    Administration
  • - + Setting up Metabase @@ -4786,7 +4882,7 @@
    Administration
  • - + General settings @@ -4801,7 +4897,7 @@
    Administration
  • - + Set up email @@ -4816,7 +4912,7 @@
    Administration
  • - + Set up Slack @@ -4831,7 +4927,7 @@
    Administration
  • - + Webhooks @@ -4846,7 +4942,7 @@
    Administration
  • - + Environment variables @@ -4861,7 +4957,7 @@
    Administration
  • - + Configuration file @@ -4876,7 +4972,7 @@
    Administration
  • - + Config file template @@ -4891,7 +4987,7 @@
    Administration
  • - + Metabase log configuration @@ -4906,7 +5002,7 @@
    Administration
  • - + Timezones @@ -4921,7 +5017,7 @@
    Administration
  • - + Languages and localization @@ -4936,7 +5032,7 @@
    Administration
  • - + Appearance @@ -4951,7 +5047,7 @@
    Administration
  • - + Fonts @@ -4966,7 +5062,7 @@
    Administration
  • - + Caching query results @@ -4981,7 +5077,7 @@
    Administration
  • - + Custom maps @@ -4996,7 +5092,7 @@
    Administration
  • - + Customizing the Metabase Jetty webserver @@ -5017,7 +5113,7 @@
    Administration
  • - + Operations and monitoring @@ -5040,7 +5136,7 @@
    Administration
  • - + Backing up Metabase @@ -5055,7 +5151,7 @@
    Administration
  • - + Development instances @@ -5070,7 +5166,7 @@
    Administration
  • - + Monitoring your Metabase @@ -5085,7 +5181,7 @@
    Administration
  • - + Observability with Prometheus @@ -5100,7 +5196,7 @@
    Administration
  • - + Serialization @@ -5115,7 +5211,7 @@
    Administration
  • - + Remote Sync @@ -5130,7 +5226,7 @@
    Administration
  • - + Commands @@ -5145,7 +5241,7 @@
    Administration
  • - + Usage analytics @@ -5160,7 +5256,7 @@
    Administration
  • - + Security center @@ -5175,7 +5271,7 @@
    Administration
  • - + Admin tools @@ -5196,7 +5292,7 @@
    Administration
  • - + Authentication @@ -5219,7 +5315,7 @@
    Administration
  • - + Account settings @@ -5234,7 +5330,7 @@
    Administration
  • - + Password complexity @@ -5249,7 +5345,7 @@
    Administration
  • - + Session expiration @@ -5264,7 +5360,7 @@
    Administration
  • - + Google Sign-In @@ -5279,7 +5375,7 @@
    Administration
  • - + LDAP @@ -5294,7 +5390,7 @@
    Administration
  • - + User provisioning @@ -5309,7 +5405,7 @@
    Administration
  • - + API keys @@ -5324,7 +5420,7 @@
    Administration
  • - + Paid SSO options @@ -5345,7 +5441,7 @@
    Administration
  • - + JWT-based authentication @@ -5359,7 +5455,7 @@
    Administration
  • - + SAML-based authentication @@ -5373,7 +5469,7 @@
    Administration
  • - + SAML with Auth0 @@ -5387,7 +5483,7 @@
    Administration
  • - + SAML with Microsoft Entra ID @@ -5401,7 +5497,7 @@
    Administration
  • - + SAML with Google @@ -5415,7 +5511,7 @@
    Administration
  • - + SAML with Keycloak @@ -5429,7 +5525,7 @@
    Administration
  • - + SAML with Okta @@ -5443,7 +5539,7 @@
    Administration
  • - + OIDC-based authentication @@ -5457,7 +5553,7 @@
    Administration
  • - + OIDC with Keycloak @@ -5482,7 +5578,7 @@
    Administration
  • - + Permissions @@ -5505,7 +5601,7 @@
    Administration
  • - + Permissions introduction @@ -5520,7 +5616,7 @@
    Administration
  • - + Managing people and groups @@ -5535,7 +5631,7 @@
    Administration
  • - + Data permissions @@ -5550,7 +5646,7 @@
    Administration
  • - + Collection permissions @@ -5565,7 +5661,7 @@
    Administration
  • - + Application permissions @@ -5580,7 +5676,7 @@
    Administration
  • - + Row and column security @@ -5595,7 +5691,7 @@
    Administration
  • - + Row and column security examples @@ -5610,7 +5706,7 @@
    Administration
  • - + Database routing @@ -5625,7 +5721,7 @@
    Administration
  • - + Impersonation @@ -5640,7 +5736,7 @@
    Administration
  • - + Snippets folder permissions @@ -5655,7 +5751,7 @@
    Administration
  • - + Notification permissions @@ -5670,7 +5766,7 @@
    Administration
  • - + Configuring permissions for embedding @@ -5697,7 +5793,7 @@
    Other resources
  • - + API @@ -5923,7 +6019,7 @@
    Other resources
  • - + Troubleshooting @@ -5941,7 +6037,7 @@
    Other resources
  • - + Developer guide @@ -5977,7 +6073,7 @@
    Other resources
  • - + Accessibility @@ -5995,7 +6091,7 @@
    Other resources
  • - + Supported browsers @@ -6013,7 +6109,7 @@
    Other resources
  • - + Privacy @@ -6031,7 +6127,7 @@
    Other resources
  • - + About the anonymous usage data we collect @@ -6200,13 +6296,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/eajs/snippets/MetabaseQuestionAttributes.html b/_site/docs/v0.62/embedding/eajs/snippets/MetabaseQuestionAttributes.html index 01f7f26bdb..2e65fd396f 100644 --- a/_site/docs/v0.62/embedding/eajs/snippets/MetabaseQuestionAttributes.html +++ b/_site/docs/v0.62/embedding/eajs/snippets/MetabaseQuestionAttributes.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
  • - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/eajs/snippets/index.html b/_site/docs/v0.62/embedding/eajs/snippets/index.html index ba48b07eca..0d6d3ad0a6 100644 --- a/_site/docs/v0.62/embedding/eajs/snippets/index.html +++ b/_site/docs/v0.62/embedding/eajs/snippets/index.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/full-app-embedding-quick-start-guide.html b/_site/docs/v0.62/embedding/full-app-embedding-quick-start-guide.html index 433e942415..b898c9ec6d 100644 --- a/_site/docs/v0.62/embedding/full-app-embedding-quick-start-guide.html +++ b/_site/docs/v0.62/embedding/full-app-embedding-quick-start-guide.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/full-app-embedding.html b/_site/docs/v0.62/embedding/full-app-embedding.html index c71c3c4e4f..31ca3985c8 100644 --- a/_site/docs/v0.62/embedding/full-app-embedding.html +++ b/_site/docs/v0.62/embedding/full-app-embedding.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/full-app-ui-components.html b/_site/docs/v0.62/embedding/full-app-ui-components.html index 3173551ad0..e52dfbc7ba 100644 --- a/_site/docs/v0.62/embedding/full-app-ui-components.html +++ b/_site/docs/v0.62/embedding/full-app-ui-components.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/guest-embedding.html b/_site/docs/v0.62/embedding/guest-embedding.html index addeb07bc2..19fd5520a7 100644 --- a/_site/docs/v0.62/embedding/guest-embedding.html +++ b/_site/docs/v0.62/embedding/guest-embedding.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/introduction.html b/_site/docs/v0.62/embedding/introduction.html index 933d3c07d1..801edbdc53 100644 --- a/_site/docs/v0.62/embedding/introduction.html +++ b/_site/docs/v0.62/embedding/introduction.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/modular-embedding.html b/_site/docs/v0.62/embedding/modular-embedding.html index fcb200e739..d378c2031b 100644 --- a/_site/docs/v0.62/embedding/modular-embedding.html +++ b/_site/docs/v0.62/embedding/modular-embedding.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/parameters.html b/_site/docs/v0.62/embedding/parameters.html index 10774e0b70..2ddeeca188 100644 --- a/_site/docs/v0.62/embedding/parameters.html +++ b/_site/docs/v0.62/embedding/parameters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    @@ -6439,6 +6526,7 @@

    Dashboard parameter change payload
    type ParameterChangeSource = "initial-state" | "manual-change" | "auto-change";
    @@ -6490,6 +6578,7 @@ 

    SQL question parameter change pay title: SqlParameterChangeSource source_url: ‘https://github.com/metabase/metabase/blob/master/docs/embedding/sdk/api/snippets/SqlParameterChangeSource.md’ layout: new-docs +latest: true —

    type SqlParameterChangeSource =
    diff --git a/_site/docs/v0.62/embedding/public-links.html b/_site/docs/v0.62/embedding/public-links.html
    index ed7b1acedb..d7ba66ca19 100644
    --- a/_site/docs/v0.62/embedding/public-links.html
    +++ b/_site/docs/v0.62/embedding/public-links.html
    @@ -216,6 +216,12 @@
     
       
     
    +  
    +
    +  
    +
    +  
    +
       
     
       
    @@ -1020,9 +1026,47 @@ 
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics

    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/ai-chat.html b/_site/docs/v0.62/embedding/sdk/ai-chat.html index 5066e071cf..e8ad575a73 100644 --- a/_site/docs/v0.62/embedding/sdk/ai-chat.html +++ b/_site/docs/v0.62/embedding/sdk/ai-chat.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics

    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/collections.html b/_site/docs/v0.62/embedding/sdk/collections.html index 8fc1eaeaa7..79efe64be3 100644 --- a/_site/docs/v0.62/embedding/sdk/collections.html +++ b/_site/docs/v0.62/embedding/sdk/collections.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/config.html b/_site/docs/v0.62/embedding/sdk/config.html index 397aab6007..6aa37ee258 100644 --- a/_site/docs/v0.62/embedding/sdk/config.html +++ b/_site/docs/v0.62/embedding/sdk/config.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/dashboards.html b/_site/docs/v0.62/embedding/sdk/dashboards.html index 165ef2f40b..35c6488eb1 100644 --- a/_site/docs/v0.62/embedding/sdk/dashboards.html +++ b/_site/docs/v0.62/embedding/sdk/dashboards.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/introduction.html b/_site/docs/v0.62/embedding/sdk/introduction.html index 82a4bde660..a9251e408c 100644 --- a/_site/docs/v0.62/embedding/sdk/introduction.html +++ b/_site/docs/v0.62/embedding/sdk/introduction.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/next-js.html b/_site/docs/v0.62/embedding/sdk/next-js.html index a72ca3ad8b..760d00eabe 100644 --- a/_site/docs/v0.62/embedding/sdk/next-js.html +++ b/_site/docs/v0.62/embedding/sdk/next-js.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/plugins.html b/_site/docs/v0.62/embedding/sdk/plugins.html index 6201b0fe79..43f3fe1223 100644 --- a/_site/docs/v0.62/embedding/sdk/plugins.html +++ b/_site/docs/v0.62/embedding/sdk/plugins.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/questions.html b/_site/docs/v0.62/embedding/sdk/questions.html index 3674450f3c..2558afc007 100644 --- a/_site/docs/v0.62/embedding/sdk/questions.html +++ b/_site/docs/v0.62/embedding/sdk/questions.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/quickstart-cli.html b/_site/docs/v0.62/embedding/sdk/quickstart-cli.html index 886de78b19..aa0051f545 100644 --- a/_site/docs/v0.62/embedding/sdk/quickstart-cli.html +++ b/_site/docs/v0.62/embedding/sdk/quickstart-cli.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/quickstart-with-sample-app.html b/_site/docs/v0.62/embedding/sdk/quickstart-with-sample-app.html index 52e2948e61..f420e4d151 100644 --- a/_site/docs/v0.62/embedding/sdk/quickstart-with-sample-app.html +++ b/_site/docs/v0.62/embedding/sdk/quickstart-with-sample-app.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/quickstart.html b/_site/docs/v0.62/embedding/sdk/quickstart.html index 0aadd2fe7f..228cb96fcc 100644 --- a/_site/docs/v0.62/embedding/sdk/quickstart.html +++ b/_site/docs/v0.62/embedding/sdk/quickstart.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/upgrade.html b/_site/docs/v0.62/embedding/sdk/upgrade.html index 164d675ec6..1e7b2911e5 100644 --- a/_site/docs/v0.62/embedding/sdk/upgrade.html +++ b/_site/docs/v0.62/embedding/sdk/upgrade.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/sdk/version.html b/_site/docs/v0.62/embedding/sdk/version.html index d1597f9333..f55fbbb00a 100644 --- a/_site/docs/v0.62/embedding/sdk/version.html +++ b/_site/docs/v0.62/embedding/sdk/version.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/securing-embeds.html b/_site/docs/v0.62/embedding/securing-embeds.html index 240b8d42ca..fab096dae3 100644 --- a/_site/docs/v0.62/embedding/securing-embeds.html +++ b/_site/docs/v0.62/embedding/securing-embeds.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/start.html b/_site/docs/v0.62/embedding/start.html index 5ea9d3e572..294e9d8d1f 100644 --- a/_site/docs/v0.62/embedding/start.html +++ b/_site/docs/v0.62/embedding/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/static-embedding-parameters.html b/_site/docs/v0.62/embedding/static-embedding-parameters.html index caa99e80de..cd4390dc2c 100644 --- a/_site/docs/v0.62/embedding/static-embedding-parameters.html +++ b/_site/docs/v0.62/embedding/static-embedding-parameters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/static-embedding.html b/_site/docs/v0.62/embedding/static-embedding.html index db5b614243..e8136601dc 100644 --- a/_site/docs/v0.62/embedding/static-embedding.html +++ b/_site/docs/v0.62/embedding/static-embedding.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/tenants.html b/_site/docs/v0.62/embedding/tenants.html index 31b17eb47f..f98b4e0670 100644 --- a/_site/docs/v0.62/embedding/tenants.html +++ b/_site/docs/v0.62/embedding/tenants.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/embedding/translations.html b/_site/docs/v0.62/embedding/translations.html index b5a2f9391a..145ff2b76d 100644 --- a/_site/docs/v0.62/embedding/translations.html +++ b/_site/docs/v0.62/embedding/translations.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/collections.html b/_site/docs/v0.62/exploration-and-organization/collections.html index a4c991e7f8..144369277e 100644 --- a/_site/docs/v0.62/exploration-and-organization/collections.html +++ b/_site/docs/v0.62/exploration-and-organization/collections.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/content-verification.html b/_site/docs/v0.62/exploration-and-organization/content-verification.html index 73e4adc5ac..8a7b79db85 100644 --- a/_site/docs/v0.62/exploration-and-organization/content-verification.html +++ b/_site/docs/v0.62/exploration-and-organization/content-verification.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/data-model-reference.html b/_site/docs/v0.62/exploration-and-organization/data-model-reference.html index 394ee9ca7f..f5574708cb 100644 --- a/_site/docs/v0.62/exploration-and-organization/data-model-reference.html +++ b/_site/docs/v0.62/exploration-and-organization/data-model-reference.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/delete-and-restore.html b/_site/docs/v0.62/exploration-and-organization/delete-and-restore.html index 5f1eee8e00..4c72b2e2b8 100644 --- a/_site/docs/v0.62/exploration-and-organization/delete-and-restore.html +++ b/_site/docs/v0.62/exploration-and-organization/delete-and-restore.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/events-and-timelines.html b/_site/docs/v0.62/exploration-and-organization/events-and-timelines.html index 2120664e02..a69f7f9277 100644 --- a/_site/docs/v0.62/exploration-and-organization/events-and-timelines.html +++ b/_site/docs/v0.62/exploration-and-organization/events-and-timelines.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/exploration.html b/_site/docs/v0.62/exploration-and-organization/exploration.html index 307572f173..1e374e9051 100644 --- a/_site/docs/v0.62/exploration-and-organization/exploration.html +++ b/_site/docs/v0.62/exploration-and-organization/exploration.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/history.html b/_site/docs/v0.62/exploration-and-organization/history.html index e05f63fc7e..4cb881b04a 100644 --- a/_site/docs/v0.62/exploration-and-organization/history.html +++ b/_site/docs/v0.62/exploration-and-organization/history.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/keyboard-shortcuts.html b/_site/docs/v0.62/exploration-and-organization/keyboard-shortcuts.html index b2464791c3..5b9351ed6b 100644 --- a/_site/docs/v0.62/exploration-and-organization/keyboard-shortcuts.html +++ b/_site/docs/v0.62/exploration-and-organization/keyboard-shortcuts.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/start.html b/_site/docs/v0.62/exploration-and-organization/start.html index 8062aa7abc..6465a4e6f8 100644 --- a/_site/docs/v0.62/exploration-and-organization/start.html +++ b/_site/docs/v0.62/exploration-and-organization/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/uploads.html b/_site/docs/v0.62/exploration-and-organization/uploads.html index 358b6b799d..88cb685d26 100644 --- a/_site/docs/v0.62/exploration-and-organization/uploads.html +++ b/_site/docs/v0.62/exploration-and-organization/uploads.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/exploration-and-organization/x-rays.html b/_site/docs/v0.62/exploration-and-organization/x-rays.html index 5a13ebc892..fab5dc3459 100644 --- a/_site/docs/v0.62/exploration-and-organization/x-rays.html +++ b/_site/docs/v0.62/exploration-and-organization/x-rays.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/index.html b/_site/docs/v0.62/index.html index 0005966f95..ee13479f9a 100644 --- a/_site/docs/v0.62/index.html +++ b/_site/docs/v0.62/index.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6264,13 +6358,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/accessibility.html b/_site/docs/v0.62/installation-and-operation/accessibility.html index 94d8e8850c..a8cc099674 100644 --- a/_site/docs/v0.62/installation-and-operation/accessibility.html +++ b/_site/docs/v0.62/installation-and-operation/accessibility.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/activating-the-enterprise-edition.html b/_site/docs/v0.62/installation-and-operation/activating-the-enterprise-edition.html index d7704bc0a1..d276f7ec17 100644 --- a/_site/docs/v0.62/installation-and-operation/activating-the-enterprise-edition.html +++ b/_site/docs/v0.62/installation-and-operation/activating-the-enterprise-edition.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    @@ -6263,7 +6350,7 @@

    Back up your application database. -
  • Download the Enterprise Edition version that corresponds with your current Metabase version. So if you’re running the Docker image for v0.61.3, you should switch to the Docker image for v1.61.3. To see a list of available versions for both the Open Source and Enterprise Editions, check out Metabase releases.
  • +
  • Download the Enterprise Edition version that corresponds with your current Metabase version. So if you’re running the Docker image for v0.62.1, you should switch to the Docker image for v1.62.1. To see a list of available versions for both the Open Source and Enterprise Editions, check out Metabase releases.
  • Stop your current Metabase Open Source edition.
  • Swap in the Enterprise Edition Docker image or jar that you downloaded.
  • Start your Metabase like you normally would using the new Enterprise Edition image or jar. You don’t need to do anything with your application database (which you’ve backed up in step one, right?).
  • diff --git a/_site/docs/v0.62/installation-and-operation/backing-up-metabase-application-data.html b/_site/docs/v0.62/installation-and-operation/backing-up-metabase-application-data.html index add61f3f9a..cce9ab9c7b 100644 --- a/_site/docs/v0.62/installation-and-operation/backing-up-metabase-application-data.html +++ b/_site/docs/v0.62/installation-and-operation/backing-up-metabase-application-data.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@

    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/commands.html b/_site/docs/v0.62/installation-and-operation/commands.html index bacef8128d..7795e92185 100644 --- a/_site/docs/v0.62/installation-and-operation/commands.html +++ b/_site/docs/v0.62/installation-and-operation/commands.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/configuring-application-database.html b/_site/docs/v0.62/installation-and-operation/configuring-application-database.html index 48826c831e..4aed9fe215 100644 --- a/_site/docs/v0.62/installation-and-operation/configuring-application-database.html +++ b/_site/docs/v0.62/installation-and-operation/configuring-application-database.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/creating-RDS-database-on-AWS.html b/_site/docs/v0.62/installation-and-operation/creating-RDS-database-on-AWS.html index a602940910..fe7ab0612b 100644 --- a/_site/docs/v0.62/installation-and-operation/creating-RDS-database-on-AWS.html +++ b/_site/docs/v0.62/installation-and-operation/creating-RDS-database-on-AWS.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/development-instance.html b/_site/docs/v0.62/installation-and-operation/development-instance.html index c82caf15d8..2c032a4061 100644 --- a/_site/docs/v0.62/installation-and-operation/development-instance.html +++ b/_site/docs/v0.62/installation-and-operation/development-instance.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/information-collection.html b/_site/docs/v0.62/installation-and-operation/information-collection.html index 612b68a19f..22577ab598 100644 --- a/_site/docs/v0.62/installation-and-operation/information-collection.html +++ b/_site/docs/v0.62/installation-and-operation/information-collection.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/installing-metabase.html b/_site/docs/v0.62/installation-and-operation/installing-metabase.html index ce14949e98..9161910259 100644 --- a/_site/docs/v0.62/installation-and-operation/installing-metabase.html +++ b/_site/docs/v0.62/installation-and-operation/installing-metabase.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/metabase-cli.html b/_site/docs/v0.62/installation-and-operation/metabase-cli.html index 0c6761ed4a..cec43613c6 100644 --- a/_site/docs/v0.62/installation-and-operation/metabase-cli.html +++ b/_site/docs/v0.62/installation-and-operation/metabase-cli.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/migrating-from-h2.html b/_site/docs/v0.62/installation-and-operation/migrating-from-h2.html index 6e0a25b885..ad44007f6a 100644 --- a/_site/docs/v0.62/installation-and-operation/migrating-from-h2.html +++ b/_site/docs/v0.62/installation-and-operation/migrating-from-h2.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/monitoring-metabase.html b/_site/docs/v0.62/installation-and-operation/monitoring-metabase.html index 48e2a035a9..6278f5f2e5 100644 --- a/_site/docs/v0.62/installation-and-operation/monitoring-metabase.html +++ b/_site/docs/v0.62/installation-and-operation/monitoring-metabase.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/observability-with-prometheus.html b/_site/docs/v0.62/installation-and-operation/observability-with-prometheus.html index cb0ce9989a..0d150ea8f3 100644 --- a/_site/docs/v0.62/installation-and-operation/observability-with-prometheus.html +++ b/_site/docs/v0.62/installation-and-operation/observability-with-prometheus.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/privacy.html b/_site/docs/v0.62/installation-and-operation/privacy.html index 6cd763e13b..a682de69e8 100644 --- a/_site/docs/v0.62/installation-and-operation/privacy.html +++ b/_site/docs/v0.62/installation-and-operation/privacy.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/remote-sync.html b/_site/docs/v0.62/installation-and-operation/remote-sync.html index 1cf76d3b3a..bea29362b0 100644 --- a/_site/docs/v0.62/installation-and-operation/remote-sync.html +++ b/_site/docs/v0.62/installation-and-operation/remote-sync.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/running-metabase-as-service.html b/_site/docs/v0.62/installation-and-operation/running-metabase-as-service.html index d7ad4c9a20..d507812659 100644 --- a/_site/docs/v0.62/installation-and-operation/running-metabase-as-service.html +++ b/_site/docs/v0.62/installation-and-operation/running-metabase-as-service.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/running-metabase-on-azure.html b/_site/docs/v0.62/installation-and-operation/running-metabase-on-azure.html index 77e997ff83..4556b03c5e 100644 --- a/_site/docs/v0.62/installation-and-operation/running-metabase-on-azure.html +++ b/_site/docs/v0.62/installation-and-operation/running-metabase-on-azure.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/running-metabase-on-docker.html b/_site/docs/v0.62/installation-and-operation/running-metabase-on-docker.html index 2ba6c097f1..be34ff2100 100644 --- a/_site/docs/v0.62/installation-and-operation/running-metabase-on-docker.html +++ b/_site/docs/v0.62/installation-and-operation/running-metabase-on-docker.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/running-metabase-on-elastic-beanstalk.html b/_site/docs/v0.62/installation-and-operation/running-metabase-on-elastic-beanstalk.html index b283ab746c..e9813d912a 100644 --- a/_site/docs/v0.62/installation-and-operation/running-metabase-on-elastic-beanstalk.html +++ b/_site/docs/v0.62/installation-and-operation/running-metabase-on-elastic-beanstalk.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/running-metabase-on-podman.html b/_site/docs/v0.62/installation-and-operation/running-metabase-on-podman.html index 48741abf17..7e1e78dc11 100644 --- a/_site/docs/v0.62/installation-and-operation/running-metabase-on-podman.html +++ b/_site/docs/v0.62/installation-and-operation/running-metabase-on-podman.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/running-the-metabase-jar-file.html b/_site/docs/v0.62/installation-and-operation/running-the-metabase-jar-file.html index 23de0ca9f4..505b0b81a7 100644 --- a/_site/docs/v0.62/installation-and-operation/running-the-metabase-jar-file.html +++ b/_site/docs/v0.62/installation-and-operation/running-the-metabase-jar-file.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/security-center.html b/_site/docs/v0.62/installation-and-operation/security-center.html index 22f907708a..3db9d3209c 100644 --- a/_site/docs/v0.62/installation-and-operation/security-center.html +++ b/_site/docs/v0.62/installation-and-operation/security-center.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/serialization.html b/_site/docs/v0.62/installation-and-operation/serialization.html index 79af4a1ecb..61a9a7900e 100644 --- a/_site/docs/v0.62/installation-and-operation/serialization.html +++ b/_site/docs/v0.62/installation-and-operation/serialization.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/start.html b/_site/docs/v0.62/installation-and-operation/start.html index eff05be5fa..0bf7f2587a 100644 --- a/_site/docs/v0.62/installation-and-operation/start.html +++ b/_site/docs/v0.62/installation-and-operation/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/supported-browsers.html b/_site/docs/v0.62/installation-and-operation/supported-browsers.html index 0c5f238f9a..3fa1a219a2 100644 --- a/_site/docs/v0.62/installation-and-operation/supported-browsers.html +++ b/_site/docs/v0.62/installation-and-operation/supported-browsers.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/installation-and-operation/upgrading-metabase.html b/_site/docs/v0.62/installation-and-operation/upgrading-metabase.html index 578e5c84b1..0c2124827b 100644 --- a/_site/docs/v0.62/installation-and-operation/upgrading-metabase.html +++ b/_site/docs/v0.62/installation-and-operation/upgrading-metabase.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/account-settings.html b/_site/docs/v0.62/people-and-groups/account-settings.html index 6b11209590..62d00c0139 100644 --- a/_site/docs/v0.62/people-and-groups/account-settings.html +++ b/_site/docs/v0.62/people-and-groups/account-settings.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/api-keys.html b/_site/docs/v0.62/people-and-groups/api-keys.html index f0de1b8b19..07b28a298e 100644 --- a/_site/docs/v0.62/people-and-groups/api-keys.html +++ b/_site/docs/v0.62/people-and-groups/api-keys.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/authenticating-with-jwt.html b/_site/docs/v0.62/people-and-groups/authenticating-with-jwt.html index 972df98fb6..dd8f571825 100644 --- a/_site/docs/v0.62/people-and-groups/authenticating-with-jwt.html +++ b/_site/docs/v0.62/people-and-groups/authenticating-with-jwt.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/authenticating-with-oidc.html b/_site/docs/v0.62/people-and-groups/authenticating-with-oidc.html index 70d4e23ef0..753accabe6 100644 --- a/_site/docs/v0.62/people-and-groups/authenticating-with-oidc.html +++ b/_site/docs/v0.62/people-and-groups/authenticating-with-oidc.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/authenticating-with-saml.html b/_site/docs/v0.62/people-and-groups/authenticating-with-saml.html index edf43ea283..7048027c7a 100644 --- a/_site/docs/v0.62/people-and-groups/authenticating-with-saml.html +++ b/_site/docs/v0.62/people-and-groups/authenticating-with-saml.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/changing-password-complexity.html b/_site/docs/v0.62/people-and-groups/changing-password-complexity.html index f0f43459ed..df35d028e6 100644 --- a/_site/docs/v0.62/people-and-groups/changing-password-complexity.html +++ b/_site/docs/v0.62/people-and-groups/changing-password-complexity.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    @@ -6228,6 +6315,7 @@

    Password complexity

  • weak = no character constraints
  • normal = at least 1 digit
  • strong = minimum 8 characters w/ 2 lowercase, 2 uppercase, 1 digit, and 1 special character
  • +
  • strong-enough = minimum 15 characters
  • By default, Metabase also prevents users from setting passwords that are in a list of common passwords (like qwerty123 and diff --git a/_site/docs/v0.62/people-and-groups/changing-session-expiration.html b/_site/docs/v0.62/people-and-groups/changing-session-expiration.html index 8baace878d..198a16c82f 100644 --- a/_site/docs/v0.62/people-and-groups/changing-session-expiration.html +++ b/_site/docs/v0.62/people-and-groups/changing-session-expiration.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@

    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/google-sign-in.html b/_site/docs/v0.62/people-and-groups/google-sign-in.html index a112cf9252..168f4dbb1b 100644 --- a/_site/docs/v0.62/people-and-groups/google-sign-in.html +++ b/_site/docs/v0.62/people-and-groups/google-sign-in.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/ldap.html b/_site/docs/v0.62/people-and-groups/ldap.html index 767f863387..57279b28b5 100644 --- a/_site/docs/v0.62/people-and-groups/ldap.html +++ b/_site/docs/v0.62/people-and-groups/ldap.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/managing.html b/_site/docs/v0.62/people-and-groups/managing.html index 8c30542d10..1020c6fa5f 100644 --- a/_site/docs/v0.62/people-and-groups/managing.html +++ b/_site/docs/v0.62/people-and-groups/managing.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/oidc-keycloak.html b/_site/docs/v0.62/people-and-groups/oidc-keycloak.html index abfd79c27f..fb5cc2855e 100644 --- a/_site/docs/v0.62/people-and-groups/oidc-keycloak.html +++ b/_site/docs/v0.62/people-and-groups/oidc-keycloak.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/saml-auth0.html b/_site/docs/v0.62/people-and-groups/saml-auth0.html index c41d6417d4..33cd041680 100644 --- a/_site/docs/v0.62/people-and-groups/saml-auth0.html +++ b/_site/docs/v0.62/people-and-groups/saml-auth0.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/saml-azure.html b/_site/docs/v0.62/people-and-groups/saml-azure.html index 853cf28097..70ef2f524d 100644 --- a/_site/docs/v0.62/people-and-groups/saml-azure.html +++ b/_site/docs/v0.62/people-and-groups/saml-azure.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/saml-google.html b/_site/docs/v0.62/people-and-groups/saml-google.html index 8c95765307..933a134692 100644 --- a/_site/docs/v0.62/people-and-groups/saml-google.html +++ b/_site/docs/v0.62/people-and-groups/saml-google.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/saml-keycloak.html b/_site/docs/v0.62/people-and-groups/saml-keycloak.html index af75836ee1..6cb89be109 100644 --- a/_site/docs/v0.62/people-and-groups/saml-keycloak.html +++ b/_site/docs/v0.62/people-and-groups/saml-keycloak.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/saml-okta.html b/_site/docs/v0.62/people-and-groups/saml-okta.html index 3ebf7f47b5..7aa863271a 100644 --- a/_site/docs/v0.62/people-and-groups/saml-okta.html +++ b/_site/docs/v0.62/people-and-groups/saml-okta.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/start.html b/_site/docs/v0.62/people-and-groups/start.html index 5e77209322..6885ee092a 100644 --- a/_site/docs/v0.62/people-and-groups/start.html +++ b/_site/docs/v0.62/people-and-groups/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/people-and-groups/user-provisioning.html b/_site/docs/v0.62/people-and-groups/user-provisioning.html index 3d05208a27..a489b79318 100644 --- a/_site/docs/v0.62/people-and-groups/user-provisioning.html +++ b/_site/docs/v0.62/people-and-groups/user-provisioning.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/application.html b/_site/docs/v0.62/permissions/application.html index adc5e7b87c..963e5a69f1 100644 --- a/_site/docs/v0.62/permissions/application.html +++ b/_site/docs/v0.62/permissions/application.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/collections.html b/_site/docs/v0.62/permissions/collections.html index b552ca09f8..3b6f2112f5 100644 --- a/_site/docs/v0.62/permissions/collections.html +++ b/_site/docs/v0.62/permissions/collections.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/data.html b/_site/docs/v0.62/permissions/data.html index f13cf01584..eeb4595e98 100644 --- a/_site/docs/v0.62/permissions/data.html +++ b/_site/docs/v0.62/permissions/data.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/database-routing.html b/_site/docs/v0.62/permissions/database-routing.html index e5f5e620fe..ae85baeb3c 100644 --- a/_site/docs/v0.62/permissions/database-routing.html +++ b/_site/docs/v0.62/permissions/database-routing.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/embedding.html b/_site/docs/v0.62/permissions/embedding.html index 054da894b3..5d4f503cdc 100644 --- a/_site/docs/v0.62/permissions/embedding.html +++ b/_site/docs/v0.62/permissions/embedding.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/impersonation.html b/_site/docs/v0.62/permissions/impersonation.html index 072f577f47..3d5c0357c4 100644 --- a/_site/docs/v0.62/permissions/impersonation.html +++ b/_site/docs/v0.62/permissions/impersonation.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/introduction.html b/_site/docs/v0.62/permissions/introduction.html index a1a6037306..c3d1328ceb 100644 --- a/_site/docs/v0.62/permissions/introduction.html +++ b/_site/docs/v0.62/permissions/introduction.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/no-self-service-deprecation.html b/_site/docs/v0.62/permissions/no-self-service-deprecation.html index 1399f399cf..aef6a99ab2 100644 --- a/_site/docs/v0.62/permissions/no-self-service-deprecation.html +++ b/_site/docs/v0.62/permissions/no-self-service-deprecation.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/notifications.html b/_site/docs/v0.62/permissions/notifications.html index 341ecf66a5..05da047a5d 100644 --- a/_site/docs/v0.62/permissions/notifications.html +++ b/_site/docs/v0.62/permissions/notifications.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/row-and-column-security-examples.html b/_site/docs/v0.62/permissions/row-and-column-security-examples.html index d5bb9185ef..cd98da682d 100644 --- a/_site/docs/v0.62/permissions/row-and-column-security-examples.html +++ b/_site/docs/v0.62/permissions/row-and-column-security-examples.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/row-and-column-security.html b/_site/docs/v0.62/permissions/row-and-column-security.html index a5407db6d7..967766938a 100644 --- a/_site/docs/v0.62/permissions/row-and-column-security.html +++ b/_site/docs/v0.62/permissions/row-and-column-security.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/snippets.html b/_site/docs/v0.62/permissions/snippets.html index 7fed0ff9c0..022181a2d2 100644 --- a/_site/docs/v0.62/permissions/snippets.html +++ b/_site/docs/v0.62/permissions/snippets.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/permissions/start.html b/_site/docs/v0.62/permissions/start.html index 7e8a177572..fb10537a92 100644 --- a/_site/docs/v0.62/permissions/start.html +++ b/_site/docs/v0.62/permissions/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/alerts.html b/_site/docs/v0.62/questions/alerts.html index aabcd188ef..3b01fe0d2e 100644 --- a/_site/docs/v0.62/questions/alerts.html +++ b/_site/docs/v0.62/questions/alerts.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/exporting-results.html b/_site/docs/v0.62/questions/exporting-results.html index 3e05f6d01a..88463e1060 100644 --- a/_site/docs/v0.62/questions/exporting-results.html +++ b/_site/docs/v0.62/questions/exporting-results.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/introduction.html b/_site/docs/v0.62/questions/introduction.html index 5f5f9b3e4d..d69a2ba1be 100644 --- a/_site/docs/v0.62/questions/introduction.html +++ b/_site/docs/v0.62/questions/introduction.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/metrics-explorer.html b/_site/docs/v0.62/questions/metrics-explorer.html index f664c59dc8..90b5009d20 100644 --- a/_site/docs/v0.62/questions/metrics-explorer.html +++ b/_site/docs/v0.62/questions/metrics-explorer.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/basic-sql-parameters.html b/_site/docs/v0.62/questions/native-editor/basic-sql-parameters.html index 05f4ccfa94..368c583c8d 100644 --- a/_site/docs/v0.62/questions/native-editor/basic-sql-parameters.html +++ b/_site/docs/v0.62/questions/native-editor/basic-sql-parameters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/field-filters.html b/_site/docs/v0.62/questions/native-editor/field-filters.html index def9ecaf12..09ed7f7650 100644 --- a/_site/docs/v0.62/questions/native-editor/field-filters.html +++ b/_site/docs/v0.62/questions/native-editor/field-filters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/filter-widgets.html b/_site/docs/v0.62/questions/native-editor/filter-widgets.html index 3a834f5673..66a71595ae 100644 --- a/_site/docs/v0.62/questions/native-editor/filter-widgets.html +++ b/_site/docs/v0.62/questions/native-editor/filter-widgets.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    @@ -6226,6 +6313,8 @@

    How to cr

    Date fields will either have a simple date filter (for date variables) or a dynamic date picker (for field filters mapped to a date field).

    +

    ID parameters also support all three widget types (input box, search box, and dropdown list), so you can power an ID filter with a dropdown or search box instead of a plain input box.

    +

    If you want to change the default filter widget for a particular field, you’ll need to ask an admin to update that field in the Table Metadata and set the desired “Filtering on this field” option.

    For dropdown lists and search boxes, you can also customize values available in the list. See below.

    @@ -6276,12 +6365,12 @@

    Customizing valu
  • Metabase will pop up a modal where you can select Where the values should come from.
  • -

    You can choose:

    +

    You can choose between:

      -
    • From connected fields. If you selected the Field filter variable type, you’ll also have the option to use the connected field.
    • -
    • From another model or question. If you select this option, you’ll need to pick a model or question, then a field from that model or question that Metabase will use to supply the values for that dropdown or search box. For example, if you want the dropdown to list the different plans an account could be on, you could select an “Account” model you created, and select the field “Plan” to power that dropdown. The dropdown would then list all of the distinct plan options that appear in the “Plan” column in the Accounts model.
    • -
    • Custom list. Enter each item on a line. You can enter any string values you like.
    • +
    • From connected fields: If you selected the Field filter variable type, you’ll also have the option to use the connected field.
    • +
    • From another model or question: Pick a model or question (built with either the query builder or SQL), then set the Column to supply the values that Metabase should filter on. You can also set a Column to supply the labels to display friendly labels in the dropdown while still filtering on the underlying values. For example, if you want the dropdown to list the different plans an account could be on, you could select an “Account” model you created and set the Column to supply the values to “Plan”. Or, to filter on product IDs while showing product names, set the Column to supply the values to “ID” and the Column to supply the labels to “Title”, so people see product names in the dropdown but the filter passes along the matching ID.
    • +
    • Custom list: Enter each item on a line. You can enter any string values you like.

    You can also change a dashboard filter’s selectable values.

    diff --git a/_site/docs/v0.62/questions/native-editor/optional-variables.html b/_site/docs/v0.62/questions/native-editor/optional-variables.html index b1f5e04eb0..e74b581e50 100644 --- a/_site/docs/v0.62/questions/native-editor/optional-variables.html +++ b/_site/docs/v0.62/questions/native-editor/optional-variables.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@

    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/referencing-saved-questions-in-queries.html b/_site/docs/v0.62/questions/native-editor/referencing-saved-questions-in-queries.html index 8d1f6d5d00..acd787ab69 100644 --- a/_site/docs/v0.62/questions/native-editor/referencing-saved-questions-in-queries.html +++ b/_site/docs/v0.62/questions/native-editor/referencing-saved-questions-in-queries.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/snippets.html b/_site/docs/v0.62/questions/native-editor/snippets.html index 295fd3cf08..9c6fff7e46 100644 --- a/_site/docs/v0.62/questions/native-editor/snippets.html +++ b/_site/docs/v0.62/questions/native-editor/snippets.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/sql-parameters.html b/_site/docs/v0.62/questions/native-editor/sql-parameters.html index a68151c307..4e0bce1bea 100644 --- a/_site/docs/v0.62/questions/native-editor/sql-parameters.html +++ b/_site/docs/v0.62/questions/native-editor/sql-parameters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/table-variables.html b/_site/docs/v0.62/questions/native-editor/table-variables.html index aa359b1131..14a2d6078d 100644 --- a/_site/docs/v0.62/questions/native-editor/table-variables.html +++ b/_site/docs/v0.62/questions/native-editor/table-variables.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/time-grouping-parameters.html b/_site/docs/v0.62/questions/native-editor/time-grouping-parameters.html index 0a42cb8766..167b3222f0 100644 --- a/_site/docs/v0.62/questions/native-editor/time-grouping-parameters.html +++ b/_site/docs/v0.62/questions/native-editor/time-grouping-parameters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/native-editor/writing-sql.html b/_site/docs/v0.62/questions/native-editor/writing-sql.html index 577f25cc57..e702ea7f0a 100644 --- a/_site/docs/v0.62/questions/native-editor/writing-sql.html +++ b/_site/docs/v0.62/questions/native-editor/writing-sql.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/editor.html b/_site/docs/v0.62/questions/query-builder/editor.html index b4749ff928..fb93bcde32 100644 --- a/_site/docs/v0.62/questions/query-builder/editor.html +++ b/_site/docs/v0.62/questions/query-builder/editor.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions-list.html b/_site/docs/v0.62/questions/query-builder/expressions-list.html index 74a6bfa19e..00351a29d9 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions-list.html +++ b/_site/docs/v0.62/questions/query-builder/expressions-list.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions.html b/_site/docs/v0.62/questions/query-builder/expressions.html index fb586afaf2..d6434b5b52 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions.html +++ b/_site/docs/v0.62/questions/query-builder/expressions.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/case.html b/_site/docs/v0.62/questions/query-builder/expressions/case.html index 5abe5e1b37..e1427a9fa6 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/case.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/case.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/coalesce.html b/_site/docs/v0.62/questions/query-builder/expressions/coalesce.html index bb71227a0b..0625f7250e 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/coalesce.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/coalesce.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/concat.html b/_site/docs/v0.62/questions/query-builder/expressions/concat.html index 18cad6f096..4f214ad18b 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/concat.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/concat.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/converttimezone.html b/_site/docs/v0.62/questions/query-builder/expressions/converttimezone.html index 05086b3ce7..ffe68eedc8 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/converttimezone.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/converttimezone.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/countif.html b/_site/docs/v0.62/questions/query-builder/expressions/countif.html index 9d408c104a..1c169d3f95 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/countif.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/countif.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/cumulative.html b/_site/docs/v0.62/questions/query-builder/expressions/cumulative.html index 5fb2ace677..43766450ff 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/cumulative.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/cumulative.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/datetimeadd.html b/_site/docs/v0.62/questions/query-builder/expressions/datetimeadd.html index 8544b9c2a9..138a861079 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/datetimeadd.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/datetimeadd.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/datetimediff.html b/_site/docs/v0.62/questions/query-builder/expressions/datetimediff.html index 416397eb73..eb4d6c1f00 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/datetimediff.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/datetimediff.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/datetimesubtract.html b/_site/docs/v0.62/questions/query-builder/expressions/datetimesubtract.html index ad19af6b09..b470e55c41 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/datetimesubtract.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/datetimesubtract.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/in.html b/_site/docs/v0.62/questions/query-builder/expressions/in.html index e022a69bfd..8969b89fec 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/in.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/in.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/isempty.html b/_site/docs/v0.62/questions/query-builder/expressions/isempty.html index 1e86815bb3..d90e039646 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/isempty.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/isempty.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/isnull.html b/_site/docs/v0.62/questions/query-builder/expressions/isnull.html index b63a1a8328..b765120aa2 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/isnull.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/isnull.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/now.html b/_site/docs/v0.62/questions/query-builder/expressions/now.html index 41adfc0e55..41b042e99f 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/now.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/now.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/offset.html b/_site/docs/v0.62/questions/query-builder/expressions/offset.html index b889244397..fa161736af 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/offset.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/offset.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/regexextract.html b/_site/docs/v0.62/questions/query-builder/expressions/regexextract.html index bcde5866fe..219a8f36e6 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/regexextract.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/regexextract.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/substring.html b/_site/docs/v0.62/questions/query-builder/expressions/substring.html index 35e7c55ceb..cf73c37e3c 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/substring.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/substring.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/sumif.html b/_site/docs/v0.62/questions/query-builder/expressions/sumif.html index 46c77689c1..183603a7b4 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/sumif.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/sumif.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/expressions/week.html b/_site/docs/v0.62/questions/query-builder/expressions/week.html index 3fd0dd4221..da2ff56183 100644 --- a/_site/docs/v0.62/questions/query-builder/expressions/week.html +++ b/_site/docs/v0.62/questions/query-builder/expressions/week.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/filters.html b/_site/docs/v0.62/questions/query-builder/filters.html index 56e0bdfef9..f8952853fb 100644 --- a/_site/docs/v0.62/questions/query-builder/filters.html +++ b/_site/docs/v0.62/questions/query-builder/filters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/join.html b/_site/docs/v0.62/questions/query-builder/join.html index a69cc2764e..4227a1a2dd 100644 --- a/_site/docs/v0.62/questions/query-builder/join.html +++ b/_site/docs/v0.62/questions/query-builder/join.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/query-builder/summarizing-and-grouping.html b/_site/docs/v0.62/questions/query-builder/summarizing-and-grouping.html index f7fa5b4e74..de03710582 100644 --- a/_site/docs/v0.62/questions/query-builder/summarizing-and-grouping.html +++ b/_site/docs/v0.62/questions/query-builder/summarizing-and-grouping.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/start.html b/_site/docs/v0.62/questions/start.html index a9656f9621..f6f6d77600 100644 --- a/_site/docs/v0.62/questions/start.html +++ b/_site/docs/v0.62/questions/start.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/box-plot.html b/_site/docs/v0.62/questions/visualizations/box-plot.html index b50bfe991d..8ab4372d9f 100644 --- a/_site/docs/v0.62/questions/visualizations/box-plot.html +++ b/_site/docs/v0.62/questions/visualizations/box-plot.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/combo-chart.html b/_site/docs/v0.62/questions/visualizations/combo-chart.html index a538d4c39a..a4b9c8ace2 100644 --- a/_site/docs/v0.62/questions/visualizations/combo-chart.html +++ b/_site/docs/v0.62/questions/visualizations/combo-chart.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/country-codes.html b/_site/docs/v0.62/questions/visualizations/country-codes.html index 0f54d3c2c0..03ec575775 100644 --- a/_site/docs/v0.62/questions/visualizations/country-codes.html +++ b/_site/docs/v0.62/questions/visualizations/country-codes.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/custom.html b/_site/docs/v0.62/questions/visualizations/custom.html index 90bc5c8dd2..542297b048 100644 --- a/_site/docs/v0.62/questions/visualizations/custom.html +++ b/_site/docs/v0.62/questions/visualizations/custom.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/detail.html b/_site/docs/v0.62/questions/visualizations/detail.html index 1d6cf0e8b9..0670258ffc 100644 --- a/_site/docs/v0.62/questions/visualizations/detail.html +++ b/_site/docs/v0.62/questions/visualizations/detail.html @@ -230,6 +230,12 @@ + + + + + + @@ -1034,9 +1040,47 @@
    Learn
    - @@ -1816,9 +1860,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1832,6 +1915,17 @@
    Embedded Analytics
    + + +
    @@ -6214,13 +6308,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/drill-through.html b/_site/docs/v0.62/questions/visualizations/drill-through.html index c6804141fa..b30bd367eb 100644 --- a/_site/docs/v0.62/questions/visualizations/drill-through.html +++ b/_site/docs/v0.62/questions/visualizations/drill-through.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/funnel.html b/_site/docs/v0.62/questions/visualizations/funnel.html index 3ce844a330..4ecc7acdff 100644 --- a/_site/docs/v0.62/questions/visualizations/funnel.html +++ b/_site/docs/v0.62/questions/visualizations/funnel.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/gauge.html b/_site/docs/v0.62/questions/visualizations/gauge.html index 2ec14f1a97..e872a62271 100644 --- a/_site/docs/v0.62/questions/visualizations/gauge.html +++ b/_site/docs/v0.62/questions/visualizations/gauge.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/line-bar-and-area-charts.html b/_site/docs/v0.62/questions/visualizations/line-bar-and-area-charts.html index 4cef445edc..f1417c7ac5 100644 --- a/_site/docs/v0.62/questions/visualizations/line-bar-and-area-charts.html +++ b/_site/docs/v0.62/questions/visualizations/line-bar-and-area-charts.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/map.html b/_site/docs/v0.62/questions/visualizations/map.html index 4b2389cc39..4fc6a71c1e 100644 --- a/_site/docs/v0.62/questions/visualizations/map.html +++ b/_site/docs/v0.62/questions/visualizations/map.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/numbers.html b/_site/docs/v0.62/questions/visualizations/numbers.html index c2d89ef8d1..b9a69843ab 100644 --- a/_site/docs/v0.62/questions/visualizations/numbers.html +++ b/_site/docs/v0.62/questions/visualizations/numbers.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/pie-or-donut-chart.html b/_site/docs/v0.62/questions/visualizations/pie-or-donut-chart.html index 623d4bd05e..c197b81a7c 100644 --- a/_site/docs/v0.62/questions/visualizations/pie-or-donut-chart.html +++ b/_site/docs/v0.62/questions/visualizations/pie-or-donut-chart.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/pivot-table.html b/_site/docs/v0.62/questions/visualizations/pivot-table.html index a18170128d..e4e3eaa655 100644 --- a/_site/docs/v0.62/questions/visualizations/pivot-table.html +++ b/_site/docs/v0.62/questions/visualizations/pivot-table.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/progress-bar.html b/_site/docs/v0.62/questions/visualizations/progress-bar.html index 36bd39d01a..f5293d03e8 100644 --- a/_site/docs/v0.62/questions/visualizations/progress-bar.html +++ b/_site/docs/v0.62/questions/visualizations/progress-bar.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/sankey.html b/_site/docs/v0.62/questions/visualizations/sankey.html index 90cc77058e..e4559c31b6 100644 --- a/_site/docs/v0.62/questions/visualizations/sankey.html +++ b/_site/docs/v0.62/questions/visualizations/sankey.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/scatterplot-or-bubble-chart.html b/_site/docs/v0.62/questions/visualizations/scatterplot-or-bubble-chart.html index 24b807036e..01e8707457 100644 --- a/_site/docs/v0.62/questions/visualizations/scatterplot-or-bubble-chart.html +++ b/_site/docs/v0.62/questions/visualizations/scatterplot-or-bubble-chart.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/table.html b/_site/docs/v0.62/questions/visualizations/table.html index ca9f1f5a4b..fd48b35e25 100644 --- a/_site/docs/v0.62/questions/visualizations/table.html +++ b/_site/docs/v0.62/questions/visualizations/table.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/tooltips.html b/_site/docs/v0.62/questions/visualizations/tooltips.html index d35a277381..3f7ab596da 100644 --- a/_site/docs/v0.62/questions/visualizations/tooltips.html +++ b/_site/docs/v0.62/questions/visualizations/tooltips.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/trend.html b/_site/docs/v0.62/questions/visualizations/trend.html index 372e3f8785..a574008c92 100644 --- a/_site/docs/v0.62/questions/visualizations/trend.html +++ b/_site/docs/v0.62/questions/visualizations/trend.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/visualizing-results.html b/_site/docs/v0.62/questions/visualizations/visualizing-results.html index 8632d8be01..347c6c4032 100644 --- a/_site/docs/v0.62/questions/visualizations/visualizing-results.html +++ b/_site/docs/v0.62/questions/visualizations/visualizing-results.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/questions/visualizations/waterfall-chart.html b/_site/docs/v0.62/questions/visualizations/waterfall-chart.html index a0fa0afdab..5714a7c064 100644 --- a/_site/docs/v0.62/questions/visualizations/waterfall-chart.html +++ b/_site/docs/v0.62/questions/visualizations/waterfall-chart.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/bigquery-drive.html b/_site/docs/v0.62/troubleshooting-guide/bigquery-drive.html index 36bc7418e2..327e779442 100644 --- a/_site/docs/v0.62/troubleshooting-guide/bigquery-drive.html +++ b/_site/docs/v0.62/troubleshooting-guide/bigquery-drive.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/bugs.html b/_site/docs/v0.62/troubleshooting-guide/bugs.html index 132f2afbda..5532407838 100644 --- a/_site/docs/v0.62/troubleshooting-guide/bugs.html +++ b/_site/docs/v0.62/troubleshooting-guide/bugs.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/cant-log-in.html b/_site/docs/v0.62/troubleshooting-guide/cant-log-in.html index fb01f34b3b..15904e4666 100644 --- a/_site/docs/v0.62/troubleshooting-guide/cant-log-in.html +++ b/_site/docs/v0.62/troubleshooting-guide/cant-log-in.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/cant-see-tables.html b/_site/docs/v0.62/troubleshooting-guide/cant-see-tables.html index 54e0c8b244..94856cb474 100644 --- a/_site/docs/v0.62/troubleshooting-guide/cant-see-tables.html +++ b/_site/docs/v0.62/troubleshooting-guide/cant-see-tables.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/cant-send-email.html b/_site/docs/v0.62/troubleshooting-guide/cant-send-email.html index e9e583525d..b09c2cb862 100644 --- a/_site/docs/v0.62/troubleshooting-guide/cant-send-email.html +++ b/_site/docs/v0.62/troubleshooting-guide/cant-send-email.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/cant-view-or-edit.html b/_site/docs/v0.62/troubleshooting-guide/cant-view-or-edit.html index bca011d407..552608e5ae 100644 --- a/_site/docs/v0.62/troubleshooting-guide/cant-view-or-edit.html +++ b/_site/docs/v0.62/troubleshooting-guide/cant-view-or-edit.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/create-har-file.html b/_site/docs/v0.62/troubleshooting-guide/create-har-file.html index f12f2e15b4..d405b67f31 100644 --- a/_site/docs/v0.62/troubleshooting-guide/create-har-file.html +++ b/_site/docs/v0.62/troubleshooting-guide/create-har-file.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/data-permissions.html b/_site/docs/v0.62/troubleshooting-guide/data-permissions.html index 8f3a024098..651c9b6898 100644 --- a/_site/docs/v0.62/troubleshooting-guide/data-permissions.html +++ b/_site/docs/v0.62/troubleshooting-guide/data-permissions.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/db-connection.html b/_site/docs/v0.62/troubleshooting-guide/db-connection.html index d1a5393247..0c456c9f1d 100644 --- a/_site/docs/v0.62/troubleshooting-guide/db-connection.html +++ b/_site/docs/v0.62/troubleshooting-guide/db-connection.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/db-performance.html b/_site/docs/v0.62/troubleshooting-guide/db-performance.html index 3cf50f9a61..fa5e0ed03a 100644 --- a/_site/docs/v0.62/troubleshooting-guide/db-performance.html +++ b/_site/docs/v0.62/troubleshooting-guide/db-performance.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/diagnostic-info.html b/_site/docs/v0.62/troubleshooting-guide/diagnostic-info.html index 879338c8e6..d4a5247085 100644 --- a/_site/docs/v0.62/troubleshooting-guide/diagnostic-info.html +++ b/_site/docs/v0.62/troubleshooting-guide/diagnostic-info.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/docker.html b/_site/docs/v0.62/troubleshooting-guide/docker.html index bc5f808abd..a5796fae87 100644 --- a/_site/docs/v0.62/troubleshooting-guide/docker.html +++ b/_site/docs/v0.62/troubleshooting-guide/docker.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/error-message.html b/_site/docs/v0.62/troubleshooting-guide/error-message.html index a042100a95..5b820cb7ee 100644 --- a/_site/docs/v0.62/troubleshooting-guide/error-message.html +++ b/_site/docs/v0.62/troubleshooting-guide/error-message.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/filters.html b/_site/docs/v0.62/troubleshooting-guide/filters.html index b4b2d4455e..fb0cc0f7ec 100644 --- a/_site/docs/v0.62/troubleshooting-guide/filters.html +++ b/_site/docs/v0.62/troubleshooting-guide/filters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/index.html b/_site/docs/v0.62/troubleshooting-guide/index.html index a6b2c16826..a5b7e01493 100644 --- a/_site/docs/v0.62/troubleshooting-guide/index.html +++ b/_site/docs/v0.62/troubleshooting-guide/index.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/known-issues.html b/_site/docs/v0.62/troubleshooting-guide/known-issues.html index 5420b2d3d9..bac727d11a 100644 --- a/_site/docs/v0.62/troubleshooting-guide/known-issues.html +++ b/_site/docs/v0.62/troubleshooting-guide/known-issues.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/ldap.html b/_site/docs/v0.62/troubleshooting-guide/ldap.html index b665729b42..b4f44cce17 100644 --- a/_site/docs/v0.62/troubleshooting-guide/ldap.html +++ b/_site/docs/v0.62/troubleshooting-guide/ldap.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/linked-filters.html b/_site/docs/v0.62/troubleshooting-guide/linked-filters.html index e216a769c2..0bb8dcc47c 100644 --- a/_site/docs/v0.62/troubleshooting-guide/linked-filters.html +++ b/_site/docs/v0.62/troubleshooting-guide/linked-filters.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/loading-from-h2.html b/_site/docs/v0.62/troubleshooting-guide/loading-from-h2.html index f3d489df07..9eee06ea53 100644 --- a/_site/docs/v0.62/troubleshooting-guide/loading-from-h2.html +++ b/_site/docs/v0.62/troubleshooting-guide/loading-from-h2.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/models.html b/_site/docs/v0.62/troubleshooting-guide/models.html index 9516798082..cf7c50c4dc 100644 --- a/_site/docs/v0.62/troubleshooting-guide/models.html +++ b/_site/docs/v0.62/troubleshooting-guide/models.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/my-dashboard-is-slow.html b/_site/docs/v0.62/troubleshooting-guide/my-dashboard-is-slow.html index 21f6ac9153..ce6fcb9651 100644 --- a/_site/docs/v0.62/troubleshooting-guide/my-dashboard-is-slow.html +++ b/_site/docs/v0.62/troubleshooting-guide/my-dashboard-is-slow.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/notifications.html b/_site/docs/v0.62/troubleshooting-guide/notifications.html index 34ed67adc2..1c92ca38f2 100644 --- a/_site/docs/v0.62/troubleshooting-guide/notifications.html +++ b/_site/docs/v0.62/troubleshooting-guide/notifications.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/permissions.html b/_site/docs/v0.62/troubleshooting-guide/permissions.html index 1fae1062a1..3425834502 100644 --- a/_site/docs/v0.62/troubleshooting-guide/permissions.html +++ b/_site/docs/v0.62/troubleshooting-guide/permissions.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/proxies.html b/_site/docs/v0.62/troubleshooting-guide/proxies.html index c54e5b3baa..f53175a85a 100644 --- a/_site/docs/v0.62/troubleshooting-guide/proxies.html +++ b/_site/docs/v0.62/troubleshooting-guide/proxies.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/requesting-new-features.html b/_site/docs/v0.62/troubleshooting-guide/requesting-new-features.html index b704e31000..905aa09e51 100644 --- a/_site/docs/v0.62/troubleshooting-guide/requesting-new-features.html +++ b/_site/docs/v0.62/troubleshooting-guide/requesting-new-features.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/row-and-column-security.html b/_site/docs/v0.62/troubleshooting-guide/row-and-column-security.html index 6032d38378..de1d4fe7b2 100644 --- a/_site/docs/v0.62/troubleshooting-guide/row-and-column-security.html +++ b/_site/docs/v0.62/troubleshooting-guide/row-and-column-security.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/running.html b/_site/docs/v0.62/troubleshooting-guide/running.html index 28fa9dfcad..ac00ab63c1 100644 --- a/_site/docs/v0.62/troubleshooting-guide/running.html +++ b/_site/docs/v0.62/troubleshooting-guide/running.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/saml.html b/_site/docs/v0.62/troubleshooting-guide/saml.html index f729beccdf..8cd3038b01 100644 --- a/_site/docs/v0.62/troubleshooting-guide/saml.html +++ b/_site/docs/v0.62/troubleshooting-guide/saml.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/server-logs.html b/_site/docs/v0.62/troubleshooting-guide/server-logs.html index 577293ff67..86bfa34ae2 100644 --- a/_site/docs/v0.62/troubleshooting-guide/server-logs.html +++ b/_site/docs/v0.62/troubleshooting-guide/server-logs.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/sql.html b/_site/docs/v0.62/troubleshooting-guide/sql.html index d3ff8dcc6f..161bf3e267 100644 --- a/_site/docs/v0.62/troubleshooting-guide/sql.html +++ b/_site/docs/v0.62/troubleshooting-guide/sql.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/sync-fingerprint-scan.html b/_site/docs/v0.62/troubleshooting-guide/sync-fingerprint-scan.html index 9fcda10f72..e985909ccc 100644 --- a/_site/docs/v0.62/troubleshooting-guide/sync-fingerprint-scan.html +++ b/_site/docs/v0.62/troubleshooting-guide/sync-fingerprint-scan.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/timeout.html b/_site/docs/v0.62/troubleshooting-guide/timeout.html index 119c511219..e2d78566ee 100644 --- a/_site/docs/v0.62/troubleshooting-guide/timeout.html +++ b/_site/docs/v0.62/troubleshooting-guide/timeout.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/timezones.html b/_site/docs/v0.62/troubleshooting-guide/timezones.html index fefbd4b37a..a81a181967 100644 --- a/_site/docs/v0.62/troubleshooting-guide/timezones.html +++ b/_site/docs/v0.62/troubleshooting-guide/timezones.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/troubleshooting-guide/visualization.html b/_site/docs/v0.62/troubleshooting-guide/visualization.html index 827ea8dbc3..faabdb188d 100644 --- a/_site/docs/v0.62/troubleshooting-guide/visualization.html +++ b/_site/docs/v0.62/troubleshooting-guide/visualization.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/usage-and-performance-tools/audit.html b/_site/docs/v0.62/usage-and-performance-tools/audit.html index a5a654695c..e12b471194 100644 --- a/_site/docs/v0.62/usage-and-performance-tools/audit.html +++ b/_site/docs/v0.62/usage-and-performance-tools/audit.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/usage-and-performance-tools/start.html b/_site/docs/v0.62/usage-and-performance-tools/start.html index d87dfb3f64..1b4f12c3f3 100644 --- a/_site/docs/v0.62/usage-and-performance-tools/start.html +++ b/_site/docs/v0.62/usage-and-performance-tools/start.html @@ -238,6 +238,12 @@ + + + + + + @@ -1042,9 +1048,47 @@
    Learn
    - @@ -1824,9 +1868,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1840,6 +1923,17 @@
    Embedded Analytics
    + + +
    @@ -6222,13 +6316,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/usage-and-performance-tools/tools.html b/_site/docs/v0.62/usage-and-performance-tools/tools.html index 1852df5cc0..0f344501ac 100644 --- a/_site/docs/v0.62/usage-and-performance-tools/tools.html +++ b/_site/docs/v0.62/usage-and-performance-tools/tools.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/usage-and-performance-tools/usage-analytics-reference.html b/_site/docs/v0.62/usage-and-performance-tools/usage-analytics-reference.html index 85e2abda0a..35052d2e1b 100644 --- a/_site/docs/v0.62/usage-and-performance-tools/usage-analytics-reference.html +++ b/_site/docs/v0.62/usage-and-performance-tools/usage-analytics-reference.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/usage-and-performance-tools/usage-analytics.html b/_site/docs/v0.62/usage-and-performance-tools/usage-analytics.html index 18f6ff46fd..dd467befb8 100644 --- a/_site/docs/v0.62/usage-and-performance-tools/usage-analytics.html +++ b/_site/docs/v0.62/usage-and-performance-tools/usage-analytics.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -6200,13 +6294,6 @@
    Other resources
    diff --git a/_site/docs/v0.62/util/resources/introduction.html b/_site/docs/v0.62/util/resources/introduction.html index 5b1ef14e9d..61a3d7b55b 100644 --- a/_site/docs/v0.62/util/resources/introduction.html +++ b/_site/docs/v0.62/util/resources/introduction.html @@ -216,6 +216,12 @@ + + + + + + @@ -1020,9 +1026,47 @@
    Learn
    - @@ -1802,9 +1846,48 @@
    Embedded Analytics
    - + Pricing + Log in @@ -1818,6 +1901,17 @@
    Embedded Analytics
    + + +
    @@ -1885,7 +1979,7 @@
    Analytics
  • - + Queries and charts @@ -1908,7 +2002,7 @@
    Analytics
  • - + Introduction @@ -1944,7 +2038,7 @@
    Analytics
  • - + Editor @@ -1958,7 +2052,7 @@
    Analytics
  • - + Filtering @@ -1972,7 +2066,7 @@
    Analytics
  • - + Summarizing and grouping @@ -1986,7 +2080,7 @@
    Analytics
  • - + Joining data @@ -2000,7 +2094,7 @@
    Analytics
  • - + Custom expressions @@ -2014,7 +2108,7 @@
    Analytics
  • - + List of expressions @@ -2054,7 +2148,7 @@
    Analytics
  • - + SQL editor @@ -2068,7 +2162,7 @@
    Analytics
  • - + SQL parameters @@ -2082,7 +2176,7 @@
    Analytics
  • - + Field filters @@ -2096,7 +2190,7 @@
    Analytics
  • - + Basic SQL parameters @@ -2110,7 +2204,7 @@
    Analytics
  • - + Time grouping parameters @@ -2124,7 +2218,7 @@
    Analytics
  • - + Table variables @@ -2138,7 +2232,7 @@
    Analytics
  • - + Optional variables @@ -2152,7 +2246,7 @@
    Analytics
  • - + Filter widgets @@ -2166,7 +2260,7 @@
    Analytics
  • - + Referencing models and questions @@ -2180,7 +2274,7 @@
    Analytics
  • - + Snippets @@ -2194,7 +2288,7 @@
    Analytics
  • - + Snippet folder permissions @@ -2234,7 +2328,7 @@
    Analytics
  • - + Overview @@ -2248,7 +2342,7 @@
    Analytics
  • - + Box plot @@ -2262,7 +2356,7 @@
    Analytics
  • - + Combo chart @@ -2276,7 +2370,7 @@
    Analytics
  • - + Details chart @@ -2290,7 +2384,7 @@
    Analytics
  • - + Funnel chart @@ -2304,7 +2398,7 @@
    Analytics
  • - + Gauge chart @@ -2318,7 +2412,7 @@
    Analytics
  • - + Line, bar, and area charts @@ -2332,7 +2426,7 @@
    Analytics
  • - + Maps @@ -2346,7 +2440,7 @@
    Analytics
  • - + Number chart @@ -2360,7 +2454,7 @@
    Analytics
  • - + Pie and sunburst charts @@ -2374,7 +2468,7 @@
    Analytics
  • - + Pivot tables @@ -2388,7 +2482,7 @@
    Analytics
  • - + Progress bar @@ -2402,7 +2496,7 @@
    Analytics
  • - + Sankey chart @@ -2416,7 +2510,7 @@
    Analytics
  • - + Scatterplot @@ -2430,7 +2524,7 @@
    Analytics
  • - + Table @@ -2444,7 +2538,7 @@
    Analytics
  • - + Trend chart @@ -2458,7 +2552,7 @@
    Analytics
  • - + Waterfall chart @@ -2472,7 +2566,7 @@
    Analytics
  • - + Tooltips @@ -2491,7 +2585,7 @@
    Analytics
  • - + Metrics explorer @@ -2506,7 +2600,7 @@
    Analytics
  • - + Alerts @@ -2521,7 +2615,7 @@
    Analytics
  • - + Exporting data @@ -2542,7 +2636,7 @@
    Analytics
  • - + Dashboards @@ -2565,7 +2659,7 @@
    Analytics
  • - + Overview @@ -2580,7 +2674,7 @@
    Analytics
  • - + Dashboard filters @@ -2595,7 +2689,7 @@
    Analytics
  • - + Linked filters @@ -2610,7 +2704,7 @@
    Analytics
  • - + Dashboard interactivity @@ -2625,7 +2719,7 @@
    Analytics
  • - + Charts with multiple series @@ -2640,7 +2734,7 @@
    Analytics
  • - + Dashboard subscriptions @@ -2655,7 +2749,7 @@
    Analytics
  • - + Actions on dashboards @@ -2676,7 +2770,7 @@
    Analytics
  • - + Documents @@ -2699,7 +2793,7 @@
    Analytics
  • - + Overview @@ -2720,7 +2814,7 @@
    Analytics
  • - + AI @@ -2743,7 +2837,7 @@
    Analytics
  • - + Overview @@ -2758,7 +2852,7 @@
    Analytics
  • - + Metabot @@ -2773,7 +2867,7 @@
    Analytics
  • - + Metabot in Slack @@ -2788,7 +2882,7 @@
    Analytics
  • - + Settings @@ -2803,7 +2897,7 @@
    Analytics
  • - + MCP server @@ -2818,7 +2912,7 @@
    Analytics
  • - + Agent API @@ -2833,7 +2927,7 @@
    Analytics
  • - + Agent-driven development @@ -2848,7 +2942,7 @@
    Analytics
  • - + Customization @@ -2863,7 +2957,7 @@
    Analytics
  • - + System prompts @@ -2878,7 +2972,7 @@
    Analytics
  • - + Usage auditing @@ -2893,7 +2987,7 @@
    Analytics
  • - + Usage controls @@ -2908,7 +3002,7 @@
    Analytics
  • - + AI privacy @@ -2929,7 +3023,7 @@
    Analytics
  • - + Data modeling @@ -2952,7 +3046,7 @@
    Analytics
  • - + Models @@ -2967,7 +3061,7 @@
    Analytics
  • - + Model persistence @@ -2982,7 +3076,7 @@
    Analytics
  • - + Metrics @@ -2997,7 +3091,7 @@
    Analytics
  • - + Table metadata settings @@ -3012,7 +3106,7 @@
    Analytics
  • - + Data and semantic types @@ -3027,7 +3121,7 @@
    Analytics
  • - + Editable tables @@ -3042,7 +3136,7 @@
    Analytics
  • - + Formatting defaults @@ -3057,7 +3151,7 @@
    Analytics
  • - + Working with JSON @@ -3072,7 +3166,7 @@
    Analytics
  • - + Segments @@ -3108,7 +3202,7 @@
    Analytics
  • - + Overview @@ -3122,7 +3216,7 @@
    Analytics
  • - + Basic actions @@ -3136,7 +3230,7 @@
    Analytics
  • - + Custom actions @@ -3161,7 +3255,7 @@
    Analytics
  • - + Data Studio @@ -3184,7 +3278,7 @@
    Analytics
  • - + Overview @@ -3199,7 +3293,7 @@
    Analytics
  • - + Library @@ -3214,7 +3308,7 @@
    Analytics
  • - + Data structure @@ -3229,7 +3323,7 @@
    Analytics
  • - + Glossary @@ -3244,7 +3338,7 @@
    Analytics
  • - + Dependency graph @@ -3259,7 +3353,7 @@
    Analytics
  • - + Dependency diagnostics @@ -3295,7 +3389,7 @@
    Analytics
  • - + Overview @@ -3309,7 +3403,7 @@
    Analytics
  • - + Query transforms @@ -3323,7 +3417,7 @@
    Analytics
  • - + Python transforms @@ -3337,7 +3431,7 @@
    Analytics
  • - + Python runner @@ -3351,7 +3445,7 @@
    Analytics
  • - + Jobs and runs @@ -3365,7 +3459,7 @@
    Analytics
  • - + Transform inspector @@ -3379,7 +3473,7 @@
    Analytics
  • - + Add-ons @@ -3404,7 +3498,7 @@
    Analytics
  • - + Organization @@ -3427,7 +3521,7 @@
    Analytics
  • - + Basic exploration @@ -3442,7 +3536,7 @@
    Analytics
  • - + Keyboard shortcuts @@ -3457,7 +3551,7 @@
    Analytics
  • - + Collections @@ -3472,7 +3566,7 @@
    Analytics
  • - + Data reference @@ -3487,7 +3581,7 @@
    Analytics
  • - + Events and timelines @@ -3502,7 +3596,7 @@
    Analytics
  • - + X-rays @@ -3517,7 +3611,7 @@
    Analytics
  • - + Content verification @@ -3532,7 +3626,7 @@
    Analytics
  • - + History @@ -3547,7 +3641,7 @@
    Analytics
  • - + Delete and restore @@ -3574,7 +3668,7 @@
    Embedding
  • - + Overview @@ -3615,7 +3709,7 @@
    Embedding
  • - + Overview @@ -3630,7 +3724,7 @@
    Embedding
  • - + Components @@ -3645,7 +3739,22 @@
    Embedding
  • - + + Filters and parameters + + + + +
  • + + + + + + + +
  • + Appearance @@ -3660,7 +3769,7 @@
    Embedding
  • - + Authentication @@ -3675,7 +3784,7 @@
    Embedding
  • - + Tenants @@ -3711,7 +3820,7 @@
    Embedding
  • - + Overview @@ -3725,7 +3834,7 @@
    Embedding
  • - + Quickstarts @@ -3756,35 +3865,35 @@
    Embedding
  • - + Questions
  • - + Dashboards
  • - + AI chat
  • - + Collections
  • - + Plugins
  • @@ -3816,21 +3925,21 @@
    Embedding
  • - + Provider config
  • - + Working with Next.js
  • - + Versioning
  • @@ -3845,7 +3954,7 @@
    Embedding
  • - + Upgrading @@ -3859,7 +3968,7 @@
    Embedding
  • - + API @@ -3878,7 +3987,7 @@
    Embedding
  • - + Guest embedding @@ -3893,7 +4002,7 @@
    Embedding
  • - + Translate embeds @@ -3937,7 +4046,7 @@
    Embedding
  • - + Overview @@ -3952,7 +4061,7 @@
    Embedding
  • - + Quickstart @@ -3967,7 +4076,7 @@
    Embedding
  • - + Full app UI components @@ -3988,7 +4097,7 @@
    Embedding
  • - + Public links and embeds @@ -4006,7 +4115,7 @@
    Embedding
  • - + Securing embeds @@ -4024,7 +4133,7 @@
    Embedding
  • - + AI agent resources @@ -4048,7 +4157,7 @@
    Administration
  • - + Installation @@ -4092,7 +4201,7 @@
    Administration
  • - + Installation overview @@ -4120,7 +4229,7 @@
    Administration
  • - + Running the JAR file @@ -4134,7 +4243,7 @@
    Administration
  • - + Running in Docker @@ -4148,7 +4257,7 @@
    Administration
  • - + Other installation options @@ -4167,7 +4276,7 @@
    Administration
  • - + Upgrading Metabase @@ -4182,7 +4291,7 @@
    Administration
  • - + Configuring the Metabase application database @@ -4197,7 +4306,7 @@
    Administration
  • - + Activating Enterprise features @@ -4212,7 +4321,7 @@
    Administration
  • - + Migrating to a production application database @@ -4233,7 +4342,7 @@
    Administration
  • - + Data sources @@ -4256,7 +4365,7 @@
    Administration
  • - + Adding and managing databases @@ -4292,7 +4401,7 @@
    Administration
  • - + Athena @@ -4306,7 +4415,7 @@
    Administration
  • - + Amazon RDS @@ -4320,7 +4429,7 @@
    Administration
  • - + BigQuery @@ -4334,7 +4443,7 @@
    Administration
  • - + ClickHouse @@ -4348,7 +4457,7 @@
    Administration
  • - + Databricks @@ -4362,7 +4471,7 @@
    Administration
  • - + Druid @@ -4376,7 +4485,7 @@
    Administration
  • - + MariaDB @@ -4390,7 +4499,7 @@
    Administration
  • - + MongoDB @@ -4404,7 +4513,7 @@
    Administration
  • - + MySQL @@ -4418,7 +4527,7 @@
    Administration
  • - + Oracle @@ -4432,7 +4541,7 @@
    Administration
  • - + PostgreSQL @@ -4446,7 +4555,7 @@
    Administration
  • - + Presto @@ -4460,7 +4569,7 @@
    Administration
  • - + Redshift @@ -4474,7 +4583,7 @@
    Administration
  • - + Snowflake @@ -4488,7 +4597,7 @@
    Administration
  • - + SQL Server @@ -4502,7 +4611,7 @@
    Administration
  • - + SQLite @@ -4516,7 +4625,7 @@
    Administration
  • - + Spark SQL @@ -4530,7 +4639,7 @@
    Administration
  • - + Starburst @@ -4544,7 +4653,7 @@
    Administration
  • - + Vertica @@ -4558,7 +4667,7 @@
    Administration
  • - + Community drivers @@ -4577,7 +4686,7 @@
    Administration
  • - + Database users, roles, and privileges @@ -4592,7 +4701,7 @@
    Administration
  • - + Writeable connection @@ -4607,7 +4716,7 @@
    Administration
  • - + Syncing and scanning databases @@ -4622,7 +4731,7 @@
    Administration
  • - + Encrypting your database connection @@ -4637,7 +4746,7 @@
    Administration
  • - + SSH tunneling @@ -4652,7 +4761,7 @@
    Administration
  • - + SSL certificate @@ -4667,7 +4776,7 @@
    Administration
  • - + Setting up data uploads @@ -4682,7 +4791,7 @@
    Administration
  • - + Uploading data @@ -4733,7 +4842,7 @@
    Administration
  • - + Configuration @@ -4756,7 +4865,7 @@
    Administration
  • - + Setting up Metabase @@ -4771,7 +4880,7 @@
    Administration
  • - + General settings @@ -4786,7 +4895,7 @@
    Administration
  • - + Set up email @@ -4801,7 +4910,7 @@
    Administration
  • - + Set up Slack @@ -4816,7 +4925,7 @@
    Administration
  • - + Webhooks @@ -4831,7 +4940,7 @@
    Administration
  • - + Environment variables @@ -4846,7 +4955,7 @@
    Administration
  • - + Configuration file @@ -4861,7 +4970,7 @@
    Administration
  • - + Config file template @@ -4876,7 +4985,7 @@
    Administration
  • - + Metabase log configuration @@ -4891,7 +5000,7 @@
    Administration
  • - + Timezones @@ -4906,7 +5015,7 @@
    Administration
  • - + Languages and localization @@ -4921,7 +5030,7 @@
    Administration
  • - + Appearance @@ -4936,7 +5045,7 @@
    Administration
  • - + Fonts @@ -4951,7 +5060,7 @@
    Administration
  • - + Caching query results @@ -4966,7 +5075,7 @@
    Administration
  • - + Custom maps @@ -4981,7 +5090,7 @@
    Administration
  • - + Customizing the Metabase Jetty webserver @@ -5002,7 +5111,7 @@
    Administration
  • - + Operations and monitoring @@ -5025,7 +5134,7 @@
    Administration
  • - + Backing up Metabase @@ -5040,7 +5149,7 @@
    Administration
  • - + Development instances @@ -5055,7 +5164,7 @@
    Administration
  • - + Monitoring your Metabase @@ -5070,7 +5179,7 @@
    Administration
  • - + Observability with Prometheus @@ -5085,7 +5194,7 @@
    Administration
  • - + Serialization @@ -5100,7 +5209,7 @@
    Administration
  • - + Remote Sync @@ -5115,7 +5224,7 @@
    Administration
  • - + Commands @@ -5130,7 +5239,7 @@
    Administration
  • - + Usage analytics @@ -5145,7 +5254,7 @@
    Administration
  • - + Security center @@ -5160,7 +5269,7 @@
    Administration
  • - + Admin tools @@ -5181,7 +5290,7 @@
    Administration
  • - + Authentication @@ -5204,7 +5313,7 @@
    Administration
  • - + Account settings @@ -5219,7 +5328,7 @@
    Administration
  • - + Password complexity @@ -5234,7 +5343,7 @@
    Administration
  • - + Session expiration @@ -5249,7 +5358,7 @@
    Administration
  • - + Google Sign-In @@ -5264,7 +5373,7 @@
    Administration
  • - + LDAP @@ -5279,7 +5388,7 @@
    Administration
  • - + User provisioning @@ -5294,7 +5403,7 @@
    Administration
  • - + API keys @@ -5309,7 +5418,7 @@
    Administration
  • - + Paid SSO options @@ -5330,7 +5439,7 @@
    Administration
  • - + JWT-based authentication @@ -5344,7 +5453,7 @@
    Administration
  • - + SAML-based authentication @@ -5358,7 +5467,7 @@
    Administration
  • - + SAML with Auth0 @@ -5372,7 +5481,7 @@
    Administration
  • - + SAML with Microsoft Entra ID @@ -5386,7 +5495,7 @@
    Administration
  • - + SAML with Google @@ -5400,7 +5509,7 @@
    Administration
  • - + SAML with Keycloak @@ -5414,7 +5523,7 @@
    Administration
  • - + SAML with Okta @@ -5428,7 +5537,7 @@
    Administration
  • - + OIDC-based authentication @@ -5442,7 +5551,7 @@
    Administration
  • - + OIDC with Keycloak @@ -5467,7 +5576,7 @@
    Administration
  • - + Permissions @@ -5490,7 +5599,7 @@
    Administration
  • - + Permissions introduction @@ -5505,7 +5614,7 @@
    Administration
  • - + Managing people and groups @@ -5520,7 +5629,7 @@
    Administration
  • - + Data permissions @@ -5535,7 +5644,7 @@
    Administration
  • - + Collection permissions @@ -5550,7 +5659,7 @@
    Administration
  • - + Application permissions @@ -5565,7 +5674,7 @@
    Administration
  • - + Row and column security @@ -5580,7 +5689,7 @@
    Administration
  • - + Row and column security examples @@ -5595,7 +5704,7 @@
    Administration
  • - + Database routing @@ -5610,7 +5719,7 @@
    Administration
  • - + Impersonation @@ -5625,7 +5734,7 @@
    Administration
  • - + Snippets folder permissions @@ -5640,7 +5749,7 @@
    Administration
  • - + Notification permissions @@ -5655,7 +5764,7 @@
    Administration
  • - + Configuring permissions for embedding @@ -5682,7 +5791,7 @@
    Other resources
  • - + API @@ -5908,7 +6017,7 @@
    Other resources
  • - + Troubleshooting @@ -5926,7 +6035,7 @@
    Other resources
  • - + Developer guide @@ -5962,7 +6071,7 @@
    Other resources
  • - + Accessibility @@ -5980,7 +6089,7 @@
    Other resources
  • - + Supported browsers @@ -5998,7 +6107,7 @@
    Other resources
  • - + Privacy @@ -6016,7 +6125,7 @@
    Other resources
  • - + About the anonymous usage data we collect