Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Introduction 

...

Input can be provided in the form of HTTP GET URL parameters (which should be URL encoded properly) or an HTTP POST/PUT body that is in application/x-www-form-urlencoded. Most parameters are optional, when this is not the case this is mentioned in the documentation. Dates and times can be specified in one of the following format:

  • 'today' or 'tomorrow' for the current or next day at 0:00;
  • Unix timestamp format (in milliseconds sinds 1970, so don't forget to multiply/divide by 1000);
  • ISO 8601 format (yyyy-MM-ddTHH:mm:ss±HH:mm): elements on the right side (time, time zone) are optional;
  • Legacy format (yyyy/MM/dd HH:mm): the time is optional.

Authentication and authorisation

...

Code Block
languagenone
{
    "timetableType": [
        "location", 
        "zone", 
        "module", 
        "student", 
        "staff", 
        "pos", 
        "posss", 
        "studentset", 
        "studentsetgroup", 
        "modulegroup", 
        "user",
		"tag"
    ]
}

/timetabletypesdetails   (since MyTimetable 3.0)

MethodGET

Description: Query all possible timetable types and return them including some details regards naming, whether or not they can include child timetables and their ordering in the menus. 

...

/timetables/{key}/options    (since MyTimetable 3.1)

MethodGET

Description: Query the available options for the specified timetable. These options can be set on the subscription using the PUT call on a subscription. The allEquivalent boolean in the output will be true if any choice of options results in the same timetable.

...

/timetables/{parent}/{key}/options    (since MyTimetable 3.1)

MethodGET

Description: Query the available options for the specified child of a timetable. These options can be set on the subscription using the PUT call on a subscription. The allEquivalent boolean in the output will be true if any choice of options results in the same timetable.

...

/subscriptions/{key}/options     (since MyTimetable 3.1)

MethodPUT

Description: Set selected options of a subscription. Specifying all possible options will cause the list of selected options to be cleared, showing the complete timetable to the user.

...

/subscriptions/{parent}/{key}/options     (since MyTimetable 3.1)

MethodPUT

Description: Set selected options of a subscription nested under a parent. Specifying all possible options will cause the list of selected options to be cleared, showing the complete timetable to the user.

...

Description: Query information on the current user. Currently this returns the username and the iCalendar

Requires scope username or user_read (since MyTimetable 2019.21, includes user roles). To retrieve the iCalendar feed URL for the current user, scope profile_read is required.

Parameters: none

Request URL

...

Code Block
languagenone
{
    "feedUrl": "http://myuniversity/ical?eu=FKW92Fawier&t=556cf8a1-704a-4997-bc4d-5acf395eccaf",
    "username": "testuser",
    "roles": [
        "ROLE_STUDENT",
        "ROLE_MEMBER"
    ]
}

/weeklabels   (deprecated since MyTimetable 2.7, replaced by: /weeklabelmaps)

Method: GET

Description: Query the weeklabels. This provides custom labels for the weeks when available. The response includes a value (the custom label) and a week (year - 1900 + the ISO week number).

...

Code Block
languagejs
{
    weeklabel: [
        {
            "week": 11223,
            "value": "23"
        },
        {
            "week": 11224,
            "value": "24"
        }
    ]
}

/weeklabelmaps   (since MyTimetable 2.7)

MethodGET

Description: Query the weeklabel maps. This provides the available maps with custom labels for the weeks. Per weeklabel map, the response includes a key and a boolean which indicates whether the map is the default weeklabel map for the requested user.

...

Code Block
languagejs
{
    "weeklabelmaps": [
        {
            "key": "SYLLABUS",
            "isDefault": true
        }
    ]
}

/weeklabelmaps/{key}   (since MyTimetable 2.7)

MethodGET

Description: Retrieve the specified weeklabel map. This provides the key, a boolean which indicates if this is the default weeklabel map for the requested user and the actiual map with custom labels for the weeks.

...

Code Block
languagejs
{
    "key": "SYLLABUS",
    "isDefault": true,
    "weeklabels": [
        {
            "year": 2014,
            "week": 4,
            "description": "wk 4"
        },
        {
            "year": 2014,
            "week": 5,
            "description": "wk 5"
        }
    ]
}

/databases    (deprecated since MyTimetable 3.1, replaced by: /databasedetails)

MethodGET

Description: Query the available datasources, see 3114172430 for more information. For MyTimetable 3.1+, please use the /databasedetails call, which also provides the labels of the databases.

...

Code Block
languagenone
{
    "database": [
        "2011"
    ]
}

/databasedetails   (since MyTimetable 3.1)

MethodGET

Description: Query the available datasources, see 3114172430 for more information. The key (to be used in the query string of other calls) and the label are returned.

...

Code Block
languagenone
{
    "databases": [
        {
            "key": "2015",
            "label": "2015/2016"
        },
        {
            "key": "2016",
            "label": "2016/2017"
        },
        {
            "key": "TimetableDB",
            "label": "Custom"
        }
    ]
}

/eventtypegroups   (since MyTimetable 3.0)

Method: GET

Description: Query the event type groups and event filtering settings.

...

Code Block
languagenone
$base_url/api/v0/eventtypegroups

Request Content-Type

application/x-www-form-urlencoded

Example request body

Code Block
languagenone
eventTypeGroups%5BExcursie%5D%5BisFiltered%5D=true&eventTypeGroups%5BHoorcollege%5D%5BisFiltered%5D=false&eventTypeGroups%5BOther%5D%5BisFiltered%5D=false

...

204 (No content), 403 (Forbidden) if filtering is disabled.

/terms   (since MyTimetable 3.4)

MethodGET

Description: Query the available terms. Returns a list of terms, each containing of a unique id, a key (may be null), a name and a list of date ranges.

...

Code Block
languagenone
{
    "terms": [
        {
            "dateRanges": [
                {
                    "endDate": 1513983600000,
                    "startDate": 1504476000000
                },
                {
                    "endDate": 1535925600000,
                    "startDate": 1514847600000
                }
            ],
            "id": "2017!492E26C5A6F3BDE74C11240C046C2FB1",
            "key": null,
            "name": "[2017/2018] All year"
        },
        {
            "dateRanges": [
                {
                    "endDate": 1535925600000,
                    "startDate": 1504476000000
                }
            ],
            "id": "TermTime!13",
            "key": "All",
            "name": "[Term Time] All year"
        }
    ]
}


/user/messages   (since MyTimetable 4.0)

Note: this API endpoint always returns application/json as Content Type. XML is not supported.

Method: GET

Description: Query the active messages for the current user (as identified by the OAuth token or elevated API token). Requires scope messages_read.

...

Response code

200 (OK)

/messages   (since MyTimetable 4.0)

Note: this API endpoint always returns application/json as Content Type. XML is not supported.

Method: GET

Description: Retrieves messages. Requires API token scope ROLE_API_MESSAGES.

...

Request Content-Type header

application/x-www-form-urlencoded

Example request body

Code Block
languagenone
title=This%20is%20the%20title%20of%20a%20non-expiring%20message%20targeted%20to%20students%20marked%20as%20important.&body=%23%20This%20is%20a%20header%20formatted%20with%20Markdown%0AThis%20is%20some%20content.&important=true&publicationDate=2019-01-02&expirationDate=&targetRoles=ROLE_STAFF&targetRoles=ROLE_STUDENT

...

201 (Created) if the message is created, 400 (Bad Request) if input validation fails

/messages/{id}   (since MyTimetable 4.0)

Note: this API endpoint always returns application/json as Content Type. XML is not supported.

Method: GET

Description: Retrieves the message with the given ID. Requires API token scope ROLE_API_MESSAGES.

...

Request Content-Type header

application/x-www-form-urlencoded

Example request body

Code Block
languagenone
title=This%20is%20the%20edited%20title%20of%20a%20non-expiring%20message%20targeted%20to%20students%20marked%20as%20important.&body=%23%20This%20is%20an%20edited%20header%20formatted%20with%20Markdown%0AThis%20is%20some%20content.&important=false&publicationDate=2019-03-11&expirationDate=&targetRoles=ROLE_STAFF&targetRoles=ROLE_STUDENT

...