Skip to content

Commit f90dd5b

Browse files
committed
Updated annotations according to changes
1 parent 8f23aea commit f90dd5b

1 file changed

Lines changed: 107 additions & 57 deletions

File tree

src/routes/members.ts

Lines changed: 107 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)