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.viewWon-revenue period + open-pipeline value
high_priorityleadsleads.viewOpen (non-won/lost) leads with priority high only (not urgent); limited rows + total_count
follow_upsleadsleads.viewPending follow-ups
todays_follow_upsleadsleads.view
overdue_follow_upsleadsleads.view
recent_deals_closedleadsleads.viewRecently won leads
deals_closing_soonleadsleads.viewIncludes negotiation/proposal previews
upcoming_taskstaskstasks.view
overdue_taskstaskstasks.view
active_projectsprojectsprojects.viewActive status; visibility-scoped (assignee/member/creator or projects.assign)
overdue_projectsprojectsprojects.viewOpen + ends_on before workspace today
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. Projects widgets use assignee OR member OR creator visibility (or org-wide with projects.assign). 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 EloSync SaaS Platform.