diff --git a/_docs/latest/api.json b/_docs/latest/api.json
index e66d4f738a..f562768769 100644
--- a/_docs/latest/api.json
+++ b/_docs/latest/api.json
@@ -11720,7 +11720,7 @@
"additionalProperties" : false
},
"metabase.notification.api.notification.CreateNotificationParams" : {
- "description" : "[[::NotificationApiInput]] for a create request: no `:id` at any level, so a caller cannot pick a primary key.",
+ "description" : "Notification schema for a create request, or for sending one that was never saved. Like\n FullyHydratedNotification but restricts templates to user-provided types only (no handlebars-resource),\n and carries no ids since the body has no row of its own.",
"oneOf" : [ {
"type" : "object",
"properties" : {
@@ -11811,13 +11811,6 @@
"payload" : {
"$ref" : "#/components/schemas/metabase.notification.models.CreateNotificationCardParams"
},
- "payload_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
"payload_type" : {
"type" : "string",
"enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ]
@@ -11917,13 +11910,6 @@
"required" : [ "channel_type" ]
}
},
- "payload_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
"payload_type" : {
"type" : "string",
"enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ]
@@ -11938,245 +11924,8 @@
"required" : [ "payload_type" ]
} ]
},
- "metabase.notification.api.notification.NotificationApiInput" : {
- "description" : "Notification schema for API input. Like FullyHydratedNotification but restricts templates\n to user-provided types only (no handlebars-resource).",
- "oneOf" : [ {
- "type" : "object",
- "properties" : {
- "payload_type" : {
- "type" : "string",
- "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ]
- },
- "payload_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
- "handlers" : {
- "type" : "array",
- "items" : {
- "type" : "object",
- "properties" : {
- "template_id" : {
- "oneOf" : [ {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- }, {
- "type" : "null"
- } ]
- },
- "channel_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
- },
- "recipients" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient"
- }
- },
- "template" : {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplateUserProvided"
- }, {
- "type" : "null"
- } ]
- },
- "channel_type" : { },
- "channel" : {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel"
- }, {
- "type" : "null"
- } ]
- },
- "notification_id" : {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- },
- "active" : {
- "oneOf" : [ {
- "type" : "boolean"
- }, {
- "type" : "null"
- } ]
- }
- },
- "required" : [ "channel_type" ]
- }
- },
- "id" : {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- },
- "creator" : {
- "oneOf" : [ {
- "description" : "Value must be a map.",
- "type" : "object",
- "properties" : { }
- }, {
- "type" : "null"
- } ]
- },
- "active" : {
- "oneOf" : [ {
- "type" : "boolean"
- }, {
- "type" : "null"
- } ]
- },
- "payload" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard"
- },
- "creator_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
- "subscriptions" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription"
- }
- }
- },
- "required" : [ "payload_type", "payload" ]
- }, {
- "type" : "object",
- "properties" : {
- "active" : {
- "oneOf" : [ {
- "type" : "boolean"
- }, {
- "type" : "null"
- } ]
- },
- "creator" : {
- "oneOf" : [ {
- "description" : "Value must be a map.",
- "type" : "object",
- "properties" : { }
- }, {
- "type" : "null"
- } ]
- },
- "creator_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
- "handlers" : {
- "type" : "array",
- "items" : {
- "type" : "object",
- "properties" : {
- "template_id" : {
- "oneOf" : [ {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- }, {
- "type" : "null"
- } ]
- },
- "channel_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
- },
- "recipients" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient"
- }
- },
- "template" : {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplateUserProvided"
- }, {
- "type" : "null"
- } ]
- },
- "channel_type" : { },
- "channel" : {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel"
- }, {
- "type" : "null"
- } ]
- },
- "notification_id" : {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- },
- "active" : {
- "oneOf" : [ {
- "type" : "boolean"
- }, {
- "type" : "null"
- } ]
- }
- },
- "required" : [ "channel_type" ]
- }
- },
- "id" : {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- },
- "payload_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
- "payload_type" : {
- "type" : "string",
- "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ]
- },
- "subscriptions" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription"
- }
- }
- },
- "required" : [ "payload_type" ]
- } ]
- },
"metabase.notification.api.notification.NotificationApiUpdateInput" : {
- "description" : "::NotificationApiInput restricted to what `notification-update-spec` writes. On PUT the URL,\n not the body, identifies the target (RFC 9110 §9.3.4), so a client-sent id is stripped.",
+ "description" : "Notification schema for an update request, restricted to what `notification-update-spec` writes. On PUT\n the URL, not the body, identifies the target (RFC 9110 §9.3.4), so a client-sent id is stripped.",
"oneOf" : [ {
"type" : "object",
"properties" : {
@@ -39687,7 +39436,7 @@
"content" : {
"application/json" : {
"schema" : {
- "$ref" : "#/components/schemas/metabase.notification.api.notification.NotificationApiInput"
+ "$ref" : "#/components/schemas/metabase.notification.api.notification.CreateNotificationParams"
}
}
}
diff --git a/_docs/latest/cloud/images/migrate-button.png b/_docs/latest/cloud/images/migrate-button.png
deleted file mode 100644
index 627158a6f3..0000000000
Binary files a/_docs/latest/cloud/images/migrate-button.png and /dev/null differ
diff --git a/_docs/latest/cloud/migrate/guide.md b/_docs/latest/cloud/migrate/guide.md
index 9c5147d045..c100110919 100644
--- a/_docs/latest/cloud/migrate/guide.md
+++ b/_docs/latest/cloud/migrate/guide.md
@@ -34,21 +34,16 @@ You'll kick off the migration process in your self-hosted Metabase, and finish u
### Initiate your migration
-In your Metabase, go to **Admin** > **Settings** > **Cloud**.
+1. In your Metabase, go to **Admin** > **Settings**.
+2. In the left sidebar, click **Cloud** and then **Try for free**.
+3. Metabase will prompt you with a modal to let you know that your Metabase will be read-only while it automates the migration. Click **Migrate now**.
+4. Metabase will take a snapshot of your application database (all your questions, models, dashboards, etc.). While it's snapshotting, it'll display a banner to let people know that they won't be able to create anything new. People will still be able to view questions and dashboards during this time.
-In the **Migrate to Metabase Cloud** section, click on the **Get started** button.
+ 
-
+ Once the snapshot upload completes:
-Metabase will prompt you with a modal to let you know that your Metabase will be read-only while it automates the migration. Click **Migrate now**.
-
-Metabase will take a snapshot of your application database (all your questions, models, dashboards, etc.). While it's snapshotting, it'll display a banner to let people know that they won't be able to create anything new. People will still be able to view questions and dashboards during this time.
-
-
-
-Once the snapshot upload completes:
-
-
+ 
### Set up your account and choose your plan and deployment
diff --git a/_docs/latest/configuring-metabase/config-template.md b/_docs/latest/configuring-metabase/config-template.md
index df15cb0219..e3b8f0849a 100644
--- a/_docs/latest/configuring-metabase/config-template.md
+++ b/_docs/latest/configuring-metabase/config-template.md
@@ -209,8 +209,10 @@ config:
ldap-port: 389
ldap-security: none
ldap-sync-user-attributes: true
+ ldap-sync-user-attributes-allowlist: ''
ldap-sync-user-attributes-blacklist: userPassword,dn,distinguishedName
ldap-timeout-seconds: 15.0
+ ldap-trust-store: null
ldap-user-base: null
ldap-user-filter: (&(objectClass=inetOrgPerson)(|(uid={login})(mail={login})))
ldap-user-provisioning-enabled: true
diff --git a/_docs/latest/configuring-metabase/environment-variables.md b/_docs/latest/configuring-metabase/environment-variables.md
index 8ff1f598e5..70a7e28589 100644
--- a/_docs/latest/configuring-metabase/environment-variables.md
+++ b/_docs/latest/configuring-metabase/environment-variables.md
@@ -1241,6 +1241,14 @@ Use SSL, TLS or plain text.
Should we sync user attributes when someone logs in via LDAP?
+### `MB_LDAP_SYNC_USER_ATTRIBUTES_ALLOWLIST`
+
+- Type: csv
+- Default: ``
+- [Configuration file name](./config-file): `ldap-sync-user-attributes-allowlist`
+
+Comma-separated list of user attributes to sync for LDAP users. Only these attributes are synced; leave blank to sync none.
+
### `MB_LDAP_SYNC_USER_ATTRIBUTES_BLACKLIST`
- Type: csv
@@ -1257,6 +1265,14 @@ Comma-separated list of user attributes to skip syncing for LDAP users.
Maximum time, in seconds, to wait for LDAP server before falling back to local authentication.
+### `MB_LDAP_TRUST_STORE`
+
+- Type: string
+- Default: `null`
+- [Configuration file name](./config-file): `ldap-trust-store`
+
+Path to a JKS trust store of CA certificates used to validate the LDAP server's TLS certificate. Leave blank to use the JVM default trust store.
+
### `MB_LDAP_USER_BASE`
- Type: string
@@ -2435,6 +2451,10 @@ This URL is used for things like creating links in emails, auth redirects, and i
This URL is critical for things like SSO authentication, email links, embedding and more.
Even difference with `http://` vs `https://` can cause problems.
Make sure that the address defined is how Metabase is being accessed.
+ If left unset, Metabase learns this value from the request headers of the first authenticated
+ admin, so an operator who completes setup in a browser doesn't have to configure it. Deployments
+ that provision headlessly, run multi-tenant, or otherwise never sign in as an admin should set
+ `MB_SITE_URL` explicitly.
### `MB_SLACK_APP_TOKEN`
@@ -2985,6 +3005,13 @@ Default: `null`
Used during development of third-party drivers. Set the value to have that plugin manifest get loaded during startup. Specify multiple plugin manifests by comma-separating them.
+### `MB_DISABLE_LEGACY_STARTUP_ENCRYPTION`
+
+Type: boolean
+Default: `false`
+
+By default, when [MB_ENCRYPTION_SECRET_KEY](#mb_encryption_secret_key) is set, Metabase encrypts on startup any values that an older version of Metabase stored unencrypted, and logs a warning for each column it had to encrypt. When `true`, Metabase will refuse to start instead of encrypting such values, including settings saved by an older version.
+
### `MB_DISABLE_SCHEDULER`
Type: boolean
diff --git a/_docs/latest/embedding/chart.md b/_docs/latest/embedding/chart.md
index c83d067a61..df581e3fa9 100644
--- a/_docs/latest/embedding/chart.md
+++ b/_docs/latest/embedding/chart.md
@@ -233,7 +233,7 @@ In the embedding wizard, this corresponds to the **Allow people to save new ques
Customizing click behavior is only available in the [Modular embedding SDK](./sdk/introduction) for now.
-When people click a data point in an interactive chart, Metabase shows a menu of actions. The [`mapQuestionClickActions`](./sdk/plugins) plugin lets you customize this: open the default menu, add custom actions, or perform an immediate action without a menu.
+When people click a data point in an interactive chart, Metabase shows a menu of actions. The [`mapQuestionClickActions`](./sdk/api/MetabasePluginsConfig#mapquestionclickactions) SDK [plugin](./sdk/plugins) lets you customize this: add custom actions alongside the default ones, perform an immediate action without a menu, or prevent default actions from happening.
Use it globally on `MetabaseProvider`, or on individual `InteractiveQuestion` components:
diff --git a/_docs/latest/embedding/sdk/snippets/questions/interactive-question-click-actions.tsx b/_docs/latest/embedding/sdk/snippets/questions/interactive-question-click-actions.tsx
index 5dbf82636a..be3bacb52b 100644
--- a/_docs/latest/embedding/sdk/snippets/questions/interactive-question-click-actions.tsx
+++ b/_docs/latest/embedding/sdk/snippets/questions/interactive-question-click-actions.tsx
@@ -16,7 +16,7 @@ const Example = () => {
pluginsConfig={{
mapQuestionClickActions: (clickActions, clicked) => {
if (clicked?.column?.display_name === "Last Name") {
- // This adds a custom action to the menu when clicked on on "Last Name" column
+ // This adds a custom action to the menu
return [
...clickActions,
{
@@ -29,12 +29,12 @@ const Example = () => {
}
if (clicked?.column?.display_name === "Plan") {
- // This performs an immediate action on "Plan" column instead of opening the menu
+ // This performs an immediate action instead of opening the menu
return {
onClick: () => alert("You clicked the Plan column!"),
};
}
- // default behavior (open Metabase's default click menu) on other columns
+ // default behavior (open Metabase's default click menu)
return clickActions;
},
}}
diff --git a/_docs/v0.63/api.json b/_docs/v0.63/api.json
index e66d4f738a..f562768769 100644
--- a/_docs/v0.63/api.json
+++ b/_docs/v0.63/api.json
@@ -11720,7 +11720,7 @@
"additionalProperties" : false
},
"metabase.notification.api.notification.CreateNotificationParams" : {
- "description" : "[[::NotificationApiInput]] for a create request: no `:id` at any level, so a caller cannot pick a primary key.",
+ "description" : "Notification schema for a create request, or for sending one that was never saved. Like\n FullyHydratedNotification but restricts templates to user-provided types only (no handlebars-resource),\n and carries no ids since the body has no row of its own.",
"oneOf" : [ {
"type" : "object",
"properties" : {
@@ -11811,13 +11811,6 @@
"payload" : {
"$ref" : "#/components/schemas/metabase.notification.models.CreateNotificationCardParams"
},
- "payload_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
"payload_type" : {
"type" : "string",
"enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ]
@@ -11917,13 +11910,6 @@
"required" : [ "channel_type" ]
}
},
- "payload_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
"payload_type" : {
"type" : "string",
"enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ]
@@ -11938,245 +11924,8 @@
"required" : [ "payload_type" ]
} ]
},
- "metabase.notification.api.notification.NotificationApiInput" : {
- "description" : "Notification schema for API input. Like FullyHydratedNotification but restricts templates\n to user-provided types only (no handlebars-resource).",
- "oneOf" : [ {
- "type" : "object",
- "properties" : {
- "payload_type" : {
- "type" : "string",
- "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ]
- },
- "payload_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
- "handlers" : {
- "type" : "array",
- "items" : {
- "type" : "object",
- "properties" : {
- "template_id" : {
- "oneOf" : [ {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- }, {
- "type" : "null"
- } ]
- },
- "channel_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
- },
- "recipients" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient"
- }
- },
- "template" : {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplateUserProvided"
- }, {
- "type" : "null"
- } ]
- },
- "channel_type" : { },
- "channel" : {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel"
- }, {
- "type" : "null"
- } ]
- },
- "notification_id" : {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- },
- "active" : {
- "oneOf" : [ {
- "type" : "boolean"
- }, {
- "type" : "null"
- } ]
- }
- },
- "required" : [ "channel_type" ]
- }
- },
- "id" : {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- },
- "creator" : {
- "oneOf" : [ {
- "description" : "Value must be a map.",
- "type" : "object",
- "properties" : { }
- }, {
- "type" : "null"
- } ]
- },
- "active" : {
- "oneOf" : [ {
- "type" : "boolean"
- }, {
- "type" : "null"
- } ]
- },
- "payload" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationCard"
- },
- "creator_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
- "subscriptions" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription"
- }
- }
- },
- "required" : [ "payload_type", "payload" ]
- }, {
- "type" : "object",
- "properties" : {
- "active" : {
- "oneOf" : [ {
- "type" : "boolean"
- }, {
- "type" : "null"
- } ]
- },
- "creator" : {
- "oneOf" : [ {
- "description" : "Value must be a map.",
- "type" : "object",
- "properties" : { }
- }, {
- "type" : "null"
- } ]
- },
- "creator_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
- "handlers" : {
- "type" : "array",
- "items" : {
- "type" : "object",
- "properties" : {
- "template_id" : {
- "oneOf" : [ {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- }, {
- "type" : "null"
- } ]
- },
- "channel_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
- },
- "recipients" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationRecipient"
- }
- },
- "template" : {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/metabase.channel.models.channel.ChannelTemplateUserProvided"
- }, {
- "type" : "null"
- } ]
- },
- "channel_type" : { },
- "channel" : {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/metabase.channel.models.channel.Channel"
- }, {
- "type" : "null"
- } ]
- },
- "notification_id" : {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- },
- "active" : {
- "oneOf" : [ {
- "type" : "boolean"
- }, {
- "type" : "null"
- } ]
- }
- },
- "required" : [ "channel_type" ]
- }
- },
- "id" : {
- "description" : "value must be an integer greater than zero.",
- "type" : "integer",
- "minimum" : 1
- },
- "payload_id" : {
- "oneOf" : [ {
- "type" : "integer"
- }, {
- "type" : "null"
- } ]
- },
- "payload_type" : {
- "type" : "string",
- "enum" : [ "notification/dashboard", "notification/system-event", "notification/testing", "notification/card" ]
- },
- "subscriptions" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/metabase.notification.models.NotificationSubscription"
- }
- }
- },
- "required" : [ "payload_type" ]
- } ]
- },
"metabase.notification.api.notification.NotificationApiUpdateInput" : {
- "description" : "::NotificationApiInput restricted to what `notification-update-spec` writes. On PUT the URL,\n not the body, identifies the target (RFC 9110 §9.3.4), so a client-sent id is stripped.",
+ "description" : "Notification schema for an update request, restricted to what `notification-update-spec` writes. On PUT\n the URL, not the body, identifies the target (RFC 9110 §9.3.4), so a client-sent id is stripped.",
"oneOf" : [ {
"type" : "object",
"properties" : {
@@ -39687,7 +39436,7 @@
"content" : {
"application/json" : {
"schema" : {
- "$ref" : "#/components/schemas/metabase.notification.api.notification.NotificationApiInput"
+ "$ref" : "#/components/schemas/metabase.notification.api.notification.CreateNotificationParams"
}
}
}
diff --git a/_docs/v0.63/configuring-metabase/config-template.md b/_docs/v0.63/configuring-metabase/config-template.md
index c682f2bb6b..947ad81078 100644
--- a/_docs/v0.63/configuring-metabase/config-template.md
+++ b/_docs/v0.63/configuring-metabase/config-template.md
@@ -207,8 +207,10 @@ config:
ldap-port: 389
ldap-security: none
ldap-sync-user-attributes: true
+ ldap-sync-user-attributes-allowlist: ''
ldap-sync-user-attributes-blacklist: userPassword,dn,distinguishedName
ldap-timeout-seconds: 15.0
+ ldap-trust-store: null
ldap-user-base: null
ldap-user-filter: (&(objectClass=inetOrgPerson)(|(uid={login})(mail={login})))
ldap-user-provisioning-enabled: true
diff --git a/_docs/v0.63/configuring-metabase/environment-variables.md b/_docs/v0.63/configuring-metabase/environment-variables.md
index 4663f0a7e2..5b9b311d42 100644
--- a/_docs/v0.63/configuring-metabase/environment-variables.md
+++ b/_docs/v0.63/configuring-metabase/environment-variables.md
@@ -1239,6 +1239,14 @@ Use SSL, TLS or plain text.
Should we sync user attributes when someone logs in via LDAP?
+### `MB_LDAP_SYNC_USER_ATTRIBUTES_ALLOWLIST`
+
+- Type: csv
+- Default: ``
+- [Configuration file name](./config-file): `ldap-sync-user-attributes-allowlist`
+
+Comma-separated list of user attributes to sync for LDAP users. Only these attributes are synced; leave blank to sync none.
+
### `MB_LDAP_SYNC_USER_ATTRIBUTES_BLACKLIST`
- Type: csv
@@ -1255,6 +1263,14 @@ Comma-separated list of user attributes to skip syncing for LDAP users.
Maximum time, in seconds, to wait for LDAP server before falling back to local authentication.
+### `MB_LDAP_TRUST_STORE`
+
+- Type: string
+- Default: `null`
+- [Configuration file name](./config-file): `ldap-trust-store`
+
+Path to a JKS trust store of CA certificates used to validate the LDAP server's TLS certificate. Leave blank to use the JVM default trust store.
+
### `MB_LDAP_USER_BASE`
- Type: string
@@ -2433,6 +2449,10 @@ This URL is used for things like creating links in emails, auth redirects, and i
This URL is critical for things like SSO authentication, email links, embedding and more.
Even difference with `http://` vs `https://` can cause problems.
Make sure that the address defined is how Metabase is being accessed.
+ If left unset, Metabase learns this value from the request headers of the first authenticated
+ admin, so an operator who completes setup in a browser doesn't have to configure it. Deployments
+ that provision headlessly, run multi-tenant, or otherwise never sign in as an admin should set
+ `MB_SITE_URL` explicitly.
### `MB_SLACK_APP_TOKEN`
@@ -2983,6 +3003,13 @@ Default: `null`
Used during development of third-party drivers. Set the value to have that plugin manifest get loaded during startup. Specify multiple plugin manifests by comma-separating them.
+### `MB_DISABLE_LEGACY_STARTUP_ENCRYPTION`
+
+Type: boolean
+Default: `false`
+
+By default, when [MB_ENCRYPTION_SECRET_KEY](#mb_encryption_secret_key) is set, Metabase encrypts on startup any values that an older version of Metabase stored unencrypted, and logs a warning for each column it had to encrypt. When `true`, Metabase will refuse to start instead of encrypting such values, including settings saved by an older version.
+
### `MB_DISABLE_SCHEDULER`
Type: boolean
diff --git a/_docs/v0.63/embedding/chart.md b/_docs/v0.63/embedding/chart.md
index 3fc7fda5b0..a8b408ca96 100644
--- a/_docs/v0.63/embedding/chart.md
+++ b/_docs/v0.63/embedding/chart.md
@@ -230,7 +230,7 @@ In the embedding wizard, this corresponds to the **Allow people to save new ques
Customizing click behavior is only available in the [Modular embedding SDK](./sdk/introduction) for now.
-When people click a data point in an interactive chart, Metabase shows a menu of actions. The [`mapQuestionClickActions`](./sdk/plugins) plugin lets you customize this: open the default menu, add custom actions, or perform an immediate action without a menu.
+When people click a data point in an interactive chart, Metabase shows a menu of actions. The [`mapQuestionClickActions`](./sdk/api/MetabasePluginsConfig#mapquestionclickactions) SDK [plugin](./sdk/plugins) lets you customize this: add custom actions alongside the default ones, perform an immediate action without a menu, or prevent default actions from happening.
Use it globally on `MetabaseProvider`, or on individual `InteractiveQuestion` components:
diff --git a/_docs/v0.63/embedding/sdk/snippets/questions/interactive-question-click-actions.tsx b/_docs/v0.63/embedding/sdk/snippets/questions/interactive-question-click-actions.tsx
index 5dbf82636a..be3bacb52b 100644
--- a/_docs/v0.63/embedding/sdk/snippets/questions/interactive-question-click-actions.tsx
+++ b/_docs/v0.63/embedding/sdk/snippets/questions/interactive-question-click-actions.tsx
@@ -16,7 +16,7 @@ const Example = () => {
pluginsConfig={{
mapQuestionClickActions: (clickActions, clicked) => {
if (clicked?.column?.display_name === "Last Name") {
- // This adds a custom action to the menu when clicked on on "Last Name" column
+ // This adds a custom action to the menu
return [
...clickActions,
{
@@ -29,12 +29,12 @@ const Example = () => {
}
if (clicked?.column?.display_name === "Plan") {
- // This performs an immediate action on "Plan" column instead of opening the menu
+ // This performs an immediate action instead of opening the menu
return {
onClick: () => alert("You clicked the Plan column!"),
};
}
- // default behavior (open Metabase's default click menu) on other columns
+ // default behavior (open Metabase's default click menu)
return clickActions;
},
}}