NAV
shell

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