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>
Benutzer Informationen
url --location --request GET 'https://app.phwt.de/api/v1/auth/userInformation' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
{
"cn": "Test User",
"department": "Bistro",
"admin": true
}
Mit diesem API Endpunkt werden die eigenen Benutzerinformationen abgefragt.
HTTP Request
GET https://app.phwt.de/api/v1/auth/userInformation
Header Parameters
Authorization: Bearer eyJ0eXAiO ...
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
curl --location --request POST 'https://app.phwt.de/api/v1/freeRoom/' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
--header 'Content-Type: application/json'
The above command returns JSON structured like this:
[
{
"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 ...
Content-Type: application/json
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
POST 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 ...
Bistro
Gerichte abfragen
curl --location --request GET 'https://app.phwt.de/api/v2/dishes' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
{
"Meat": [
{
"DishID": 21,
"Name": "Weiße Bolognese, Nudeln",
"Description": "Nudeln mit einer cremige Sauce mit Hackfleisch, Gemüse und Weißwein",
"PicturePath": "Pfad"
},
{
"DishID": 22,
"Name": "Geschnetzeltes",
"Description": "Geschnetzeltes mit Kartoffeln als Beilage",
"PicturePath": "Pfad"
},
...
],
"Vegetarian": [
{
"DishID": 23,
"Name": "Pommes, Brokkoli Cheese Nuggets",
"Description": "Brokkoli Cheese Nuggets mit Pommes als Beilage",
"PicturePath": "Pfad"
},
{
"DishID": 24,
"Name": "Linsen - Spinat - Curry",
"Description": "Curry aus Linsen, frischem Spinat und aromatischen Gewürzen",
"PicturePath": "Pfad"
},
...
]
}
Mit diesem API-Endpunkt werden alle Gerichte aus der Datenbank gelesen und in JSON-Format zurückgegeben. Der Aufbau der JSON-Rückgabe ist oben dargestellt. Die Gerichte werden nach Typ gegliedert, sodass für jeden Typ eine Liste mit Gerichten zurückgegeben wird.
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
HTTP Request
GET https://app.phwt.de/api/v2/dishes
Gericht hinzufügen
curl --location --request POST 'https://app.phwt.de/api/v2/dish/' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
--header 'Content-Type: application/json'
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "Not the necessary rights to add dish"
]
#Variante 2
[
"msg" : "No JSON data provided"
]
#Variante 3
[
"msg" : "The json is passed in the wrong form"
]
#Variante 4
[
"msg" : "Missing required keys: name, dishType, and description"
]
#Variante 5
[
"msg" : "Failed to add the dish"
]
#Variante 6
[
"msg" : "Successfully added dish"
]
Mit diesem API Endpunkt wird ein Gericht der Datenbank hinzugefügt.
HTTP Request
POST https://app.phwt.de/api/v2/dish
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Content-Type: application/json
HTTP Body
[{"name": "Schnitzel mit Pommes", "dishType": "Mit Fleisch", "description": "Ein Schnitzel mit Pommes als Beilage"}]
Gericht aktualisieren
curl --location --request PUT 'https://app.phwt.de/api/v2/dish/' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
--header 'Content-Type: application/json'
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "Not the necessary rights to add dish"
]
#Variante 2
[
"msg" : "No JSON data provided"
]
#Variante 3
[
"msg" : "The json is passed in the wrong form"
]
#Variante 4
[
"msg" : "Missing required keys: dishId, name, dishType, and description"
]
#Variante 5
[
"msg" : "Failed to update the dish"
]
#Variante 6
[
"msg" : "Successfully updated dish"
]
Mit diesem API-Endpunkt wird das Gericht mit der übergebenen ID mit den anderen übergebenen Parametern aktualisiert.
HTTP Request
PUT https://app.phwt.de/api/v2/dish
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Content-Type: application/json
HTTP Body
[{"dishID": 5, "name": "Schnitzel mit Pommes", "dishType": "Mit Fleisch", "description": "Ein Schnitzel mit Pommes als Beilage"}]
Gericht löschen
curl --location --request DELETE 'https://app.phwt.de/api/v2/dish/<int:dishId>' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "Not the necessary rights to delete dish"
]
#Variante 1
[
"msg" : "failed to delete dish and dish picture"
]
#Variante 2
[
"msg" : "failed to delete dish picture"
]
#Variante 3
[
"msg" : "dish is deleted"
]
#Variante 4
[
"msg" : "dish and dishPicture is deleted"
]
Mit diesem API-Endpunkt wird das Gericht mit der übergebenen ID aus der Datenbank entfernt.
HTTP Request
DELETE https://app.phwt.de/api/v2/dish/<int:dishId>
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Bild für Gericht hinzufügen / aktualisieren
curl --location --request POST 'https://app.phwt.de/api/v2/dish/picture/<int:dishId>' \
--header 'Authorization: Bearer eyJ0eXAiO ...'\
--form 'picture=@/pfad/bild.jpg'
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "Not the necessary rights to add image"
]
#Variante 2
[
"msg" : "no file part in request"
]
#Variante 3
[
"msg" : "no selected file"
]
#Variante 4
[
"msg" : "invalid file type"
]
#Variante 5
[
"msg" : "error saving file: exception"
]
#Variante 6
[
"msg" : "dish picture is added"
]
#Variante 7
[
"msg" : "failed to add dish picture"
]
Mit diesem API Endpunkt wird dem Gericht mit der übergebenen ID ein Bild hinzugefügt. Existiert bereits ein Bild wird dieses überschrieben.
HTTP Request
POST https://app.phwt.de/api/v2/dish/picture/<int:dishId>
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Form Parameter
picture: @/pfad/bild.jpg
Bild eines Gerichts laden
curl --location --request GET 'https://app.phwt.de/api/v2/<pfad:path>'
HTTP Request
GET https://app.phwt.de/api/v2/<pfad:path>
Mit diesem API Endpunkt wird das Bild vom Gericht erhalten, wenn eines vorhanden ist. Es wird direkt aus dem Filesystem geladen. Der jeweilige Pfad zum Bild ist der angegebene "PicturePath" im entsprechenden Dish Objekt.
Angebote abfragen
curl --location --request GET 'https://app.phwt.de/api/v2/offers' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
[
{
"Date": "2025-10-15",
"Offers": [
{
"OfferID": 20,
"Dish": {
"DishID": 21,
"Name": "Weiße Bolognese, Nudeln",
"Description": "Nudeln mit einer cremige Sauce mit feinem Hackfleisch, Gemüse und Weißwein",
"Type": "Mit Fleisch",
"PicturePath": "Pfad"
}
},
{
"OfferID": 21,
"Dish": {
"DishID": 22,
"Name": "Pommes, Brokkoli Cheese Nuggets",
"Description": "Brokkoli Cheese Nuggets mit Pommes als Beilage",
"Type": "Vegetarisch",
"PicturePath": "Pfad"
}
},
...
]
},
{
"Date": "2025-10-16",
"Offers": [
{
"OfferID": 22,
"Dish": {
"DishID": 23,
"Name": "Geschnetzeltes",
"Description": "Geschnetzeltes mit Kartoffeln als Beilage",
"Type": "Mit Fleisch",
"PicturePath": "Pfad"
}
},
{
"OfferID": 23,
"Dish": {
"DishID": 24,
"Name": "Linsen - Spinat - Curry",
"Description": "Curry aus Linsen, frischem Spinat und aromatischen Gewürzen",
"Type": "Vegetarisch",
"PicturePath": "Pfad"
}
},
...
]
},
...
]
Mit diesem API-Endpunkt werden alle Angebote aus der Datenbank gelesen und in JSON-Format zurückgegeben. Der Aufbau der JSON-Rückgabe ist oben dargestellt. Die Angebote werden in Tage gegliedert, sodass für jeden Tag ein Objekt mit dem Datum und einer Liste von Angeboten mit zugehörigem Gericht zurückgegeben wird
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
HTTP Request
GET https://app.phwt.de/api/v2/offers
Angebot hinzufügen
curl --location --request POST 'https://app.phwt.de/api/v2/offer/' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
--header 'Content-Type: application/json'
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "Not the necessary rights to add offer"
]
#Variante 2
[
"msg" : "No JSON data provided"
]
#Variante 3
[
"msg" : "The json is passed in the wrong form"
]
#Variante 4
[
"msg" : "Missing required keys: date and dishId"
]
#Variante 5
[
"msg" : "Failed to add the offer"
]
#Variante 6
[
"msg" : "Successfully added offer"
]
Mit diesem API-Endpunkt wird ein Angebot der Datenbank hinzugefügt. Das Angebot wird mit dem übergebenen Datum und der übergebenen Gericht-ID angelegt.
HTTP Request
POST https://app.phwt.de/api/v2/offer
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Content-Type: application/json
HTTP Body
[{"date": "2025-05-26", "dishID": "5"}]
Angebot löschen
curl --location --request DELETE 'https://app.phwt.de/api/v2/offer/<int:offerId>' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "Not the necessary rights to delete offer"
]
#Variante 2
[
"msg" : "failed to delete offer"
]
#Variante 3
[
"msg" : "offer is deleted"
]
Mit diesem API-Endpunkt wird das Angebot mit der übergebenen ID aus der Datenbank entfernt.
HTTP Request
DELETE https://app.phwt.de/api/v2/offer/<int:offerId>
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Bestellungen abfragen
curl --location --request GET 'https://app.phwt.de/api/v1/dishOrders \
--header 'Authorization: Bearer eyJ0eXAiO ...'
The above command returns JSON structured like this:
[
{
"Date": "2025-10-15",
"Order": {
"OrderID": 120,
"OfferID": 20,
"DishSize": "Mittel",
"Dish": {
"DishID": 21,
"Name": "Weiße Bolognese, Nudeln",
"Description": "Nudeln mit einer cremige Sauce mit feinem Hackfleisch, Gemüse und Weißwein",
"Type": "Mit Fleisch",
"PicturePath": "Pfad"
}
}
},
{
"Date": "2025-10-16",
"Order": {
"OrderID": 170,
"OfferID": 22,
"DishSize": "Groß",
"Dish": {
"DishID": 23,
"Name": "Geschnetzeltes",
"Description": "Geschnetzeltes mit Kartoffeln als Beilage",
"Type": "Mit Fleisch",
"PicturePath": "Pfad"
}
}
},
...
]
Mit diesem API-Endpunkt werden alle Bestellungen für den Benutzer, für die nächsten 14 aus der Datenbank gelesen und in JSON-Format zurückgegeben. Der Aufbau der JSON-Rückgabe ist oben dargestellt. Die Gerichte werden nach Datum gegliedert, sodass für jeden Tag, an dem der Nutzer etwas bestellt hat, die entsprechende Bestellung mit Informationen zum Angebot, Gericht und Bestellgröße geliefert werden.
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
HTTP Request
GET https://app.phwt.de/api/v2/dishOrders
Bestellung aufgeben
curl --location --request POST 'https://app.phwt.de/api/v2/dishOrder/' \
--header 'Authorization: Bearer eyJ0eXAiO ...'
--header 'Content-Type: application/json'
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "No JSON data provided"
]
#Variante 2
[
"msg" : "The json is passed in the wrong form"
]
#Variante 3
[
"msg" : "Missing required keys: offerId, dishSize"
]
#Variante 4
[
"msg" : "Failed to add the dish order"
]
#Variante 5
[
"msg" : "Successfully added dish order"
]
Mit diesem API-Endpunkt wird eine Bestellung der Datenbank hinzugefügt. Für die Bestellung ist die ID des entsprechenden Angebots und die Größe, in der das Gericht bestellt werden soll, anzugeben. Letztmöglicher Bestellungszeitpunkt ist ein Tag vor dem Angebotsdatum um 17:00 Uhr.
HTTP Request
POST https://app.phwt.de/api/v2/dishOrder
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Content-Type: application/json
HTTP Body
[{"offerID": 10, "dishSize": "Mittel"}]
Bestellung stornieren
curl --location --request DELETE "https://app.phwt.de/api/v2/dishOrder/<int:dishOrderId>" \
--header "Authorization: Bearer eyJ0eXAiO ..."
The above command returns JSON structured like this:
#Variante 1
[
"msg" : "failed to delete dish order"
]
#Variante 2
[
"msg" : "dish order is deleted"
]
Mit diesem API-Endpunkt wird die Bestellung mit der übergebenen ID aus der Datenbank entfernt. Letztmöglicher Stornierungszeitpunkt ist ein Tag vor dem Angebotsdatum um 17:00 Uhr.
HTTP Request
DELETE https://app.phwt.de/api/v2/dishOrder/<int:dishOrderId>
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
Anzahl bestellter Gerichte abfragen
curl --location --request GET "https://app.phwt.de/api/v2/dishOrders/dishAmount \
--header "Authorization: Bearer eyJ0eXAiO ..."
The above command returns JSON structured like this:
[
{
"Date": "2025-10-15",
"Offers": [
{
"OfferID": 20,
"Medium": 25,
"Large": 10,
"Dish": {
"DishID": 21,
"Name": "Weiße Bolognese, Nudeln",
"Description": "Nudeln mit einer cremige Sauce mit feinem Hackfleisch, Gemüse und Weißwein",
"Type": "Mit Fleisch",
"PicturePath": "Pfad"
}
},
{
"OfferID": 21,
"Medium": 5,
"Large": 2,
"Dish": {
"DishID": 22,
"Name": "Pommes, Brokkoli Cheese Nuggets",
"Description": "Brokkoli Cheese Nuggets mit Pommes als Beilage",
"Type": "Vegetarisch",
"PicturePath": "Pfad"
}
}
]
},
{
"Date": "2025-10-16",
"Offers": [
{
"OfferID": 22,
"Medium": 15,
"Large": 5,
"Dish": {
"DishID": 23,
"Name": "Geschnetzeltes",
"Description": "Geschnetzeltes mit Kartoffeln als Beilage",
"Type": "Mit Fleisch",
"PicturePath": "Pfad"
}
},
{
"OfferID": 23,
"Medium": 25,
"Large": 10,
"Dish": {
"DishID": 24,
"Name": "Linsen - Spinat - Curry",
"Description": "Curry aus Linsen, frischem Spinat und aromatischen Gewürzen",
"Type": "Vegetarisch",
"PicturePath": "Pfad"
}
}
]
},
]
Mit diesem API-Endpunkt werden alle Bestellungen für die nächsten 14 aus der Datenbank gezählt JSON-Format zurückgegeben. Der Aufbau der JSON-Rückgabe ist oben dargestellt. Die Gerichte werden nach Datum, Angebot und Gerichtsgröße gegliedert. Somit gib es für jeden Tag eine Liste mit den Angeboten, in denen die Anzahl der bestellten Gerichte nach Größe aufgeführt ist. Zusätzlich enthält es Angaben zum enthaltenden Gericht.
Header Parameter
Authorization: Bearer eyJ0eXAiO ...
HTTP Request
GET https://app.phwt.de/api/v2/dishOrders/dishAmount
Push Notifications
Neue Fcmtoken anlegen
curl --location --request PUT/POST "https://app.phwt.de/api/fcmtoken" \
--header "Authorization: Bearer eyJ0eXAiO ..." \
--header 'Content-Type: application/json' \
--data "[{ "token": "<fcmtoken>" }]"
The above command returns JSON structured like this:
# Variante 1
{
"msg": "Successfully added new fcmtoken"
}
# Variante 1
{
"msg": "Successfully changed username of fcmtoken"
}
# Variante 1
{
"msg": "Fcmtoken already exists"
}
# Variante 1
{
"msg": "Failed to add/change database element"
}
Mit diesem API-Endpunkt wird ein neuer Fcmtoken in der Datenbank gespeichert. Falls dieser bereits vorhanden ist und die Anfrage von einem anderen Nutzer kommt wird der nur der Nutzername aktualisiert. Dies ist notwendig, um an die Nutzer Pushnotifications zu versenden.
HTTP Request
PUT/POST https://app.phwt.de/api/fcmtoken
HTTP Header
Authorization: Bearer eyJ0eXAiO ...
Content-Type: application/json
HTTP Body
[{ "token": "<fcmtoken>" }]
Existierende Fcmtoken entfernen
curl --location --request delete "https://app.phwt.de/api/fcmtoken \
--header "Authorization: Bearer eyJ0eXAiO ..." \
--header 'Content-Type: application/json' \
--data "[{ "token": "<fcmtoken>" }]"
The above command returns JSON structured like this:
# Variante 1
{
"msg": "Successfully removed FcmToken"
}
# Variante 2
{
"msg": "Failed to remove from database"
}
# Variante 3
{
"msg": "Malformed/No JSON received"
}
Ein existierender Fcmtoken wird mit diesem Aufruf entfernt. Das entsprechende Gerät erhält keine Pushnotifications mehr.
HTTP Request
DELETE https://app.phwt.de/api/fcmtoken
HTTP Header
Authorization: Bearer eyJ0eXAiO ...
Content-Type: application/json
HTTP Body
[ "token": "<fcmtoken>"]
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