You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
POST /api/platform/v1/mentors is anonymous. The server always sets profileStatus = PENDING regardless of input.
Re-registering with an email already tied to a member reuses that member.id and re-issues a PENDING status. No duplicate member row is created.
Calendly link is required at registration (per PM); validate URL format. Missing or malformed → 4xx.
Cycle preference combinations accepted at registration:
longTerm populated only → long-term only.
adHoc non-empty only → ad-hoc only.
Both populated → both.
Long-term commitment validation: LongTermMentorship.hours / numMentee >= 2. Submissions with hoursPerMentee < 2 are rejected with IllegalArgumentException from MentorshipService.validateMentorCommitment.
PATCH /mentors/{id}/accept (permission MENTOR_APPROVE) transitions to ACTIVE and sends the approval email. Calling on an already-active mentor → MentorStatusException.
PATCH /mentors/{id}/reject (permission MENTOR_APPROVE) requires a reason in the body; transitions to REJECTED and sends the rejection email. Calling on an already-rejected mentor → MentorStatusException.
After accept, mentor appears on the website and is selectable in the list in mentee registration.
After reject, mentor does not appear in the website.
POST /api/platform/v1/mentorsis anonymous. The server always setsprofileStatus = PENDINGregardless of input.member.idand re-issues aPENDINGstatus. No duplicate member row is created.longTermpopulated only → long-term only.adHocnon-empty only → ad-hoc only.LongTermMentorship.hours / numMentee >= 2. Submissions withhoursPerMentee < 2are rejected withIllegalArgumentExceptionfromMentorshipService.validateMentorCommitment.PATCH /mentors/{id}/accept(permissionMENTOR_APPROVE) transitions toACTIVEand sends the approval email. Calling on an already-active mentor →MentorStatusException.PATCH /mentors/{id}/reject(permissionMENTOR_APPROVE) requires a reason in the body; transitions toREJECTEDand sends the rejection email. Calling on an already-rejected mentor →MentorStatusException.