Skip to content

Tenant API v1 — Dashboard

Base path: /api/tenant/v1

GET /dashboard

Middleware: auth:tenant-api, tenant.user, verified, subscription. Authorization: dashboard.view.

Returns workspace chrome plus a widget registry. Widgets are filtered by installed module, Spatie permission, and assignee scope.

Payload

KeyDescription
welcomeGreeting string
workspaceCompany / slug / email / timezone / currency / locale
installed_modulesActive module subscriptions (slug, name, status)
widgetsOrdered list of widget objects (see below)
scopeorg if the user has leads.assign or tasks.assign (or superadmin); otherwise mine

Widget shape

json
{
  "id": "pipeline_overview",
  "module": "leads",
  "permission": "leads.view",
  "scope": "org",
  "data": {}
}

module may be null for core widgets. scope is org or mine for the data inside data.

Registered widgets (Sprint 2)

idModule gatePermissionNotes
pipeline_overviewleadsleads.viewCounts / values by stage
lead_sourcesleadsleads.viewSource breakdown
revenue_pipelineleadsleads.viewOpen-pipeline lead_value totals
todays_follow_upsleadsleads.view
overdue_follow_upsleadsleads.view
deals_closing_soonleadsleads.view
upcoming_taskstaskstasks.view
overdue_taskstaskstasks.view
calendarcalendarcalendar.viewUpcoming events; scoped by calendar.view_all
activity_feeddashboard.viewRecent lead/task activity
notificationsdashboard.viewUnread count + recent (scoped to current user)
quick_actionsdashboard.viewShortcuts gated by module + permission

Leads/tasks widgets apply assignee scoping: without the module’s *.assign permission, data is limited to the current user’s assignments. Calendar uses calendar.view_all for org vs mine (no calendar assignment).

Explicitly not included

  • Dedicated Week/Day dashboard widgets (Week/Day live on the Calendar page), Meetings host assignment, external calendar sync

Implementation: App\Services\Tenant\DashboardWidgetService.

Official documentation for the SaleOS SaaS Platform.