@@ -15,99 +15,140 @@ export default function membersRouter(
1515 * @apiGroup Member
1616 *
1717 * @apiSuccess {Object[]} unapprovedMembers List of unapproved members.
18+ *
19+ * @apiExample {curl} Example usage:
20+ * curl -X GET http://localhost:3000/members/unapproved
1821 */
1922 router . get ( "/unapproved" , memberCtrl . getUnapprovedMembers ) ;
2023
2124 /**
22- * @api {get } /members/:memberId Get a member's details
23- * @apiName GetUserDetails
24- * @apiGroup Member
25- *
26- * @apiParam (URL Params) {String} memberId Member's unique ID.
27- *
28- * @apiSuccess {Object} user Member object.
29- * @apiError (Error 400) BadRequest No memberId provided.
30- */
25+ * @api {get } /members/:memberId Get a member's details
26+ * @apiName GetUserDetails
27+ * @apiGroup Member
28+ *
29+ * @apiParam (URL Params) {String} memberId Member's unique ID.
30+ *
31+ * @apiSuccess {Object} user Member object.
32+ * @apiError (Error 400) BadRequest No memberId provided.
33+ *
34+ * @apiExample {curl} Example usage:
35+ * curl -X GET http://localhost:3000/members/123
36+ */
3137 router . get ( "/:memberId" , memberCtrl . getUserDetails ) ;
32-
33- /**
38+
39+ /**
3440 * @api {get } /members List all approved members or get member by email
3541 * @apiName ListAllApprovedMembers
3642 * @apiGroup Member
3743 *
38- * @apiDescription
44+ * @apiDescription
3945 * - Returns a list of all approved members if no email query parameter is provided.
4046 * - If `email` query parameter is provided, returns the member associated with that email.
4147 *
42- * @apiQuery {String} [email] Optional email to fetch a specific member.
48+ * @apiQuery {String} [email] Optional email to fetch a specific member.
4349 *
4450 * @apiSuccess {Object} user Single user object when email provided.
45- + * @apiSuccess {Object[]} user Array of approved members when no email provided.
51+ * @apiSuccess {Object[]} user Array of approved members when no email provided.
4652 * @apiSuccess {String} [message] Message in case of full list fetch.
4753 *
4854 * @apiError (400) IncorrectEmail The provided email does not match any user.
55+ *
56+ * @apiExample {curl} Example usage (list all):
57+ * curl -X GET http://localhost:3000/members
58+ *
59+ * @apiExample {curl} Example usage (get by email):
60+ * curl -X GET "http://localhost:3000/members?email=john@example.com"
4961 */
5062 router . get ( "/" , memberCtrl . listAllApprovedMembers ) ;
5163
5264 /**
53- * @api {post } /members Create a new member
54- * @apiName CreateAMember
55- * @apiGroup Member
56- *
57- * @apiBody {String} email Email of the member.
58- * @apiBody {String} name Full name of the member.
59- * @apiBody {String} password Member's password.
60- * @apiBody {String} passoutYear Graduation year.
61- * @apiBody {String} imageUrl profile photo of the member.
62- *
63- * @apiSuccess {Object} user Created member object.
64- * @apiError (Error 402) ValidationError Required fields missing.
65- */
65+ * @api {post } /members Create a new member
66+ * @apiName CreateAMember
67+ * @apiGroup Member
68+ *
69+ * @apiBody {String} email Email of the member. (Required)
70+ * @apiBody {String} name Full name of the member. (Required)
71+ * @apiBody {String} password Member's password. (Required)
72+ * @apiBody {String} passoutYear Graduation year (Required, e.g., "2026").
73+ * @apiBody {String} provider Authentication provider (Required, e.g., "local", "google").
74+ * @apiBody {File} [file] Profile photo file (field name: "file").
75+ *
76+ * @apiSuccess {Boolean} success Request status.
77+ * @apiSuccess {Object} user Created member object.
78+ *
79+ * @apiError (Error 400) ApiError Required fields absent.
80+ * @apiError (Error 500) ServerError Error creating user.
81+ *
82+ * @apiExample {curl} Example usage:
83+ * curl -X POST -F "file=@profile.jpg" \
84+ * -F "email=john@example.com" \
85+ * -F "name=John Doe" \
86+ * -F "password=securePass123" \
87+ * -F "passoutYear=2026" \
88+ * -F "provider=local" \
89+ * http://localhost:3000/members
90+ */
91+
6692 router . post ( "/" , upload . single ( "file" ) , memberCtrl . createAMember ( supabase ) ) ;
6793
6894 /**
69- * @api {patch } /members/:memberId Update a member
70- * @apiName UpdateAMember
71- * @apiGroup Member
72- *
73- * @apiParam {String} memberId Member's unique ID.
74- *
75- * @apiBody {File} [file] Profile photo file (field name: "file").
76- * @apiBody {String} [name] Full name of the member.
77- * @apiBody {String} [email] Email address.
78- * @apiBody {String} [phone] Phone number.
79- * @apiBody {String} [bio] Short bio.
80- * @apiBody {String} [github] GitHub handle.
81- * @apiBody {String} [linkedin] LinkedIn handle.
82- * @apiBody {String} [twitter] Twitter handle.
83- * @apiBody {String} [geeksforgeeks] GeeksforGeeks username.
84- * @apiBody {String} [leetcode] LeetCode username.
85- * @apiBody {String} [codechef] CodeChef username.
86- * @apiBody {String} [codeforces] Codeforces username.
87- * @apiBody {Date} [passoutYear] Graduation year (ISO string format).
88- *
89- * @apiSuccess {Object} member Updated member object.
90- * @apiError (Error 404) NotFound Member not found.
91- * @apiError (Error 400) ValidationError Invalid or missing fields.
92- * @apiError (Error 500) ServerError Unexpected error occurred during update.
93- */
95+ * @api {patch } /members/:memberId Update a member
96+ * @apiName UpdateAMember
97+ * @apiGroup Member
98+ *
99+ * @apiParam {String} memberId Member's unique ID.
100+ *
101+ * @apiBody {String} memberData JSON string containing the member's updated details.
102+ * @apiBody {File} [file] Profile photo file (field name: "file").
103+ *
104+ * @apiBody (memberData fields) {String} [name] Full name of the member.
105+ * @apiBody (memberData fields) {String} [email] Email address.
106+ * @apiBody (memberData fields) {String} [phone] Phone number.
107+ * @apiBody (memberData fields) {String} [bio] Short bio.
108+ * @apiBody (memberData fields) {String} [github] GitHub handle.
109+ * @apiBody (memberData fields) {String} [linkedin] LinkedIn handle.
110+ * @apiBody (memberData fields) {String} [twitter] Twitter handle.
111+ * @apiBody (memberData fields) {String} [geeksforgeeks] GeeksforGeeks username.
112+ * @apiBody (memberData fields) {String} [leetcode] LeetCode username.
113+ * @apiBody (memberData fields) {String} [codechef] CodeChef username.
114+ * @apiBody (memberData fields) {String} [codeforces] Codeforces username.
115+ * @apiBody (memberData fields) {Date} [passoutYear] Graduation year (ISO string format).
116+ * @apiBody (memberData fields) {String} [profilePhoto] (Auto-assigned if a new file is uploaded).
117+ *
118+ * @apiSuccess {Boolean} success Request status.
119+ * @apiSuccess {Object} user Updated member object.
120+ *
121+ * @apiError (Error 400) ApiError No memberId provided or invalid request data.
122+ * @apiError (Error 404) NotFound Member not found.
123+ * @apiError (Error 500) ServerError Unexpected error occurred during update.
124+ *
125+ * @apiExample {curl} Example usage:
126+ * curl -X PATCH -F "file=@profile.jpg" \
127+ * -F 'memberData={"name":"John Doe","email":"john@example .com"}' \
128+ * http://localhost:3000/members/123
129+ */
94130 router . patch (
95131 "/:memberId" ,
96132 upload . single ( "file" ) ,
97133 memberCtrl . updateAMember ( supabase ) ,
98134 ) ;
99135
100136 /**
101- * @api {patch } /members/approve/:memberId Approve/reject a member
137+ * @api {patch } /members/approve/:memberId Approve a member
102138 * @apiName UpdateApprovalRequest
103139 * @apiGroup Member
104140 *
105141 * @apiParam (URL Params) {String} memberId Member ID.
106- * @apiBody {Boolean} isApproved Approval status.
107- * @apiBody {String} adminId Admin who approved.
142+ * @apiBody {Boolean} isApproved Approval status (true = approved, false = rejected) .
143+ * @apiBody {String} adminId ID of the admin who approved.
108144 *
109- * @apiSuccess {Object} update Approval status updated .
145+ * @apiSuccess {Object} update Approval status update result .
110146 * @apiError (Error 400) BadRequest Missing required fields.
147+ *
148+ * @apiExample {curl} Example usage:
149+ * curl -X PATCH http://localhost:3000/members/approve/123 \
150+ * -H "Content-Type: application/json" \
151+ * -d '{"isApproved": true, "adminId": "admin123"}'
111152 */
112153 router . patch ( "/approve/:memberId" , memberCtrl . updateRequest ) ;
113154
@@ -119,17 +160,23 @@ export default function membersRouter(
119160 * @apiParam (URL Params) {String} memberId Member ID.
120161 *
121162 * @apiSuccess {Object[]} achievements List of achievements.
163+ *
164+ * @apiExample {curl} Example usage:
165+ * curl -X GET http://localhost:3000/members/123/achievements
122166 */
123167 router . get ( "/:memberId/achievements" , memberCtrl . getUserAchievements ) ;
124168
125169 /**
126- * @api {get } /api/ members/:memberId/projects Get member's projects
170+ * @api {get } /members/:memberId/projects Get member's projects
127171 * @apiName GetUserProjects
128172 * @apiGroup Member
129173 *
130174 * @apiParam (URL Params) {String} memberId Member ID.
131175 *
132176 * @apiSuccess {Object[]} projects List of projects.
177+ *
178+ * @apiExample {curl} Example usage:
179+ * curl -X GET http://localhost:3000/members/123/projects
133180 */
134181 router . get ( "/:memberId/projects" , memberCtrl . getUserProjects ) ;
135182
@@ -141,6 +188,9 @@ export default function membersRouter(
141188 * @apiParam (URL Params) {String} memberId Member ID.
142189 *
143190 * @apiSuccess {Object[]} interviews List of interviews.
191+ *
192+ * @apiExample {curl} Example usage:
193+ * curl -X GET http://localhost:3000/members/123/interviews
144194 */
145195 router . get ( "/:memberId/interviews" , memberCtrl . getUserInterviews ) ;
146196
0 commit comments