Skip to content

aemmadi/coursebook-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

coursebook-api

Unofficial API for UT Dallas Coursebook

This was a fun sophomore summer project. I will maintain this API till 2022/2023. Just open an issue if you have any suggestions or something is breaking the API. UTD coursebook sometimes makes some subtle changes that break the API, I have tried my best to account for those in my API but it might not be perfect.

Prettier API Docs

v1 Routes

Specific Class Details

GET /v1/:term/:course/:section : Returns a single object for requested class.

Click to expand

Parameters:

  • term :
    • Semester term
    • Formatting: <two-digit year><single letter semester>
    • Examples: 20f, 18s
  • course :
    • Course number with subject code
    • Formatting: <subject code><number>
    • Examples: cs4337, math2414, hist1301
  • section :
    • Section number
    • Formatting: <three-digit section number>
    • Examples: 001, 0w1, HON

Response:

{
  "data": {
    "class_attributes": string[],
    "class_info": {
      "add_consent": string,
      "class_level": string,
      "class_section": string,
      "course_number": string,
      "date/time": string,
      "grading": string,
      "mode": string,
      "semester_credit_hours": string,
      "type": string
  },
  "college": string,
  "course_title": string,
  "description": string,
  "enrollment_reqs": string,
  "evaluation": string,
  "instructor": string[],
  "schedule": {
      "ends": string,
      "misc": string[],
      "starts": string,
      "term": string,
      "type": string
  },
  "status": {
      "available_seats": string,
      "enrolled_total": string,
      "enrollment_status": string,
      "waitlist": string
  },
  "syllabus": string,
  "ta/ra": string
  }
}

Class Details For All Sections (Broken for now)

GET /v1/<course> : Returns an array of objects with class details for every section in current semester

Click to expand

Parameters:

  • course :
    • Course number with subject code
    • Formatting: <subject code><number>
    • Examples: cs4337, math2414, hist1301

Grades Data

Source: UTDGrades

GET /v1/grades/:term/:course : Returns an array of objects for all sections in the course with appropriate grades

Click to expand

Parameters:

  • term:
    • Semester term
    • Formatting: <two-digit year><single letter semester>
    • Examples: 20f, 18s
  • course :
    • Course number with subject code
    • Formatting: <subject code><number>
    • Examples: cs4337, math2414, hist1301

Response:

{
  "data": [
    {
      "grades": {
          "A": int,
          "A+": int,
          "A-": int,
          "B": int,
          "B+": int,
          "B-": int,
          "C": int,
          "C+": int,
          "C-": int,
          "D": int,
          "F": int,
          "W": int
      },
      "num": string,
      "prof": string,
      "sect": string,
      "subj": string,
      "term": string
    },
    { ... },
    { ... }
  ]
}

GET /v1/grades/:term/:course/:section: Returns a single object with grade data for the given course and section

Click to expand

Parameters:

  • term:
    • Semester term
    • Formatting: <two-digit year><single letter semester>
    • Examples: 20f, 18s
  • course :
    • Course number with subject code
    • Formatting: <subject code><number>
    • Examples: cs4337, math2414, hist1301
  • section :
    • Section number
    • Formatting: <three-digit section number>
    • Examples: 001, 0w1, HON

Response:

{
  "data": {
    "grades": {
        "A": int,
        "A+": int,
        "A-": int,
        "B": int,
        "B+": int,
        "B-": int,
        "C": int,
        "C+": int,
        "C-": int,
        "D": int,
        "F": int,
        "W": int
    },
    "num": string,
    "prof": string,
    "sect": string,
    "subj": string,
    "term": string
  }
}

Professor Data

Source: UTD Directory

GET /v1/prof/:name: Returns an array of objects for all professors matched with the given :name

Click to expand

Parameters:

  • name:
    • String to search directory with
    • When providing full name encode spaces with %20
    • Examples: John, Mazidi, john%20cole

Response:

{
  "data": [
    {
        "department": string,
        "email": string,
        "mailstop": string,
        "name": string,
        "office": string,
        "phone": string,
        "title": string
    },
    { ... }
  ]
}

Contributing

Feel free to fork the repository and pull request it.

Branch naming convention:

  • feature/<name-of-feat>: Feature branch, new features, usually labelled as Enhancements in issues. Example: feature/professor-data
  • bug/<name-of-bug>: Bug branch, bug fixes, usually labelled as Bug in issues. Example: bug/heading-format
  • internal/<name>: Internal branch, internal improvements, misc. items go under this branch, labelled accordingly as Internal in issues. Example: internal/refactor
  • update/<name-of-feat>: Update branch, update existing features, not neccessarily a bug fix. Example: update/data-storage

Make sure to comment your code so that it would be easy to review it. Work on any issue you are interested in fixing, or just want to tidy up my inefficient code :)