Deployed at https://rcos-orca.herokuapp.com/docs (alternate docs)
ORCA gives you access to every course offered in a semester along with the sections scheduled with weekly periods. This includes:
- course title
- course id (e.g. BIOL-1010)
- course sections with
- crn
- id (section 01, 02, ...)
- how many credits it can be taken for
- current enrollment count
- max enrollment count
- url to textbooks (RPI Bookstore)
- section periods with
- type (lecture, recitation, lab, ...)
- start and end time
- days of the week it meets
- instructor(s)
- location
Look at the requests' example responses to see the full schemas.
ORCA periodically fetches its data from the SIS course search and the public page listing course sections with enrollment data in table format. Spring 2021 Example Theses pages are difficult to read and even more difficult to programmatically parse. The data is fetched and updated once every hour during the day each day, though it is unclear how often the Registrar updates the pages themselves.
This course data can be used for a variety of purposes small and large. Here are some examples:
- create your own scheduling interface (e.g. YACS or QuACS)
- create student tools that use course data
- used textbook marketplace
- study group organizers
- schedule visualizers
- schedule importers
- data visualizations
- map out locations of periods
- create directions for getting to and from classes
The Registrar evidently identifies semesters with a short numeric code comprising:
- 4-digit year the semester starts during
- 2-digit zero padded month the semester starts during
- (Arch) 2-digit code for specific part of semester
01
- Full Term02
- First Half03
- Seond Half
Examples
20210
Spring 2021202009
Fall 202020210501
Summer 2021 (Full Term)
Here is a visualization of the simple database schema used for the API. It also has the schema written in Database Markup Language.
ORCA is entirely open source and hosted on GitHub at Apexa/orca
Please report these on the GitHub repo at Apexa/orca!
- Frank Matranga (@Apexal)
- Joshua Wu (@123joshuawu)