/
API Documentation

API Documentation

Updated: 03-05-2024

Relevant data the the Nebula API provides. Course Evals coming soon.

Professor

https://api.utdnebula.com/professor

API Response

professorGroup.GET("", controllers.ProfessorSearch())

  • returns an array of Professor’s

    • Not exactly sure if the array is everything that matches search terms

professorGroup.GET(":id", controllers.ProfessorById())

  • returns a Professor

    • Based on the id

professorGroup.GET("all", controllers.ProfessorAll())

  • Returns an array of Professor’s

    • I presume it’s all Professors?

What is a Professor:

A Professor represents a professor employed at the University of Texas at Dallas.

Professor = {

    "_id": ObjectId,

    "first_name": string,

    "last_name": string,

    "titles": Array<string>,

    "email": string,

    "phone_number": string,

    "office": Location,

    "profile_uri": string,

    "image_uri": string,

    "office_hours": Array<Meeting>,

    "sections": Array<ObjectId>,

}

In Trends/Skedge

  • Currently only Skedge uses this


Grades

https://api.utdnebula.com/grades/

API Response

gradesGroup.GET("semester", controllers.GradesAggregation("semester"))

  • Returns an array of grades that fit the search criteria

gradesGroup.GET("overall", controllers.GradesAggregation("overall"))

  • Returns an array of grades but combines all semester grade distributions for one “grade”

If the search parameter:

  • Has prefix; No number, section number, or professor

    • Filter on Course

  • Has prefix, number; No section number or professor

    • Filter on Course

  • Has prefix, number, and section number; No professor

    • Filter on Course and then Section

  • Has professor; No prefix, number, or section number

    • Filter on Professor

      • Using first name only

      • Using last name only

      • Using first name and last name

  • Has prefix and professor; No number or section number

    • Filter on Section

      • Match Course and Professor IDs

    • Aggregates grades of valid course-x-professor sections

      • “matching on the course_reference and professor”

    • Then finds valid professor IDs

      • Last name only

      • First name only

      • First name or Last name

    • Gets valid course IDs

Then aggregates by “semester” or “overall”

In Trends/Skedge

  • Generates/Sets possible academic sessions

  • Then sets actual academic session for each “grade”

    • Stores in fullGradesData[]


Autocomplete

https://api.utdnebula.com/api/autocomplete?input=

API Response

autocompleteGroup.GET("/dag", controllers.AutocompleteDAG())

  • Returns an Array of Maps (key-value pairs) for each search suggestion

 

In Trends/Skedge

  • Trends uses it to fill in the suggestions (or replaces old search suggestions)

type SearchQuery = {

  prefix?: string;

  number?: string;

  profFirst?: string;

  profLast?: string;

  sectionNumber?: string;

}


Section

https://api.utdnebula.com/api/section

API Response

sectionGroup.GET("", controllers.SectionSearch())

  • Returns an array of possible Section’s based on search parameters (Course Reference, Professor)

sectionGroup.GET(":id", controllers.SectionById())

  • Returns a Section using the ID

What is a Section:

A Section object is the instantiation of a Course object with a professor, meeting times, and a grade distribution.

Section = {

    "_id": ObjectId,

    "section_number": string,

    "course_reference": ObjectId,

    "section_corequisites": CollectionRequirement,

    "academic_session": AcademicSession,

    "professors": Array<ObjectId>,

    "teaching_assistants": Array<Assistant>,

    "internal_class_number": string,

    "instruction_mode": string,

    "meetings": Array<Meeting>,

    "core_flags": Array<string>,

    "syllabus_uri": string,

    "grade_distribution": Array<number>,

    "attributes": Object,

}

What is an Academic Session:

An AcademicSession represents the time period in which courses takes place.

AcademicSession = {

"name": string,

"start_date": string,

"end_date": string,

}

In Trends/Skedge

  • Section is not used (everything is aggregated)

    • Trends does not do an API call to GET an individual Section; as of now, it calls for an aggregation of grades


Course

https://api.utdnebula.com/api/course

API Response

courseGroup.GET("", controllers.CourseSearch())

  • Returns an array of Courses that match search parameters

courseGroup.GET(":id", controllers.CourseById())

  • Returns a Course using its ID

courseGroup.GET("all", controllers.CourseAll())

  • Returns an array of all Courses

What is a Course:

In Trends/Skedge

  • Not used


Sources:

Mostly from the Controllers and Routes files in the Nebula-API GitHub

And the API files in the UTD-Trends GitHub