GET
/connections
List connections

Students see their mentor connections, mentors see their mentee connections, admins see all. Each item is a ConnectionDetail with both parties' user summary and profile.

Query

FieldNotes
status, page, pageSizeAll optional.
GET
/connection/:id
Get one connection

Returns the connection detail, the linked conversation id, and whether the current user can still submit a rating (they have not already rated this connection).

Response

{
  "connection": {
    "connection": {
      "id": 30,
      "status": "active"
    }
  },
  "conversationId": 501,
  "canRate": true
}
POST
/connection/:id/end
End a connection

The student, mentor, or an admin can end an active connection. Status becomes ended_by_student, ended_by_mentor, or ended_by_admin accordingly, and the other party is notified.

Request fields

FieldNotes
reasonOptional.
POST
/ratings
Rate the other person in a connection

Only someone who was part of the connection, rating the other party. Requires at least one of overallRating or adminOnlyFeedback, so feedback can be left alone without scoring every category. Only one rating per user per connection (409 on a repeat).

Request fields

FieldNotes
connectionId, ratedUserIdRequired.
helpfulnessRating, knowledgeRating, politenessRating, responsivenessRating, seriousnessRating, communicationRating, overallRatingOptional integers, 1-5.
adminOnlyFeedbackOptional written feedback, never shown publicly.

Response

{
  "ratingId": 55
}
GET
/ratings
List ratings

Normal users see ratings they submitted; admins see all. Ratings are never public.

Query

FieldNotes
page, pageSizeOptional.
POST
/reports
Report a user

Creates an open report for admin review. If a connection or interest request is referenced, the reporting user must be part of it.

Request fields

FieldNotes
reportedUserId, reportTypeRequired. reportType is one of inappropriate_message, harassment, dishonest_profile, unprofessional_behaviour, safety_concern, spam, inappropriate_profile_picture, other.
connectionId, interestRequestId, conversationId, messageIdOptional context.
reportDetailsOptional.
POST
/blocks
Block a user

Prevents future mentor suggestions, interest requests, and messages between the two users. 409 if already blocked.

Request fields

FieldNotes
blockedUserIdRequired.
reasonOptional.
DELETE
/block/:id
Remove a block

Only the user who created the block can remove it. Matching and messaging may resume unless blocked for another reason.

Response

{
  "removed": true
}