Endpoint reference¶
Generated from the service’s own OpenAPI schema, so it cannot drift from the
routes. A running service serves the same thing interactively at /docs.
Every endpoint is a POST. Data travels in the body rather than the query
string, because it carries a session that must not end up in a URL, a proxy log
or a browser history.
Authentication¶
- POST /auth/login¶
Login
Opens a VTOP session.
Credentials are sent here once and never again: the response carries a session that every data endpoint accepts. That matters because VTOP’s login is captcha gated and costs around a dozen requests, so repeating it per call is slow and hard on the portal.
VTOP challenges for an OTP after a period of inactivity or when the login comes from an IP it has not seen — which a server is, by definition. That is a normal outcome rather than a failure, so it returns 200 with status: “otp_required” and a challenge to post to /auth/verify_otp.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /auth/verify_otp¶
Verify Otp
Finishes a login that VTOP interrupted with an OTP.
Post the OTP the student received together with the otp_challenge from /auth/login, unchanged. On success the response is the same shape as a login that was never challenged.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /auth/resend_otp¶
Resend Otp
Asks VTOP to send a fresh OTP for a challenge already in flight.
Use this when the OTP expired, rather than logging in again — a new login would invalidate this challenge and make the student wait for another captcha-gated attempt. The challenge stays valid, so keep using it.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
Student data¶
- POST /student/semesters¶
Get Semesters
Fetches the semesters available to the student.
The ids returned here are what every sem_sub_id parameter on the other endpoints expects, so prefer this over hardcoding semester ids.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/profile¶
Get Profile
Fetches the student’s profile information using VTOP credentials.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/all_data¶
Get All Student Data
Fetches comprehensive student data (profile, attendance, timetable) for the specified semester using VTOP credentials.
This endpoint combines multiple data fetches into a single request for efficient initial data loading/caching in frontend applications.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/attendance¶
Get Attendance
Fetches attendance data for the specified semester using VTOP credentials.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/attendance_detail¶
Get Attendance Detail
Fetches the per-class register behind one course’s attendance row.
course_id and course_type come from an entry in /student/attendance – its course_id and course_type_code. Neither is the course code.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/capstone_attendance¶
Get Capstone Attendance
Fetches capstone/SDP attendance for a semester.
Kept apart from /student/attendance because VTOP counts it per semester rather than per course. Students without a capstone get null, which is a normal answer rather than an error.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/timetable¶
Get Timetable
Fetches the timetable for the specified semester using VTOP credentials.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/marks¶
Get Marks
Fetches all the marks for the specified semester using VTOP credentials
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/exam_schedule¶
Get Exam Schedule
Fetches all exam schedule for the specified semester using VTOP credentials
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/grade_history¶
Get Grade History
Fetches the student’s grade history (CGPA, credits registered/earned) using VTOP credentials.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/grade_view¶
Get Grade View
Fetches the graded courses of a semester.
Grades appear only once a semester has ended, so the current semester returns an empty list until results publish. That is expected.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/grade_view_detail¶
Get Grade View Detail
Fetches one course’s mark breakdown and class statistics.
course_id comes from an entry in /student/grade_view.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/biometric¶
Get Biometric
Fetches biometric (entry/exit) logs for a specific date using VTOP credentials.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/mentor¶
Get Mentor
Fetches details of the student’s assigned mentor using VTOP credentials.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
Calendar¶
- POST /student/calendar¶
Get Academic Calendar
Fetches the whole semester’s calendar as one date-ordered list of days.
This walks every month, so it is several requests against VTOP. Prefer /student/calendar/month when you only need one.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/calendar/class_groups¶
Get Class Groups
Fetches the calendar class groups available for a semester.
Class groups are semester dependent, so list them here rather than assuming the “COMB” default the other calendar endpoints use.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/calendar/months¶
Get Months
Fetches the months the calendar covers for a semester.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/calendar/month¶
Get Month
Fetches a single month of the calendar, day by day.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
Faculty¶
- POST /student/faculty¶
Get All Faculty
Fetches the entire faculty directory.
This is a large response – around 850 records – so cache it rather than calling it per page view.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/faculty/search¶
Search Faculty
Searches the faculty directory and returns the first match.
The search term is a name or an employee id. An empty model comes back when nothing matches, rather than an error.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/faculty/details¶
Get Faculty Details
Fetches one faculty member’s profile and weekly office hours.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
Course page¶
- POST /student/course_page/courses¶
Get Courses
Fetches the courses in the course page’s dropdown for a semester.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/course_page/slots¶
Get Slots
Fetches the slots for one course, along with its class rows.
class_id comes from /student/course_page/courses.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/course_page/detail¶
Get Course Detail
Fetches a course’s lectures and reference material.
erp_id and class_id both come from /student/course_page/slots.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
Digital assignments¶
- POST /student/digital_assignments¶
Get Digital Assignments
Fetches every course’s digital assignments for a semester.
VTOP serves the course list and each course’s assignments from separate endpoints, so this fans out one request per course. That is deliberate but not cheap – prefer /student/digital_assignments/course when you already know the class id.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/digital_assignments/course¶
Get Course Assignments
Fetches one course’s digital assignments by class id.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
Payments and outing¶
- POST /student/pending_payments¶
Get Pending Payments
Fetches the list of pending payments.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/payment_receipts¶
Get Payment Receipts
Fetches the list of pending payments.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/general_outing_requests¶
Get General Outing Responses
Fetches all the previously submitted Genneral Outing requests.
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key
- POST /student/weekend_outing_requests¶
Get Weekend Outing Responses
Fetches all the previously submitted Weekend Outing requests
- Status Codes:
200 OK – Successful Response
422 Unprocessable Entity – Validation Error
- Request Headers:
X-API-Key