Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions docs/admin_docs/configuration/alerts-reports.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,61 @@ SLACK_CACHE_TIMEOUT = int(timedelta(days=2).total_seconds())
SLACK_API_RATE_LIMIT_RETRY_COUNT = 5
```

### Webhook integration

Superset can send alert and report notifications to any HTTP endpoint — useful for chat platforms, incident management tools, or custom automation.

#### Enabling Webhooks

Enable the feature flag in `superset_config.py`:

```python
FEATURE_FLAGS = {
"ALERT_REPORTS": True,
"ALERT_REPORT_WEBHOOK": True,
}
```

#### Configuring a Webhook Recipient

When creating or editing an alert or report, select **Webhook** as the notification method and enter your endpoint URL.

#### Payload Format

Superset sends an HTTP POST with `Content-Type: application/json`:

```json
{
"name": "My Alert",
"header": {
"notification_format": "JSON",
"notification_type": "Alert",
"notification_source": "Alert",
"chart_id": 42,
"dashboard_id": null
},
"text": "Alert condition met: value exceeded threshold",
"description": "Monthly revenue dropped below target",
"url": "https://your-superset-host/superset/dashboard/1/"
}
```

When a report includes file attachments (CSV, PDF, or PNG screenshots), they are sent as a `multipart/form-data` request with the JSON payload in the `data` field and files attached separately.
Comment thread
rusackas marked this conversation as resolved.
Outdated

Comment thread
rusackas marked this conversation as resolved.
Outdated
#### HTTPS Enforcement

To require HTTPS webhook URLs (recommended for production), set:

```python
ALERT_REPORTS_WEBHOOK_HTTPS_ONLY = True
```

When enabled, Superset rejects webhook configurations that use `http://` URLs.

#### Retry Behavior

Superset automatically retries webhook deliveries on `429 Too Many Requests` and `5xx` server errors using exponential backoff.

### Kubernetes-specific

- You must have a `celery beat` pod running. If you're using the chart included in the GitHub repository under [helm/superset](https://github.com/apache/superset/tree/master/helm/superset), you need to put `supersetCeleryBeat.enabled = true` in your values override.
Expand Down
28 changes: 28 additions & 0 deletions docs/admin_docs/configuration/configuring-superset.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,34 @@ FEATURE_FLAGS = {

A current list of feature flags can be found in the [Feature Flags](/admin-docs/configuration/feature-flags) documentation.

## Security Configuration

### HASH_ALGORITHM

Controls the hashing algorithm used for internal checksums and cache keys (thumbnails, cache keys, etc.). The default is `sha256`, which satisfies environments with stricter compliance requirements (e.g., FedRAMP). Set it to `md5` to retain the legacy behavior from older Superset deployments:

```python
HASH_ALGORITHM = "sha256" # default; set to "md5" for legacy behavior
```

A companion `HASH_ALGORITHM_FALLBACKS` list (default: `["md5"]`) lets UUID lookups fall back to older algorithms, which enables gradual migration without breaking existing entries. Set it to `[]` for strict mode (use only `HASH_ALGORITHM`).

:::note
This setting affects internal Superset operations only, not user passwords or authentication tokens. Changing it in an existing deployment may invalidate cached values but does not require a database migration.
:::

## SQL Lab Configuration

### SQLLAB_HISTORY_RETENTION_DAYS

Controls how long SQL Lab query history is retained in the metadata database. The default is 30 days:

```python
SQLLAB_HISTORY_RETENTION_DAYS = 30 # set to None to retain history indefinitely
Comment thread
rusackas marked this conversation as resolved.
Outdated
Comment thread
rusackas marked this conversation as resolved.
Outdated
```

Old queries are pruned by the `celery beat` scheduler. Set to `None` to disable automatic cleanup, though this may cause the metadata database to grow unbounded over time.
Comment thread
rusackas marked this conversation as resolved.
Outdated

Comment thread
rusackas marked this conversation as resolved.
Outdated
:::resources
- [Blog: Feature Flags in Apache Superset](https://preset.io/blog/feature-flags-in-apache-superset-and-preset/)
:::
17 changes: 16 additions & 1 deletion docs/admin_docs/configuration/theming.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,17 @@ When `ENABLE_UI_THEME_ADMINISTRATION = True`:
3. Administrators can change system themes without restarting Superset
4. Configuration file themes serve as fallbacks when no UI themes are set

### Theme Validation and Fallback

Superset validates theme JSON when it is saved, either through the UI or via configuration. If a theme contains invalid tokens or an unrecognized structure, Superset logs a warning and falls back to the built-in default theme rather than applying a broken configuration. This prevents a bad theme from rendering the application unusable.

The fallback order is:
1. **UI-configured system theme** (highest priority, if `ENABLE_UI_THEME_ADMINISTRATION = True`)
2. **`THEME_DEFAULT` / `THEME_DARK`** from `superset_config.py`
3. **Built-in Superset default theme** (always present as a safety net)

If you see unexpected styling after a config change, check the Superset server logs for theme validation warnings.

### Copying Themes Between Systems

To export a theme for use in configuration files or another instance:
Expand All @@ -114,7 +125,11 @@ Superset supports custom fonts through the theme configuration, allowing you to

### Default Fonts

By default, Superset uses Inter and Fira Code fonts which are bundled with the application via `@fontsource` packages. These fonts work offline and require no external network calls.
By default, Superset uses **Inter** for UI text and **IBM Plex Mono** for code (SQL editors, JSON fields, and other monospace contexts). Both fonts are bundled with the application via `@fontsource` packages and work offline without any external network calls.

:::note
IBM Plex Mono replaced Fira Code as the default code font in Superset 6.1. If you have an existing theme that explicitly sets `fontFamilyCode: "Fira Code, ..."`, you may want to update it.
:::

### Configuring Custom Fonts

Expand Down
34 changes: 34 additions & 0 deletions docs/admin_docs/security/security.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,40 @@ FAB_ADD_SECURITY_API = True

Once configured, the documentation for additional "Security" endpoints will be visible in Swagger for you to explore.

### API Key Authentication

Superset supports long-lived API keys for service accounts, CI/CD pipelines, and programmatic integrations (including MCP clients). API keys are managed through **Security → API Keys** in the admin menu.
Comment thread
rusackas marked this conversation as resolved.
Outdated

#### Creating an API Key

1. Navigate to **Security → API Keys**
2. Click **+ API Key**
3. Enter a name and (optionally) an expiration date
4. Copy the generated token — it is shown only once

Only users with the `can_read` and `can_write` permissions on `ApiKey` (granted by default to Admins) can manage API keys.

#### Using an API Key

Pass the key as a Bearer token in the `Authorization` header:

```
Authorization: Bearer <your-api-key>
```

This works for all REST API endpoints and the MCP server. The request is executed with the permissions of the user who created the key.

Comment thread
rusackas marked this conversation as resolved.
Outdated
#### Use Cases

- **CI/CD pipelines** — automated chart/dashboard exports and imports
- **MCP integrations** — connect AI assistants without interactive login
- **External services** — dashboards embedded in other applications
- **Service accounts** — long-lived credentials that don't expire with session cookies

:::caution
Store API keys securely. Anyone with a valid key can make requests on behalf of the creating user. Revoke keys promptly if they are compromised by deleting them from **Security → API Keys**.
:::

### Customizing Permissions

The permissions exposed by FAB are very granular and allow for a great level of
Expand Down
Loading