GET
/student-dashboard
Student dashboard

One compound response: profile, suggested mentors (empty until the profile is complete), dashboard counts, recent requests, and active connections.

Response

{
  "user": {
    "id": 1,
    "userType": "student"
  },
  "studentProfile": null,
  "suggestedMentors": [],
  "counts": {
    "pendingRequests": 0,
    "activeConnections": 0,
    "unreadMessages": 0
  },
  "recentRequests": [],
  "activeConnections": []
}
GET
/mentor-dashboard
Mentor dashboard

One compound response: profile, pending/active/capacity/unread counts, recent requests, and active connections.

Response

{
  "user": {
    "id": 2,
    "userType": "mentor"
  },
  "mentorProfile": null,
  "counts": {
    "pendingRequests": 0,
    "activeMentees": 0,
    "remainingCapacity": 1,
    "unreadMessages": 0
  },
  "recentRequests": [],
  "activeConnections": []
}
Admin-only

Every endpoint below requires the current user's userType to be admin (403 otherwise), and every state change is recorded to audit_log.

GET
/admin/users
List users for review

Search and filter users, with enough context to review them (profiles, active connections, reports received) without exposing message contents.

Query

FieldNotes
userType, status, search, page, pageSizeAll optional.

Response

{
  "items": [
    {
      "user": {
        "id": 2,
        "userType": "mentor",
        "status": "active"
      },
      "counts": {
        "activeConnections": 1,
        "reportsReceived": 0
      }
    }
  ],
  "page": 1,
  "pageSize": 20,
  "totalItems": 1
}
PATCH
/admin/user/:id
Update a user's status

Sets the user to active, disabled, or blocked. Disabled/blocked users are excluded from matching and cannot send messages.

Request fields

FieldNotes
statusRequired. One of active, disabled, blocked.
reasonOptional, stored in the audit entry.
GET
/admin/reports
List reports for review

Open and historical reports, filterable by status or type.

Query

FieldNotes
status, reportType, page, pageSizeAll optional.
PATCH
/admin/report/:id
Update a report's status

Marks a report reviewed/resolved and stores admin notes.

Request fields

FieldNotes
statusRequired. One of open, under_review, resolved, dismissed.
adminNotesOptional.