Dashboard, activity & settings

General account-level endpoints. Backed by dashboard.py and main.py.

GET /api/dashboard

The single call the portal’s home screen uses to render everything at once. Backed by dashboard.py (~1,460 lines — the richest aggregation endpoint in the module).

{
  "success": true,
  "dashboard": {
    "company": "Acme Corp",
    "user": "Jane Doe",
    "email": "jane@acme.com",
    "tenant": { "...": "..." },
    "status": "active",
    "version": "18.0",
    "subscription": { "...": "..." },
    "configuration": { "...": "..." },
    "instances": [ "..." ],
    "statistics": { "...": "..." },
    "activities": [
      { "id": 1, "title": "Instance acme.dishonkadoh.com backed up" }
    ]
  }
}

Because this single response feeds the whole dashboard, treat it as the first thing to check when the portal’s home screen looks wrong or stale — most home-screen bugs trace back to one field inside this payload rather than a separate endpoint.

GET /api/me

Returns the authenticated user’s own profile (id, name, login, admin flag) — a lighter-weight version of the user block embedded in /api/login’s response, useful for silently re-validating a stored token on app start.

GET /api/activity

Tenant-wide activity feed (the same records that populate dashboard.activities, but paginated/filterable independently of the full dashboard call).

GET /api/settings and PUT /api/settings/update

Tenant/account-level settings (company details, notification preferences, etc.) — read and update.