Table of Contents

The following is a list of API endpoints the website supports.

/api/courses.json

The courses endpoint is a list of all course exam statistics present on the website. It contains an unsorted array of all grade report pages without the descriptions.

You can find the grade report summary calculation code in either course.html or course.mjs. The automatic mapping of hours (semester working hours) to ects for imports can be found in course_functions.py. It is not always correct, but offers an acceptable default.

  • school is one of the items in the schools API.
  • examType is either endterm or retake.
  • semester is in the format YYYY(W|S)S
  • name is the full English name of the course from the TUMOnline website.
  • date is the date and time of the exam. When the contributor doesn't specify it, a default is used, so it shouldn't be relied on.

Imagining this endpoint to be exported from a database, <school,code,semester,examType> would be the unique primary key.

[
    {
        "school": "CIT",
        "code": "IN0004",
        "semester": "2011WS",
        "examType": "endterm",
        "name": "Introduction to Computer Organization and Technology - Computer Architecture",
        "date": "2012-02-15 12:00:00 +0100",
        "ects": 8,
        "hours": 6.0,
        "mode": "written",
        "lang": "en",
        "peopleTotal": 359,
        "peopleFailed": 76,
        "attemptsTotal": 312,
        "attemptsFailedPercent": 0.24358974358974358,
        "averageTotal": 3.386217948717949,
        "averagePassed": 3.0271186440677966,
        "grades": [
            {
                "grade": 1.0,
                "people": 4
            },
            //...
        ]
    },
    //...
]

/api/schools.json

The schools endpoint is a list of all supported schools, institutes, and departments present on the website. It contains an unsorted array of all school pages without the descriptions.

Note that this list is incomplete and is expanded manually when a course from a new school or department is added. The course code prefix is compared against deps to assign a school. The automatic mapping of deps to school code for imports can be found in course_functions.py.

[
    {
        "code": "CIT",
        "name": "School of Computation, Information and Technology",
        "link": "https://www.cit.tum.de/en/",
        "deps": [
            {
                "code": "EI",
                "link": "https://www.ei.tum.de/",
                "name": "Electrical and Computer Engineering"
            },
            //...
        ]
    },
    //...
]