No description
Find a file
2026-08-29 00:59:43 +02:00
.gitignore Update readme 2026-07-08 20:27:42 +02:00
com.mensaplan.plist job now retries every hour 2026-07-09 18:28:00 +02:00
download.zip added launchd file (for completeness sake), all XMLs and download script 2026-07-08 10:21:37 +02:00
explore_data.py added changes 2026-07-10 20:51:12 +02:00
explore_data_copy.py split essen2 2026-07-10 15:35:49 +02:00
intercept_app_traffic.md Add instructions to intercept app traffic 2026-07-03 15:23:27 +02:00
mensa_dashboard.py bub fix 2026-08-11 13:55:46 +02:00
mensaplan.py added script 2026-07-03 21:07:07 +02:00
mensaplan_daily.py job now retries every hour 2026-07-09 18:28:00 +02:00
plot_error.png Update readme 2026-07-03 21:39:06 +02:00
README.md update readme 2026-08-29 00:59:43 +02:00
requirements.txt api requests for transactions 2026-08-03 21:44:11 +02:00

Mensaplan

Es gibt verschiedene APIs, um den Mensaplan einzusehen.

  1. Webseite des Studierendenwerks: Wird auf https://www.studierendenwerk-goettingen.de/campusgastronomie/mensen/speiseplaene-der-mensen angezeigt
  2. Widget auf der eCampus Startseite
  3. Mensaplan App

Alle Quellen enthalten

  • Datum
  • Mensaname
  • Name des Menüs (Tasty, Basic etc.)
  • Essenstitel
  • Essensuntertitel
  • Allergene
  • Text oder Icons für Vegan, Vegetarisch etc.
Quelle Webseite des Studierendenwerks eCampus Widget Mensaplan App Studierendenwerk API
Link https://www.studierendenwerk-goettingen.de/fileadmin/templates/php/mensaspeiseplan/cached/de/$datum/alle.html https://addons.ecampus2.uni-goettingen.de/addon-portlet-mensaplan/ajaxresponse/getgerichte?mensa=$mensa&tag=$tag&preis=$preis https://app.studentenwerk-goettingen.de/api/mensaplanAll?datum=$datum&token=a https://api.studierendenwerk-goettingen.de/speiseplan/website/$datum?format=json
Parameter $datum: Datum im YYYY-MM-DD Format $mensa: Zentralmensa, Mensa+am+Turm, CGiN oder Bistro+HAWK
$tag: heute, morgen oder uebermorgen
$preis: stu, mit oder gas
$datum: Datum im YYYY-MM-DD Format $datum: Datum im DD.MM.YYYY Format
Tage in Vergangenheit 0 0 28.05.2020
Tage in Zukunft 6 2 02.10.2026
Zeigt Preis an ❌ ✅ ✅
Auch auf Englisch ✅ ❌ ✅
ID, Rezeptname, Rating ❌ ❌ ✅

Weitere API Endpoints der App

Außerdem schickt die App beim Starten eine Request an

http://vm18004.virt.gwdg.de/api/push

Die gibt aber nur einen 404 zurück.

Auslastung

Allgemeine Informationen zur Auslastung, die man auch direkt in der App sieht, gibt es über den oben genannten Link. Für die Plots wird dieser Endpoint benutzt:

https://app.studentenwerk-goettingen.de/combined_mysql4.php?new=29718398.84163333&ortwert=4014&linienwert=1

Parameter:

  • new: Keine Funktion, kann weggelassen werden
  • ortwert: ID der Mensa, kann über den frequenz endpoint gefunden werden.
    • Zentralmensa: 4014
    • Mensa am Turm: 4155
    • CGiN: 4209
    • Bistro HAWK: 4272
  • linienwert: Quelle für die Vergleichswerte (die rote Linie)
    • 1-365: Vergleich mit Auslastung vor 1-365 Tagen
    • -1: Vergleich mit Durchschnitt selber Wochentag
    • -2: Vergleich mit Durchschnitt letztes Jahr

Leider wird der Plot serverseitig generiert und es wird nur ein Bild zurückgeliefert und keine Daten.

Ungültige Parameterwerte führen zu einem coolen Fehlerbild:

Mensa Dashboard

Im Mensa Dashboard sieht man die eigenen Transaktionen der letzten 20 Tage. Beim Klicken auf eine Transaktion werden Details über

https://mensa.studierendenwerk-goettingen.de/sales/$katrans_id/$datum/position

abgerufen. Dabei ist

  • $katrans_id: Transaktions ID
    • Transaktions-IDs werden pro Kasse hochgezählt
    • Kann an einem Tag bei zwei unterschiedlichen Kassen die gleiche Transaktions ID erhalten werden
    • Wie werden die verschiedenen Kassen in der API unterschieden, wenn man die Kassen-ID nicht in der URL angibt? Ist es möglich, bei zwei verschiedenen Kassen am gleichen Tag mit der gleichen Transaktions-ID zu bezahlen, und werden die dann in der gleichen API response angezeigt?
  • $datum: Datum im YYYY-MM-DD Format

Nur Transaktionen der aktuell angemeldeten Person werden zurückgegeben, man kann also keine Transaktionen von anderen Personen sehen.
Zur Authentifizierung wird bei Anfragen an mensa.studierendenwerk-goettingen.de im response header über Set-Cookie der Cookie studierendenwerk_goettingen_session gesendet. Dieser ist 2 Stunden ab der letzten Anfrage gültig. Sendet man also alle 2 Stunden eine Anfrage, kann immer mit dem gleichen Cookie gearbeitet werden.

Folgenden Felder werden zurückgegeben:

  • kasse_id
  • kassename
  • datum
  • menge: 1 beim Kaufen oder Aufwerten, -1 bei Stornierungen
  • name: Name des Menüs
  • epreis: Preis für Gäste
  • rabatt: Studirabatt
  • katrans_id
  • ortname
  • artikelname: Name des Essens

Folgende Kassen sind bekannt:

ID Name Ortname
4071 Kasse 1 Freeflow Zentralmensa Küche
4074 Kasse 4 Freeflow Zentralmensa Küche
4151 Mensa am Turm 1 Mensa am Turm
4152 Mensa am Turm 2 Mensa am Turm
4158 Aufwerter EC MaT Concardi Mensa am Turm
4199 GCIN Autom.Kaffee(Spezial CGIN Daily
4200 CGiN Basic Ks 1 CGiN Küche
4201 CGiN Basic Ks 2 CGiN Küche
4202 CGiN Tasty Ks 3 CGiN Küche
4203 CGin Tasty Ks 4 CGiN Küche
4204 CGiN Green vegan Ks 5 CGiN Küche
4205 CGiN Green vegetar. Ks 6 CGiN Küche
4206 Aufwerter CGIN Nexi CGiN Küche
4207 Aufwerter CGIN Nexi CGiN Küche
4211 CGiN Daily Ks 11 CGIN Daily
4212 CGiN Pizza Ks 12 CGIN Daily
4215 Aufwerter EC CGiN CGiN Küche
4217 CGiN Green One Pott Ks 8 CGiN Küche
4218 CGiN Teppan Yaki Ks 9 CGiN Küche
4219 CGiN Tepp.Yaki vegan Ks10 CGiN Küche
  • Wie lange werden Transaktionen gespeichert? Ein Link vom 19.06.2026 funktioniert immer noch.