Exam and Schedule Methods
Purpose and Scope
This document covers the exam and schedule-related methods in the WebPortal class. These methods allow retrieval of exam events, schedules, and venue information from the JIIT web portal. The methods work in a hierarchical flow: first retrieving available semesters with exam data, then getting exam events for a semester, and finally fetching detailed schedules for specific events.
For information about other data retrieval methods, see:
- Attendance data: Attendance Methods
- Grade and marks data: Academic Records Methods
- Registration data: Registration and Subject Methods
Overview
The exam and schedule functionality is implemented through three primary methods in the WebPortal class and one supporting data model class:
| Method | Purpose | Returns |
|---|---|---|
get_semesters_for_exam_events() |
Retrieves semesters that have exam events | Array<Semester> |
get_exam_events(semester) |
Gets exam events for a specific semester | Array<ExamEvent> |
get_exam_schedule(exam_event) |
Fetches detailed schedule for an exam event | Object |
The ExamEvent class (src/exam.js4-35) encapsulates exam event metadata required for schedule retrieval.
Sources: src/wrapper.js337-379 src/exam.js1-36 README.md87-92
Method Call Flow

Sources: src/wrapper.js337-379 README.md87-92
Method Reference
get_semesters_for_exam_events()
Retrieves the list of semesters for which exam events are available.
Signature:
async get_semesters_for_exam_events()
Parameters: None
Returns: Promise<Array<Semester>> - Array of semester objects containing exam events
Implementation Details:
- Endpoint:
/studentcommonsontroller/getsemestercode-withstudentexamevents(src/wrapper.js338) - Serializes payload with
clientid,instituteid, andmemberid(src/wrapper.js339-343) - Maps response array to
Semesterobjects usingSemester.from_json()(src/wrapper.js346) - Requires authentication (src/wrapper.js701)
API Request Payload Structure:
{
clientid: this.session.clientid,
instituteid: this.session.instituteid,
memberid: this.session.memberid
}
Sources: src/wrapper.js337-347
get_exam_events(semester)
Retrieves all exam events (e.g., Mid-term, End-term) for a specific semester.
Signature:
async get_exam_events(semester)
Parameters:
| Parameter | Type | Description |
|---|---|---|
semester |
Semester |
Semester object (from get_semesters_for_exam_events()) |
Returns: Promise<Array<ExamEvent>> - Array of exam event objects
Implementation Details:
- Endpoint:
/studentcommonsontroller/getstudentexamevents(src/wrapper.js355) - Uses
registationid(not a typo - API expects this spelling) from semester (src/wrapper.js358) - Parses response path:
response.eventcode.examevent(src/wrapper.js362) - Maps each event to
ExamEventinstances (src/wrapper.js362) - Requires authentication (src/wrapper.js702)
API Request Payload Structure:
{
instituteid: this.session.instituteid,
registationid: semester.registration_id // Note: API typo preserved
}
Sources: src/wrapper.js354-363
get_exam_schedule(exam_event)
Retrieves the detailed exam schedule and venue information for a specific exam event.
Signature:
async get_exam_schedule(exam_event)
Parameters:
| Parameter | Type | Description |
|---|---|---|
exam_event |
ExamEvent |
ExamEvent object (from get_exam_events()) |
Returns: Promise<Object> - Raw response object containing schedule details including dates, times, and venues
Implementation Details:
- Endpoint:
/studentsttattview/getstudent-examschedule(src/wrapper.js371) - Requires both
registration_idandexameventidfrom the ExamEvent (src/wrapper.js374-375) - Returns raw response object without additional processing (src/wrapper.js378)
- Requires authentication (src/wrapper.js703)
API Request Payload Structure:
{
instituteid: this.session.instituteid,
registrationid: exam_event.registration_id,
exameventid: exam_event.exam_event_id
}
Sources: src/wrapper.js370-379
ExamEvent Data Model
The ExamEvent class encapsulates exam event metadata required for schedule retrieval.

Class Properties:
| Property | Type | Description | Source Field |
|---|---|---|---|
exam_event_code |
string |
Event code identifier | exameventcode |
event_from |
number |
Timestamp for event start | eventfrom |
exam_event_desc |
string |
Human-readable event description | exameventdesc |
registration_id |
string |
Associated registration ID | registrationid |
exam_event_id |
string |
Unique exam event identifier | exameventid |
Static Methods:
from_json(resp): Constructs anExamEventinstance from API response JSON (src/exam.js26-34)
Sources: src/exam.js4-35
Data Flow Architecture

Sources: src/wrapper.js337-379 src/encryption.js5 src/exam.js4-35
Complete Usage Example
The following example demonstrates the complete workflow for retrieving exam schedules:
// Step 1: Authenticate
const portal = new WebPortal();
await portal.student_login('username', 'password');
// Step 2: Get semesters with exam events
const examSemesters = await portal.get_semesters_for_exam_events();
const latestSemester = examSemesters[0];
// Step 3: Get exam events for the semester
const examEvents = await portal.get_exam_events(latestSemester);
// Step 4: Retrieve schedule for each exam event
for (const event of examEvents) {
console.log(`Event: ${event.exam_event_desc}`);
const schedule = await portal.get_exam_schedule(event);
console.log(schedule);
}
Sources: README.md87-92 src/wrapper.js337-379
API Endpoint Reference
All exam-related methods use the following base API URL: https://webportal.jiit.ac.in:6011/StudentPortalAPI (src/wrapper.js14)
| Method | Endpoint Path | Controller |
|---|---|---|
get_semesters_for_exam_events() |
/studentcommonsontroller/getsemestercode-withstudentexamevents |
studentcommonsontroller |
get_exam_events() |
/studentcommonsontroller/getstudentexamevents |
studentcommonsontroller |
get_exam_schedule() |
/studentsttattview/getstudent-examschedule |
studentsttattview |
All requests:
- Use POST method (src/wrapper.js345 src/wrapper.js361 src/wrapper.js377)
- Require authentication tokens (src/wrapper.js701-703)
- Use AES-CBC encrypted payloads via
serialize_payload()(src/wrapper.js339 src/wrapper.js356 src/wrapper.js372) - Include
LocalNameheader for request identification (src/wrapper.js64-68)
Sources: src/wrapper.js14 src/wrapper.js337-379 src/wrapper.js701-703
Error Handling
All exam methods inherit the standard error handling behavior from the WebPortal.__hit() method:
| Error Type | Scenario | Exception Class |
|---|---|---|
| HTTP 513 | Portal temporarily unavailable | APIError |
| HTTP 401 | Session expired | SessionExpired |
| Not authenticated | Method called before login | NotLoggedIn |
| Invalid response | API returns non-Success status | APIError |
For comprehensive error handling documentation, see Error Handling.
Sources: src/wrapper.js97-158 src/wrapper.js679-719 src/exceptions.js1-50