Simple, Sane Course Scheduling. YACS is a web-based course scheduler with an emphasis on usability. YACS is 100% RPI home-grown and hosted. To use it, visit https://yacs.cs.rpi.edu
The old version of YACS (yacs.me) by Jeff Hui still exists but will not be updated. For the latest information and fastest experience use the RPI site!
Visit our blog for more updates and information.
Our iOS app repository can be found at https://github.com/JGrippo/YACSiOS
The YACS API is now in version 5. Continued support for versions <= 4 (yacs.me) should not be expected. Previous versions provided data for courses across multiple semesters, however this functionality has been removed (for now). Only information for the current registration semester will be provided.
The API provides four endpoints for accessing catalog data, and all data is available in JSON format.
-
/api/v5/schools.json
The Schools API returns the id and name of one or many schools.
{ "schools": [ { "id": 7, "name": "School of Humanties, Arts, and Social Sciences" }, { "id": 9, "name": "School of Engineering" } ] }
Queries available for Schools:
/api/v5/schools.json?id=<id>
(likeshow
method)/api/v5/schools.json?id=<id>,<id>,<id>
If you wish to include the associated departments of each school in the response, use the show_departments directive query. This query can be chained with any other query.
/api/v5/schools.json?show_departments
/api/v5/schools.json?id=<id>&show_departments
-
/api/v5/departments.json
The departments API returns id, name, code, and school_id of one or many departments.
{ "departments": [ { "id": 42, "name": "Computer Science", "code": "CSCI", "school_id": 3 }, { "id": 2, "name": "Math", "code": "MATH", "school_id": 16 } ] }
Queries available for Departments:
/api/v5/departments.json?id=<id>
(likeshow
method)/api/v5/departments.json?id=<id>,<id>,<id>
/api/v5/departments.json?school_id=<school_id>
(likeshow
method)/api/v5/departments.json?school_id=<school_id>,<school_id>,<school_id>
If you wish to include the associated courses of each department in the response, use the show_courses directive query. This query can be chained with any other query.
/api/v5/departments.json?show_courses
/api/v5/departments.json?id=<id>&show_courses
-
/api/v5/courses.json
The Courses API returns the id, name, number, description, min_credits, and max_credits, and department_id of one or many courses.
{ courses: [ { "id": 11, "name": "Data Structures", "number": 1200, "description": "Programming concepts: functions, parameter passing, pointers, arrays, strings, structs, classes, templates. Mathematical tools: sets, functions, and relations, order notation, complexity of algorithms, proof by induction. Data structures and their representations: data abstraction and internal representation, sequences, trees, binary search trees, associative structures. Algorithms: searching and sorting, generic algorithms, iterative and recursive algorithms. Methods of testing correctness and measuring performance.Prerequisites/Corequisites: Prerequisite: CSCI 1100 or permission of instructor.When Offered: Fall and spring terms annually", "min_credits": 4, "max_credits": 4, "department_id": 42 }, { "id": 27, "name": "Calculus II", "number": 1010, "description": "Techniques and applications of integration, polar coordinates, parametric equations, infinite sequences and series, vector functions and curves in space, functions of several variables, and partial derivatives.Prerequisites/Corequisites: Prerequisite: MATH 1010.When Offered: Fall and spring terms annually.", "min_credits": 4, "max_credits": 4, "department_id": 2 } ] }
Queries available for Courses:
/api/v5/courses.json?id=<id>
(likeshow
method)/api/v5/courses.json?id=<id>,<id>,<id>
/api/v5/courses.json?department_id=<department_id>
(likeshow
method)/api/v5/courses.json?department_id=<department_id>,<department_id>,<department_id>
In addition to primary/foreign key queries, courses can be full-text searched. The api will attempt to match a given search query against several columns in the course table and its associated tables. This allows you to search against a course's name and number, its department's name and code, and the instructors of its sections. Again, the columns searched are:
* course.name * course.number * department.name * department.code * section.instructors
A search query can be given as a plain-old url-formatted string, with search terms separated by spaces. The courses returned are the closest matches to the provided query, in order of how closely they match the query.
/api/v5/courses.json?search=<some url formatted string>
If you wish to include the associated sections of each course in the response, use the show_sections directive query. This query can be chained with any other query.
/api/v5/courses.json?show_sections
/api/v5/courses.json?id=<id>&show_sections
If
show_sections
is used, then the periods of each section can be included with the show_periods directive query. This query can be chained with any other query./api/v5/courses.json?show_sections&show_periods
/api/v5/courses.json?id=<id>&show_sections&show_periods
{ courses: [ { "id": 65, "name": "Data Structures", "number": 1200, "description": "Programming concepts: functions, parameter passing, pointers, arrays, strings, structs, classes, templates. Mathematical tools: sets, functions, and relations, order notation, complexity of algorithms, proof by induction. Data structures and their representations: data abstraction and internal representation, sequences, trees, binary search trees, associative structures. Algorithms: searching and sorting, generic algorithms, iterative and recursive algorithms. Methods of testing correctness and measuring performance.Prerequisites/Corequisites: Prerequisite: CSCI 1100 or permission of instructor.When Offered: Fall and spring terms annually", "min_credits": 4, "max_credits": 4, "department_id": 42, "sections": [ < see sections api > ] }, { "id": 27, "name": "Calculus II", "number": 1010, "description": "Techniques and applications of integration, polar coordinates, parametric equations, infinite sequences and series, vector functions and curves in space, functions of several variables, and partial derivatives.Prerequisites/Corequisites: Prerequisite: MATH 1010.When Offered: Fall and spring terms annually.", "min_credits": 4, "max_credits": 4, "department_id": 2, "sections": [ < see sections api > ] } ] }
-
/api/v5/sections.json
The Sections API returns the id, name (number), crn, course_id, seats (total), and seats_taken, and instructors of one or many sections, as well as the type, day, start, and end of all of their associated periods. The start and end are times in military form as strings.
{ sections: [ { "id": 108, "name": "01", "crn": 87654, "course_id": 65, "seats": 10, "seats_taken": 5, "instructors": ["Goldschmidt", "Krishnamoorthy"], "num_periods": 2 }, { "id": 112, "name": "02", "crn": 87655, "course_id": 65, "seats": 10, "seats_taken": 10, "instructors": [], "num_periods": 2 } ] }
Queries available for Sections:
/api/v5/sections.json?id=<id>
(likeshow
method)/api/v5/sections.json?id=<id>,<id>,<id>
/api/v5/sections.json?course_id=<course_id>
(likeshow
method)/api/v5/sections.json?course_id=<course_id>,<course_id>,<course_id>
If you wish to include the associated periods (meetings/blocks/etc.) of each section in the response, use the show_periods directive query. This query can be chained with any other query.
/api/v5/sections.json?show_periods
/api/v5/sections.json?id=<id>&show_periods
{ sections: [ { "id": 108, "name": "01", "crn": 87654, "course_id": 65, "seats": 10, "seats_taken": 5, "instructors": ["Goldschmidt", "Krishnamoorthy"], "periods": [ { "type": "LEC" "day": 1, "start": "0800", "end": "0950" }, { "type": "LEC" "day": 4, "start": "0800", "end": "0950" } ] }, { "id": 112, "name": "02", "crn": 87655, "course_id": 65, "seats": 10, "seats_taken": 10, "instructors": [], "periods": [ { "type": "LEC" "day": 1, "start": "1000", "end": "1050" }, { "type": "LEC" "day": 4, "start": "1000", "end": "1050" } ] } ] }