This document lists all available API endpoints in the College ERP system.
http://localhost:5000/api/v1
POST /auth/register
Request Body:
{
"name": "string",
"email": "string",
"password": "string",
"phone": "string",
"role": "ADMIN|HOD|ACCOUNTANT"
}POST /auth/login
Request Body:
{
"email": "string",
"password": "string"
}POST /auth/refresh
POST /auth/logout
POST /students
Access: ADMIN, HOD
GET /students
Query Parameters:
- status: Student status filter
- courseId: Filter by course
- sessionId: Filter by session
- search: Search by name, email, or registration number
Access: ADMIN, HOD
GET /students/:id
Access: ADMIN, HOD, STUDENT (own record)
PATCH /students/:id
Access: ADMIN, HOD
DELETE /students/:id
Access: ADMIN
POST /students/:id/semester
Access: ADMIN, HOD
PATCH /students/:studentId/semesters/:semesterId
Access: ADMIN, HOD
POST /departments
Access: ADMIN
GET /departments
Access: ADMIN, HOD
GET /departments/:id
Access: ADMIN, HOD
PATCH /departments/:id
Access: ADMIN
DELETE /departments/:id
Access: ADMIN
POST /courses
Access: ADMIN
GET /courses
Access: ADMIN, HOD
GET /courses/:id
Access: ADMIN, HOD
PATCH /courses/:id
Access: ADMIN
DELETE /courses/:id
Access: ADMIN
POST /subjects
Access: ADMIN
GET /subjects
Access: ADMIN, HOD
GET /subjects/:id
Access: ADMIN, HOD
PATCH /subjects/:id
Access: ADMIN
DELETE /subjects/:id
Access: ADMIN
POST /semesters
Access: ADMIN
GET /semesters
Access: ADMIN, HOD
GET /semesters/:id
Access: ADMIN, HOD
PATCH /semesters/:id
Access: ADMIN
DELETE /semesters/:id
Access: ADMIN
POST /semesters/auto-assign
Access: ADMIN
POST /semesters/promote
Access: ADMIN
POST /admissions
Access: ADMIN, HOD
GET /admissions
Query Parameters:
- status: Admission status filter
- courseId: Filter by course
- studentId: Filter by student
Access: ADMIN, HOD
GET /admissions/:id
Access: ADMIN, HOD
PATCH /admissions/:id/status
Access: ADMIN, HOD
POST /admissions/windows
Access: ADMIN
GET /admissions/windows
Query Parameters:
- courseId: Filter by course
- departmentId: Filter by department
- enabled: Filter by enabled status
Access: ADMIN, HOD
GET /admissions/windows/:id
Access: ADMIN, HOD
PATCH /admissions/windows/:id
Access: ADMIN
DELETE /admissions/windows/:id
Access: ADMIN
POST /payments
Access: ADMIN, ACCOUNTANT
GET /payments
Query Parameters:
- status: Payment status filter
- studentId: Filter by student
- courseId: Filter by course
Access: ADMIN, ACCOUNTANT, HOD
GET /payments/:id
Access: ADMIN, ACCOUNTANT, HOD, STUDENT (own payments)
PATCH /payments/:id/status
Access: ADMIN, ACCOUNTANT
POST /payments/:id/refund
Access: ADMIN, ACCOUNTANT
POST /files/upload
Form Data:
- file: File to upload
- type: Document type
- studentId: Associated student ID
Access: ADMIN, HOD
GET /files/:id
Access: ADMIN, HOD, STUDENT (own files)
GET /files/:id/download
Access: ADMIN, HOD, STUDENT (own files)
PATCH /files/:id/verify
Access: ADMIN, HOD
GET /audit
Query Parameters:
- userId: Filter by user
- action: Filter by action
- entity: Filter by entity type
- entityId: Filter by entity ID
- startDate: Filter by start date
- endDate: Filter by end date
- page: Page number (default: 1)
- limit: Results per page (default: 50)
Access: ADMIN
GET /audit/:id
Access: ADMIN
GET /audit/entity/:entity/:entityId
Access: ADMIN, HOD
GET /audit/user/:userId
Access: ADMIN, HOD
GET /audit/export
Query Parameters:
- startDate: Filter by start date
- endDate: Filter by end date
- format: Export format (json or csv, default: json)
Access: ADMIN
GET /audit/stats
Query Parameters:
- days: Number of days to include (default: 30)
Access: ADMIN
GET /audit/recent
Query Parameters:
- limit: Number of recent logs (default: 50)
Access: ADMIN
POST /certificates
Request Body:
{
"studentId": "string",
"type": "BONAFIDE|CLC",
"purpose": "string",
"departmentId": "string"
}Access: STUDENT, ADMIN, HOD
GET /certificates
Query Parameters:
- studentId: Filter by student
- type: Filter by certificate type
- status: Filter by status
- departmentId: Filter by department
Access: ADMIN, HOD, STUDENT (own requests)
GET /certificates/:id
Access: ADMIN, HOD, STUDENT (own requests)
PATCH /certificates/:id/status
Request Body:
{
"status": "APPROVED|REJECTED|ISSUED",
"notes": "string"
}Access: ADMIN, HOD
POST /certificates/:id/issue
Access: ADMIN, HOD
GET /certificates/:id/download
Access: STUDENT (own certificates), ADMIN, HOD
DELETE /certificates/:id
Access: ADMIN, STUDENT (own pending requests)
POST /cms/gallery
Access: ADMIN
GET /cms/gallery
Query Parameters:
- search: Search by title
Access: PUBLIC
GET /cms/gallery/:id
Access: PUBLIC
PATCH /cms/gallery/:id
Access: ADMIN
DELETE /cms/gallery/:id
Access: ADMIN
POST /cms/news
Access: ADMIN
GET /cms/news
Query Parameters:
- search: Search by title or body
- isPublished: Filter by published status (ADMIN only)
Access: PUBLIC (published only), ADMIN (all)
GET /cms/news/:id
Access: PUBLIC (published only), ADMIN (all)
PATCH /cms/news/:id
Access: ADMIN
DELETE /cms/news/:id
Access: ADMIN
POST /cms/notices
Access: ADMIN
GET /cms/notices
Query Parameters:
- search: Search by title or body
Access: PUBLIC
GET /cms/notices/:id
Access: PUBLIC
PATCH /cms/notices/:id
Access: ADMIN
DELETE /cms/notices/:id
Access: ADMIN
GET /health
Access: PUBLIC
GET /
Access: PUBLIC