Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
The Purdue.io database is organized into a database of entities with different kinds of relationships to one other. This database is exposed via OData to allow API users to write flexible, powerful queries against course catalog data.
Understanding the catalog hierarchy
Courses are organized into several different entities based on specificity. Here's an example of each to help you gain a complete understanding.
Term: A semester at Purdue, such as Spring 2015.
Subject: A particular subject, such as Mathematics (MA) or Computer Science (CS).
Course: A particular course at Purdue, such as MA261 (Multivariate Calculus). Course entities are not tied to any specific Term - they define one course at it has and always will exist - so MA261 in Fall 2007 will be the same Course entity as MA261 in Spring 2014. Courses do, however, belong to a Subject.
Class: A particular offering of a course in a specific Term with a specific set of Sections. Think "MA261 Fall 2014 with Ben Wiles (and all associated recitations, etc.)".
Section: A particular Section (Lab, Recitation, Lecture) of a Class offering. Sections can have several Meetings (see below).
Meeting: A particular meeting time, date, instructor, and location for a Section. Some sections can have multiple varying meeting times and locations.
For most scenarios, the catalog hierarchy looks something like this:
Subject / Course / Class / Section / Meeting
In addition to these entities, there are more to describe the campus, buildings, rooms, etc. Understanding the relationships between these entities should be easier - see below.
Below you'll find a list of each entity, and what kind of data it contains.
|TermId||Guid||A unique identifier for a specific term.|
|TermCode||String||Official myPurdue term code, i.e. "201520".|
|Name||String||Name of the term, i.e. "Spring 2015".|
|StartDate||DateTimeOffset||Starting date of the term, i.e. "2015-01-12T00:00:00Z".|
|EndDate||DateTimeOffset||Ending date of the term, i.e. "2015-05-12T00:00:00Z".|
|Classes||Array<Class>||A list of Class entities in this Term.|
|SubjectId||Guid||A unique identifier for a specific subject.|
|Name||String||Official subject name, i.e. "Mathematics".|
|Abbreviation||String||Subject standard abbreviation, i.e. "MA".|
|Courses||Array<Course>||A list of Course entities in this Subject.|
|CourseId||Guid||A unique identifier for a specific course.|
|Number||String||Course number in a 5 digit string, i.e. "26100".|
|Title||String||Title of the course, i.e. "Multivariate Calculus".|
|CreditHours||Double||Numeric value of credits for the course, i.e. "4.0".|
|Description||String||Course description and/or notes, i.e. "Evening Exams Required".|
|Classes||Array<Class>||A list of Class entities.|
|ClassId||Guid||A unique identifier for a specific class.|
|Sections||Array<Section>||A list of Section entities.|
|SectionId||Guid||A unique identifier for a specific section.|
|CRN||String||The official number of a section that Purdue uses for reference, i.e. "13342".|
|Type||String||The type of the section, i.e. "Lecture".|
|RegistrationStatus||String||Status of the section's registration, i.e. "NotAvailable".|
|StartDate||DateTimeOffset||Starting date of the section, i.e. "2015-01-12T00:00:00Z".|
|EndDate||DateTimeOffset||Ending date of the section, i.e. "2015-01-12T00:00:00Z".|
|Capacity||Int32||Maximum number of students that can enroll in the section, i.e. 108.|
|Enrolled||Int32||Number of students currently enrolled in the section, i.e. 10.|
|RemainingSpace||Int32||Number of seats available in the section, i.e. 98.|
|WaitlistCapacity||Int32||Number of students allowed on the section's waitlist, i.e. 36.|
|WaitlistCount||Int32||Number of students currently on the section's waitlist, i.e. 0.|
|WaitlistSpace||Int32||Number of spaces available on the section's waitlist, i.e. 36.|
|Class||Class||Class entity that this section belongs to|
|Meetings||Array<Meeting>||List of meetings held in this section.|
|MeetingId||Guid||A unique identifier for a specific meeting.|
|Type||String||The type of the meeting, i.e. "Lecture".|
|StartDate||DateTimeOffset||Starting date of the meeting, i.e. "2015-01-12T00:00:00Z".|
|EndDate||DateTimeOffset||Ending date of the meeting, i.e. "2015-01-12T00:00:00Z".|
|DaysOfWeek||String||A comma delimited list of days the meeting takes place, i.e. "Monday, Wednesday, Friday".|
|StartTime||DateTimeOffset||Time at which the meeting takes place, i.e. "2014-10-27T08:30:00Z".|
|Duration||TimeSpan||Length of time of the meeting, i.e. "PT50M".|
|Section||Section||Section entity that this meeting belongs to.|
|Instructors||Array<Instructor>||List of instructors teaching this meeting.|
|Room||Room||Room entity that this meeting takes place in.|
|InstructorId||Guid||A unique identifier for a specific instructor.|
|Name||String||Name of a specific instructor, i.e. "Peter W. Cook".|
|String||Email address of the instructor.|
|Meetings||Array<Meeting>||List of Meeting entities this instructor teaches.|
|CampusId||Guid||A unique identifier for a specific campus.|
|Code||String||Abbreviation for a specific campus, i.e. "PWL".|
|Name||String||Name of the campus.|
|ZipCode||String||Zip code of the campus.|
|Buildings||Array<Building>||A list of Building entities that are on this campus.|
|BuildingId||Guid||A unique identifier for a specific building.|
|Name||String||Official name of the building, i.e. "Class of 1950 Lecture Hall".|
|ShortCode||String||Abbreviation of the building, i.e. "CL50".|
|Campus||Campus||Campus entity that this Building belongs to.|
|Rooms||Array<Room>||A list of Room entities that are in this building.|
|RoomId||Guid||A unique identifier for a specific room.|
|Number||String||Room number, i.e. "B150".|
|Building||Building||Building entity that this Room belongs to.|
|Meetings||Array<Meeting>||A list of Meeting entities that take place in this room.|