A nodejs module to access listings from UCI's schedule of classes, WebSoc. This API allows access to school, department, course, and section data in a hierarchical JSON format.
Requires NodeJS 12
$ npm install --save websoc-api
To retrieve class listings, you just call the function you imported, callWebSocAPI
and pass in an object-literal
that configures what you're looking for, such as department, term, division etc.
Descriptions found here
Name | Formatting | Notes |
---|---|---|
term | [Year] ['Fall'|'Winter'|'Spring'|'Summer1'|'Summer2'|'Summer10wk'] Example: '2017 Fall' Default: ' ' |
Required. Schedule for your selected term must be available on WebSoc. |
ge | ['ANY'|'GE-1A'|'GE-1B'|'GE-2'|'GE-3'|'GE-4'|'GE-5A'|'GE-5B'|'GE-6'|'GE-7'|'GE-8'] Example: 'GE-1B' Default: ' ' |
Must specify at least one of department, GE, courseCodes, or instructorName |
department | List of available departments to search available in file depts.txt Example: 'I&C SCI' Default: ' ' |
Must specify at least one of department, GE, courseCodes, or instructorName |
courseNumber | Any valid course number or range Example: '32A' OR '31-33' Default: ' ' |
|
division | ['ALL'|'LowerDiv'|'UpperDiv'|'Graduate'] Example: 'LowerDiv' Default: 'ALL' |
|
sectionCodes | Any valid 5-digit course code or range Example: "36531" OR "36520-36536" Default: ' ' |
Must specify at least one of department, GE, courseCodes, or instructorName |
instructorName | Any valid instructor last name or part of last name Example: 'Thornton' Default: ' ' |
Enter last name only |
courseTitle | Any text Example: 'Intro' Default: ' ' |
|
sectionType | ['ALL'|'ACT'|'COL'|'DIS'|'FLD'|'LAB'|'LEC'|'QIZ'|'RES'|'SEM'|'STU'|'TAP'|'TUT'] Example: 'LAB' Default: 'ALL' |
|
units | Any integer or decimal with only tenths place precision, or 'VAR' to look for variable unit classes only. Example: '5' OR '1.3' Default: ' ' |
|
days | ['M'|'T'|'W'|'Th'|'F'] or a combination of these days Example: 'T' OR 'MWF' Default: ' ' |
|
startTime | Any time in 12 hour format Example: '10:00AM' OR '5:00PM' Default: ' ' |
Only enter sharp hours |
endTime | Any time in 12 hour format Example: '12:00AM' OR '6:00PM' Default: ' ' |
Only enter sharp hours |
maxCapacity | Exact number like '300' or modified with '<' or '>' to indicate less than specified or greater than specified. Example: '>256' OR '19' OR '<19' Default: ' ' |
|
fullCourses | ['ANY'|'SkipFullWaitlist'|'FullOnly'|'OverEnrolled'] 'SkipFullWaitlist' means that full courses will be included if there's space on the wait-list 'FullOnly' means only full courses will be retrieved 'OverEnrolled' means only over-enrolled courses will be retrieved Example:'SkipFullWaitlist' Default: 'ANY' |
|
cancelledCourses | ['Exclude'|'Include'|'Only'] Example: 'Include' Default: 'EXCLUDE' |
|
building | Any valid building code Example: 'DBH' Default: ' ' |
The value is a building code. Building codes found here: https://www.reg.uci.edu/addl/campus/ |
room | Any valid room number Example: '223' Default: ' ' |
You must specify a building code if you specify a room number |
// Import the module
import { callWebSocAPI } from 'websoc-api';
//Specify our search parameters
const opts = {
term: '2019 Fall',
GE: 'GE-2',
instructorName: 'Pattis'
}
// Call the module, and when the promise resolves, print out the JSON returned
const result = await callWebSocAPI(opts);
console.log(output);
The API serves its data in a hierarchical manner. The top level object is schools
.
Each school
in the array contains departments
, which contains courses
, which contain sections
.
Field | Type | Notes |
---|---|---|
schoolName | string | The name of the school like 'Donald Bren School of Information and Computer Science' |
schoolComment | string | |
departments | array of Department objects |
Field | Type | Notes |
---|---|---|
deptName | string | The name of the department like 'Informatics'. |
deptCode | string | The code of the department like 'IN4MATX'. |
deptComment | string | Comments that the department put on WebSoc. |
courses | array of Course objects | |
sectionCodeRangeComments | array | Comments associated with a range of sections. |
courseNumberRangeComments | array | Comments associated with a range of courses. |
Field | Type | Notes |
---|---|---|
courseNumber | string | Course number, like '33'. |
courseTitle | string | Course title, like 'INTERMEDIATE PRGRMG'. |
courseComment | string | |
prerequisiteLink | string | Link to the registrar's page where prerequistes are listed |
sections | array of Section objects |
Field | Type | Notes |
---|---|---|
sectionCode | string | |
sectionType | string | |
sectionNum | string | |
units | string | |
instructors | array | |
meetings | array of objects with fields "days", "time" and "bldg" | If the meeting is "TBA", the field "days" will be "TBA" and the others will be empty strings. |
finalExam | string | |
maxCapacity | string | |
numCurrentlyEnrolled | object with fields "totalEnrolled" and "sectionEnrolled" | When a course is crosslisted, it will have both fields filled, otherwise, "sectionEnrolled" will be an empty string. |
numOnWaitlist | string | |
numRequested | string | |
numNewOnlyReserved | string | |
restrictions | string | The restriction code definitions can be found here |
status | string | |
sectionComment | string |