Authentifizierung
Für den Zugriff auf die API der Privaten Hochschule für Wirtschaft und Technik (PHWT) wird ein JSON Web Token (RFC 7519) benötigt. Dieser Web Token muss im HTTP-Header als Bearer-Token übertragen werden. Dabei ist die nachfolgende Struktur zu beachten:
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
Die Erzeugung und Vergabe der Web Token wird automatisiert durch den Server übernommen. Jeder mit einem gültigen PHWT Benutzerkonto (Ilias, studip) kann sich Web Tokens ausstellen lassen. Dazu wird der Benutzername und Passwort des Nutzers benötigt. Nach einer erfolgreichen Anmeldung, liefert der Server einen Access-Token und einen Refresh-Token zurück. Der Access-Token wird für den Zugriff auf die API verwendet und besitzt eine zeitliche Gültigkeit von 15 Minuten. Der Refresh-Token wird verwendet, um einen neuen Access-Token zu erzeugen, wenn dieser nach 15 Minuten seine Gültigkeit verloren hat. Der Refresh-Token hat eine zeitliche Gültigkeit von 3 Stunden. Nach dem zeitlichen Ablauf von 3 Stunden, ist eine erneute Anmeldung des Nutzers erforderlich.
Login
curl --location --request POST 'https://app.phwt.de/api/v1/auth/login' \
--header 'Authorization: Basic <credentials>'
The above command returns JSON structured like this:
{
"access_token": "<access_token>",
"refresh_token": "<refresh_token>"
}
Mit diesem API Endpunkt werden die für den Zugriff auf die API benötigten Web Token ausgestellt. Die Authorisierung erfolgt durch HTTP Basic Authentication (RFC 2617). Im HTTP-Header ist der Benutzername und das Passwort des Nutzers Base64 codiert zu übertragen.
HTTP Request
POST https://app.phwt.de/api/v1/auth/login
Header Parameter
Authorization: Basic <credentials>
Refresh
curl --location --request POST 'https://app.phwt.de/api/v1/auth/refresh' \
--header 'Authorization: Bearer <refresh_token>'
The above command returns JSON structured like this:
{
"access_token": "<access_token>"
}
Mit diesem API Endpunkt wird ein neuer Access-Token mit einer zeitlichen Gültigkeit von 15 Minuten ausgestellt.
HTTP Request
POST https://app.phwt.de/api/v1/auth/refresh
Header Parameters
Authorization: Bearer <refresh_token>
Logout
url --location --request POST 'https://app.phwt.de/api/v1/auth/logout' \
--header 'Authorization: Bearer <access_token>'
The above command returns JSON structured like this:
{
"msg": "Successfully logged out"
}
Mit diesem API Endpunkt wird der Access-Token und der Refresh-Token des Nutzers für ungültig deklariert.
HTTP Request
POST https://app.phwt.de/api/v1/auth/logout
Header Parameters
Authorization: Bearer <access_token>
Datenzugriffe
Bevor auf die Daten zugregriffen werden kann, muss eine Authentifizierung erfolgen, sodass man einen Access-Token erhält. Dieser ist bei den Abfragen zu verwenden. Sollte dieser abgelaufen sein, kann ein neuer Access-Token über die Refresh-Funktion generiert werden.
Veranstaltungen abfragen
curl --location --request GET 'https://app.phwt.de/api/v1/events' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
[
{
"Date": "2020-09-28",
"Event": [
{
"Title": "BWL",
"Kind": "V",
"Teacher": "Prof. Dr. Beispiel",
"Starttime": {
"Hour": "08",
"Minute": "15"
},
"Endtime": {
"Hour": "09",
"Minute": "45"
},
"Rooms": [
"online"
]
},
...
]
},
{
"Date": "2020-09-30",
"Event": [
{
"Title": "Elektrische Maschinen",
"Kind": "V",
"Teacher": "Prof. Dr. A. Beispiel",
"Starttime": {
"Hour": "08",
"Minute": "15"
},
"Endtime": {
"Hour": "09",
"Minute": "45"
},
"Rooms": [
"ZWT 1.04",
"ZWT 2.04"
]
},
...
]
},
...
]
Mit diesem API Endpunkt werden alle Veranstaltungen, die zum eigenen Kurs gehören (zb. ET2017), aus der Datenbank gelesen und in JSON-Form zurückgegeben. Der Aufbau der JSON-Rückgabe ist oben dargestellt. Die Veranstaltungen werden in Tage gegliedert, sodass für jeden Tag ein Objekt mit den Datum und einer Liste von Events zurückgegeben wird (Variante 1). Dozenten haben die Möglichkeit sich mehrere Kurse anzeigen zu lassen (Variante 2). Außerdem können Dozenten sich nur ihre Veranstaltungen anzeigen lassen (Variante 3).
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
HTTP Request (Variante 1)
GET https://app.phwt.de/api/v2/events
HTTP Request (Variante 2)
POST https://app.phwt.de/api/v2/events/multiCourse
HTTP Body
[{"id": "1"}, {"id": "3"}, ...]
HTTP Request (Variante 3)
GET https://app.phwt.de/api/v2/events/dozent
Zeitstempel des Stundenplans abfragen
curl --location --request GET 'https://app.phwt.de/api/v1/events/lastUpdate' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
{
"date": 2021-12-24
}
Dieser Endpunkt gibt das Datum wieder, an dem der Stundenplan für den jeweiligen Kurs zuletzt aktualisiert worden ist.
HTTP Request
GET https://app.phwt.de/api/v2/events/lastUpdate
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Kontakte abfragen
curl --location --request GET 'https://app.phwt.de/api/v1/contacts' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
[
{
"CardTitle": "Institutsleiter",
"information": {
"Name:": "Name des Professors",
"Email:": "info@phwt.de",
"Telefon:": "05441/992-0",
"Organisation:": "PHWT-Institut "
}
},
{
"CardTitle": "Sekretariat ET/MT",
"information": {
"Name:": "Name der Sekretärin",
"Email:": "info@phwt.de",
"Organisation:": "Private Hochschule für Wirtschaft und Technik gGmbH",
"Telefonzentrale:": "04441/915-0",
"Ort:": "Rombergstraße 40, 49377 Vechta"
}
},
...
]
Mit diesem API Endpunkt werden alle Kontaktpersonen der PHWT abgefragt. Zurückgegeben wird eine JSON-Response, die eine Liste der verschiedenen Kontaktpersonen entält. Zu jeder Person wir die Stellung und die Kontaktdaten zurückgegeben.
HTTP Request
GET https://app.phwt.de/api/v1/contacts
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Freie Räume abfragen
[
{
"room": ["Room 1"],
"freeTill": "15:45:00"
},
{
"room": ["Room Berlin"],
"freeTill": "19:00:00"
},
{
"room": ["Room Diepholz"],
"freeTill": "10:15:00"
}
]
Dieser Endpunkt wird dazu verwendet, um dem Anwender alle freien Räume zu einer bestimmten Uhrzeit an einem bestimmten Tag zurück zu liefern. So ist es möglich, dass der User während des Tages schaut, welche Räume bis wann frei sind, um sich einen ungestörten Platz zum Arbeiten zu suchen.
HTTP Request
POST https://app.phwt.de/api/v1/freeRoom
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
HTTP Body
[{"date": "2022-12-24", "time": "12:15:00"}]
Kurs abfragen
curl --location --request GET 'https://app.phwt.de/api/v1/course' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
# Variante 1
[
{
"courseId": 7,
"courseName": "BWL"
},
{
"courseId": 38,
"courseName": "BWL AgriFood"
},
{
"courseId": 40,
"courseName": "BWL Handel"
},
]
# Variante 2
[
{
"courseId": 7,
"courseName": "BWL"
}
]
# Variante 3
[]
Mit diesem API Endpunkt werden alle Kurse die zu dem Studiengang passen zurück gegeben (Variante 1), sofern für den Benutzter noch kein Kurs ausgewählt wurde. Ansonsten wird eine Liste mit dem gewählten Kurs zurückgegeben (Variante 2). Wenn es nur einen Kurs für den Studiengang gibt, wird eine leere Liste zurückgegeben, da der Benutzer automatisch in diesem Kurs landet. (Variante 3).
HTTP Request
GET https://app.phwt.de/api/v1/course
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Kurs zuweisen
curl --location --request POST 'https://app.phwt.de/api/v1/course<courseId>' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "user added to course"
]
#Variant 2
[
"msg" : "course not found"
]
Mit diesem API Endpunkt wird der Benutzer einem Kurs zugewiesen. Wenn bereits eine Zuweisung vorhanden ist, wird diese überschrieben.
HTTP Request
GET https://app.phwt.de/api/v1/course<courseId>
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Kurszuweisung löschen
curl --location --request DELETE 'https://app.phwt.de/api/v1/course' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
[
"msg" : "removed user from course"
]
Mit diesem API Endpunkt wird der Benutzer aus dem angegebenen Kurs entfernt.
HTTP Request
DELETE https://app.phwt.de/api/v1/course
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Feedback
Fehler melden
curl --location --request POST 'https://app.phwt.de/api/v1/errors/<errorText>' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
This returns following JSON possibilities:
#Variante 1
[
"msg": "Error added"
]
#Variante 2
[
"msg": "Error not added"
]
Mit diesem API-Endpunkt hat der User die Möglichkeit Fehler an das Entwicklungsteam zu melden. Diese Fehler werden in einer Datenbank gesammelt und können abgearbeitet werden. Die Fehler werden mit dem Ersteller gespeichert, sodass auch eine Nachverfolgung des gemeldeten Fehlers möglich ist.
Verbesserung melden
curl --location --request POST 'https://app.phwt.de/api/v1/improvements/<improvementText>' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
This returns following JSON possibilities:
#Variante 1
[
"msg": "Improvement added"
]
#Variante 2
[
"msg": "Improvement not added"
]
Mit diesem API-Endpunkt sendet der User einen Verbesserungsvorschlag an das Entwicklungsteam. Diese werden gesammelt und bei der nächsten Entwicklung berücksichtigt. Der User wird mit hinterlegt, damit das Team Kontakt aufnehmen kann, falls Unklarheiten auftreten.
Changelog
Veranstaltungen abfragen
[
{ "Date": "2020-09-28",
"Event": [
{
"id": 239,
"Description": "V BWL, Prof. Dr. Beispiel",
"Starttime": {
"Hour": "08",
"Minute": "15"
},
"Endtime": {
"Hour": "09",
"Minute": "45"
},
"Rooms": [
"online"
]
},
...
]
}
]
Structure changed to:
[
{ "Date": "2020-09-28",
"Event": [
{
"Title": "BWL",
"Kind": "V",
"Teacher": "Prof. Dr. Beispiel",
"Starttime": {
"Hour": "08",
"Minute": "15"
},
"Endtime": {
"Hour": "09",
"Minute": "45"
},
"Rooms": [
"online"
]
},
...
]
}
]
Zurückgegebene Struktur hat sich geändert.
Http-Request
GET https://app.phwt.de/api/v1/events
änderte sich zu
GET https://app.phwt.de/api/v2/events