E EMBAN / Docs

Permissions

Embed sessions support fine-grained permissions that control what each customer can see and do.

Embed session permissions

Pass a permissions object when creating an embed session:

{
  "tenant_id": "customer_1",
  "dashboard_id": "dash_abc",
  "expires_in": 3600,
  "permissions": {
    "allow_drill_down": true,
    "locked_filters": {"plan": "pro"},
    "hidden_widgets": ["internal_notes"],
    "allowed_dimensions": ["model", "endpoint"],
    "allowed_periods": ["7d", "30d"],
    "max_date_range_days": 30
  }
}

Permission fields

FieldTypeDefaultDescription
allow_drill_downbooltrueAllow click-to-filter and detail drill-down
locked_filtersobject{}Pre-applied filters the user cannot change
allowed_dimensionsstring[]allWhich filter dimensions are visible
hidden_widgetsstring[][]Widget IDs to remove from the embed surface
allowed_periodsstring[]allRestrict the period options shown in the filter bar
max_date_range_daysnumber0Maximum allowed date range in days; 0 means unlimited

Common policy patterns

Most customer-facing permission setups are not arbitrary. They repeat a small number of practical patterns.

Pattern 1 Locked plan view Use locked_filters to keep the dashboard scoped to one commercial slice, such as {"plan":"pro"}, without exposing that filter to the customer.
Pattern 2 Internal-only widget Use hidden_widgets to remove finance, support, or ops-only blocks from the published customer surface while keeping one dashboard definition.
Pattern 3 No drill for executive views Set allow_drill_down: false when the customer should see a stable summary surface, not click deeper into operational data.
Pattern 4 Bounded period control Use allowed_periods and max_date_range_days to keep the UI simple and prevent expensive or misleading long-range queries.
Pattern 5 Dimension-safe filtering Use allowed_dimensions to expose only the customer-facing slice of the filter bar, even if the underlying dashboard knows about more dimensions.
Validation path: check Tenants first, then Embed Runtime. Permissions narrow an already tenant-scoped published surface; they do not replace tenant isolation or server-side session minting.

Locked filters

Use locked filters to restrict data without the customer knowing. For example, show only "pro" plan data:

"locked_filters": {"plan": "pro"}

The filter is applied at query time and the dimension is hidden from the filter bar.

API key scopes

ScopeCan do
adminEverything: events, queries, dashboards, embed sessions, settings, API keys
ingestSend events only. Cannot read data or manage resources.

Team roles

RoleCapabilities
ownerFull access + delete org + change member roles
adminFull access + manage team + manage API keys
editorEdit dashboards, view settings
viewerView dashboards and data only