Skip to content

2. Club Routes

Abdullah bin Ammar edited this page May 20, 2025 · 2 revisions

Routes Overview for club.js

Note

These routes handle club creation, updates, and memberships with role-based access control.

Method Endpoint Description
GET /clubs/ Retrieve all clubs (public).
GET /clubs/:clubUuid Get specific club by UUID (public).
POST /clubs/ Create a new club (INMA_ADMIN only).
PUT /clubs/:clubUuid Update a club (INMA_ADMIN or Club Admin).
DELETE /clubs/:clubUuid Delete a club (INMA_ADMIN only).
PUT /clubs/:clubUuid/term-reset Reset club term (INMA_ADMIN or Club Admin).

Membership Management

Method Endpoint Description
GET /clubs/:clubUuid/memberships Get all memberships for a club (Admin roles only).
GET /clubs/:clubUuid/memberships/:membershipUuid Get specific membership (Admin roles only).
POST /clubs/:clubUuid/memberships Create a membership (Admin roles only).
PUT /clubs/:clubUuid/memberships/:membershipUuid Update membership (Admin roles only).
POST /clubs/:clubUuid/memberships/me Join a club (User only).
DELETE /clubs/:clubUuid/memberships/me Leave a club (Club member only).
DELETE /clubs/:clubUuid/memberships/:membershipUuid Delete membership (Admin roles only).

Key Features

  • 🏛 Club Management: Full CRUD for clubs with validation.
  • 👥 Membership Control: Join, leave, create, update, or delete memberships based on roles.
  • 🔒 Role-Based Access: Middleware protects each route with authorize(...).
  • 🧪 Validation: Uses Zod schemas to validate input (insertClubSchema, updateClubMembershipSchema, etc.).
  • 🔄 Term Reset: Admins can archive all memberships and tasks using the term-reset route.

Club Operations

Get All Clubs

GET /clubs/

Returns paginated list of all clubs.


Get Club by UUID

GET /clubs/:clubUuid

Returns a single club.


Create a Club

POST /clubs/

Creates a new club.

Requires: INMA_ADMIN
Body Schema: insertClubSchema


Update a Club

PUT /clubs/:clubUuid

Updates a club.

Requires: INMA_ADMIN or CLUB_ADMIN
Body Schema: updateClubSchema


Delete a Club

DELETE /clubs/:clubUuid

Deletes a club permanently.

Requires: INMA_ADMIN


Reset Club Term

PUT /clubs/:clubUuid/term-reset

Archives inactive/denied memberships and tasks.

Requires: INMA_ADMIN or CLUB_ADMIN


Membership Routes

Get All Memberships

GET /clubs/:clubUuid/memberships

Returns all memberships for the given club.

Roles: INMA_ADMIN, UNI_ADMIN, SUPERVISOR, CLUB_ADMIN, HR


Get Membership by UUID

GET /clubs/:clubUuid/memberships/:membershipUuid

Returns a single membership entry.


Create Membership

POST /clubs/:clubUuid/memberships

Admin-initiated member creation.

Roles: INMA_ADMIN, CLUB_ADMIN, HR


Update Membership

PUT /clubs/:clubUuid/memberships/:membershipUuid

Update membership role or tag.


Join Club (Self-initiated)

POST /clubs/:clubUuid/memberships/me

Used by a regular user to request joining a club.


Leave Club

DELETE /clubs/:clubUuid/memberships/me

Allows a club member to leave.


Delete Membership

DELETE /clubs/:clubUuid/memberships/:membershipUuid

Admin-initiated delete.


Clone this wiki locally