Skip to content
Hayden McAfee edited this page May 14, 2017 · 10 revisions

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.

Basic Class Diagram

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.

Entity Docs

Below you'll find a list of each entity, and what kind of data it contains.

Term

Property Type Description
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.

Subject

Property Type Description
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.

Course

Property Type Description
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".
Subject Subject Subject entity.
Classes Array<Class> A list of Class entities.

Class

Property Type Description
ClassId Guid A unique identifier for a specific class.
Course Course Course entity.
Term Term Term entity.
Campus Campus Campus entity.
Sections Array<Section> A list of Section entities.

Section

Property Type Description
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.

Meeting

Property Type Description
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.

Instructor

Property Type Description
InstructorId Guid A unique identifier for a specific instructor.
Name String Name of a specific instructor, i.e. "Peter W. Cook".
Email String Email address of the instructor.
Meetings Array<Meeting> List of Meeting entities this instructor teaches.

Campus

Property Type Description
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.

Building

Property Type Description
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.

Room

Property Type Description
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.