Not affilliated with the University of Waterloo
The Waterloo Works API provides access to applications, interviews and jobs in Waterloo Works. It does this by logging into Waterloo Works on behalf of the user using Puppeteer, a headless browser for Node.js, navigating to the appropriate page and parsing the data on the page. MongoDB is used to cache jobs for faster loading. It does not store or remember any user information.
$ npm install
$ npm start
$ npm test
All API calls have been added to a postman collection.
POST /auth/login
Validates the user's credentials.
username: String required the username
password: String required the password
status: 'OK' | 'Error' the status of the request
message?: String the error message
POST /application/get
Gets the user's applications for a specific term.
username: String required the username
password: String required the password
selectedTerm: String optional the term to which to get applications, defaults to the current job search term
status: 'OK' | 'Error' the status of the request
jobIds: [String] an array of job ids the user applied to
jobs: {...} map of the jobs
Look at applicationsLib to get a better idea of the return value.
POST /jobs/get
Get a job that the user applied to.
username: String required the username
password: String required the password
selectedTerm: String required the term to which to get applications, defaults to the current job search term
jobId: String required the job id
status: 'OK' | 'Error' the status of the request
job: { ... } the job
Look at jobsLib to get a better idea of the return value.
POST /jobs/db/get
Get a job from the database if it exists.
jobId: String required the job id
status: 'OK' | 'Error' the status of the request
job: { ... } the job
Look at jobsLib to get a better idea of the return value.
POST /interviews/get
Get a user's interviews.
username: String required the username
password: String required the password
numOfDays: Number optional the number of days to get interviews for, defaults to -1 which is all
status: 'OK' | 'Error' the status of the request
interviewIds: [String] the interview ids
interviews: {...} map of the interviews
Look at interviewsLib to get a better idea of the return value.
POST /interviews/get-interview
Get interview details for a user's interview.
username: String required the username
password: String required the password
interviewId: String required the interview id
status: 'OK' | 'Error' the status of the request
interview: {...} map of the interview details
Look at interviewsLib to get a better idea of the return value.