Skip to content

Tenant API v1 — Department performance reports

Base path: /api/tenant/v1

Middleware: auth:tenant-api, tenant.user, not.suspended, verified, module:departments, can:dashboard.view.

Authorization is enforced in the Form Request: workspace owner (superadmin) or an active department manager (isDepartmentManager()). Staff without manager scope receive 403.

GET /reports/department-performance

Aggregated leads/tasks metrics by department for a date range. Counts include records created within the period and assigned to performance-eligible users in each department (direct members, linked employee users, and the department manager). Open / won / lost (leads) and open / completed (tasks) use each record’s current stage/status flags at query time — not historical stage changes within the period.

Query:

ParamTypeNotes
fromdateOptional. Defaults to start of current workspace month.
todateOptional. Defaults to today. Must be on or after from.

Visibility

Requires dashboard.view (route middleware) and one of the rows below.

ActorDepartments returned
Workspace owner (superadmin) with dashboard.viewAll active departments
Department manager with dashboard.viewActive departments where manager_id = user id
Others (including managers missing dashboard.view)403 Forbidden

Response data

json
{
  "period": { "from": "2026-08-01", "to": "2026-08-05" },
  "departments": [
    {
      "id": 1,
      "name": "Sales",
      "slug": "sales",
      "manager": { "id": 2, "name": "Alex Manager" },
      "leads": { "available": true, "open": 3, "won": 1, "lost": 0, "total": 4 },
      "tasks": { "available": true, "open": 2, "completed": 5, "total": 7 }
    }
  ],
  "totals": {
    "leads": { "available": true, "open": 3, "won": 1, "lost": 0, "total": 4 },
    "tasks": { "available": true, "open": 2, "completed": 5, "total": 7 }
  }
}

When Leads or Tasks is not installed, the corresponding available flag is false and counts are zero.

Weekly digest (scheduled)

Command: reports:send-department-digest

Schedule: Mondays at 08:00 in the application timezone (routes/console.phpweeklyOn(1, '08:00'); default UTC unless app.timezone / schedule_timezone is configured). For each tenant, previous calendar week bounds are computed after applying that workspace’s Settings → General timezone.

Recipients: workspace owners + active department managers (non-suspended), still gated by canAccessReport() (dashboard.view + owner or manager). Notification: DepartmentPerformanceDigestNotification via database + mail. Idempotency: daily_summary_deliveries.kind = department_weekly per user per week start date.

See Departments developer guide and Departments user guide.

Official documentation for the EloSync SaaS Platform.