CampusInfo API - zhaw-timetable/zhawo GitHub Wiki
Author: Andreas Ahlenstorf [email protected]
-
ZHAW CampusInfo Server
- Allgemeines
-
Stundenplan-Ressourcen
- GET /v1/schedules/classes/
- GET /v1/schedules/classes/{name}
- GET /v1/schedules/courses/
- GET /v1/schedules/courses/{name}
- GET /v1/schedules/lecturers/
- GET /v1/schedules/lecturers/{name}
- GET /v1/schedules/rooms/
- GET /v1/schedules/rooms/{name}
- GET /v1/schedules/students/
- GET /v1/schedules/students/{name}
- Mensa-Ressourcen
- Feed-Ressourcen
- Objekte
Das API des CampusInfo Server basiert auf HTTP und ist RESTful. Dies bedeutet unter anderem:
- Das API ist nach Ressourcen, nicht nach Methoden organisiert. Um eine Liste aller Schulklassen zu erhalten, für die ein Stundenplan verfügbar ist, wird der URL
/schedules/classes/benötigt, nicht eine Methode wieGetSchoolClassSchedules(). - Unterschiedliche Request-Methoden auf dieselbe Ressource haben unterschiedliche Auswirkungen. Mit
GETkann die Ressource abgerufen und mitPUTaktualisiert werden. In der Referenz ist jeweils angegeben, welche Request-Methoden unterstützt werden. -
Der Request Header und seine Inhalte sind signifikant. Durch richtiges Setzen des
Accept-Header kann die Antwort beispielsweise als XML oder JSON abgerufen werden.
Einige Resource-URLs unterstützen bis zu zwei verschiedene Arten von Parametern:
-
url-path
Sie sind Teil der Pfadangabe und nicht optional. In
/foo/{bar}ist{bar}der Parameter. -
searchpath
Werden der Pfadangabe hinter einem Fragezeichen (
?) angehängt und sind in der Regel optional. Infoo?bar=bazistbarder Parameter undbazsein Wert.
Manche Ressourcen unterstützen die Angabe von Parametern. Diese sollten:
- in UTF-8 codiert sein
- codiert für die Verwendung in URLs sein (siehe Percent encoding)
Alle Antworten sind in UTF-8 codiert.
Das API ist versioniert. Die aktuelle Version wird durch eine Versionsangabe wie /v1/ zu Beginn der Resource URLs gekennzeichnet.
Der CampusInfo Server ist aus dem öffentlichen Netz über den URL https://api.apps.engineering.zhaw.ch/ erreichbar.
| Ein Test-/Entwicklungsserver ist unter https://beta.apps.engineering.zhaw.ch/ erreichbar, der zur Erprobung neuer Software- respektive API-Versionen dient. Er braucht nur verwendet zu werden, falls der "offizielle" CampusInfo-Server die gewünschte Schnittstelle noch nicht bereitstellt. Die Entwicklung von API-Clients kann ansonsten problemlos mit dem offiziellen CampusInfo-Server erfolgen. | |
|---|---|
Grundsätzlich kann auf alle Ressourcen ohne Authentifizierung zugegriffen werden, um auch Personen, die nicht Mitglied der ZHAW sind, den Zugriff auf die Informationen ermöglichen. Sensible Informationen, die allenfalls zusätzlich verfügbar gemacht werden, können erst nach einer erfolgreichen Authentifizierung abgerufen werden. Ob zusätzliche Informationen verfügbar sind bzw. eine Authentifzierung nötig ist, ist in der API-Dokumentation der Ressourcen vermerkt.
Es muss aber in jede Anfrage ein User-Agent Header nach dem folgenden Format eingefügt werden:
User-Agent: MeineAnwendung (Kontakt)
Dabei kann für Kontakt entweder ein URL (z.B. http://example.com) oder eine E-Mailadresse (z.B. [email protected]) hinterlegt werden. Diese Informationen werden nicht veröffentlicht und dienen einzig dazu, zu verfolgen, wer auf den Service zugreift und Kontakt aufnehmen zu können, falls irgendetwas mit den Zugriffen nicht in Ordnung ist.
Ist der User-Agent Header nicht vorhanden oder nicht im obigen Format, wird die Anfrage mit 400 Bad Request beantwortet. |
|
|---|---|
Der Zugriff auf den CampusInfo Server kann ausschliesslich verschlüsselt über eine TLS-Verbindung erfolgen, damit einerseits der Datenverkehr nicht abgehört und andererseits nicht manipuliert oder von einem unberechtigten Dritten bereitgestellt werden kann. Sowohl der offizielle CampusInfo-Server als auch die Testinstanz verfügen über CA-signierte TLS-Zertifikate, die auf die ZHAW ausgestellt sind.
Das API des CampusInfo Server unterstützt die Kompression des Datenverkehrs, was erheblich Datenverkehr einspart und die Übertragungszeiten verringert. Es wird deshalb sehr empfohlen, Kompression zu verwenden.
Um komprimierte Antworten zu erhalten, muss in der Anfrage der Header Accept-Encoding: gzip, deflate (oder ähnlich, siehe http://tools.ietf.org/html/rfc2616#section-14.3) enthalten sein.
Ob der Server die Antwort komprimiert hat, lässt sich am Antwort-Header Content-Encoding ablesen. Lautet dieser Content-Encoding: gzip (bzw. deflate oder compress anstatt gzip), so wurde die Antwort komprimiert. |
|
|---|---|
Die meisten vom CampusInfo-Server ausgelieferten Daten werden serverseitig für eine gewisse Zeit zwischengespeichert. Änderungen in Stammdatenbanken sind deshalb meist erst mit einer gewissen Verzögerung sichtbar.
Sind Ressourcen zur Client-seitigen Zwischenspeicherung geeignet, ist dies samt Angabe des verwendeten Mechanismus (wie ETags oder Last-Modified Header) in der Ressourcen-Dokumentation vermerkt.
Bei der Verwendung von ETags wird mit jeder Server-Antwort ein ETag mitgeliefert, der die Version der Antwort eindeutig identifiziert und zur Bildung eines Conditional Request verwendet werden kann. Mit einem Conditional Request wird der Server angewiesen, nur dann eine vollständige Antwort inklusive der Daten zu liefern, falls eine neuere Version der Ressource vorliegt. Andernfalls ist die Antwort leer. Die Hauptvorteile sind:
- Bandbreitenersparnis
- Auf dem Client brauchen z.B. bei einer Synchronisation die lokalen mit den vom Server gesendeten Daten nicht erst auf Unterschiede hin untersucht werden, da man bereits durch die Server-Antwort weiss, ob sich die Daten geändert haben oder nicht.
Die Funktionsweise ist im Beispiel weiter unten illustriert. Abhängig von der verwendeten HTTP-Bibliothek muss man sich selber um die Verarbeitung der ETags und die Erstellung der Conditional Requests kümmern, sofern dies nicht automatisch für einen erledigt wird.
| Die Java-Bibliothek okhttp kümmert sich automatisch um die Verarbeitung von ETags und die Erstellung von Conditional Requests, wobei das für den Anwender transparent ist. Hat sich z.B. die Ressource auf dem Server nicht geändert, erhält man die ursprüngliche Antwort aus einem lokalen Cache. | |
|---|---|
Example 1. Conditional Requests mit ETags
Erster Request:
GET /v1/catering/facilities HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonDer Antwort-Header (gekürzt) erhält neu den ETag 1LFuo7Gm4hUWxHbSpnHCBA==, der die Version der gelieferten Antwort (nicht gezeigt) eindeutig identifiziert.
HTTP/1.1 200 OK
Content-Length: 5724
Cache-Control: private
Content-Type: application/json; charset=utf-8
Etag: "1LFuo7Gm4hUWxHbSpnHCBA=="
Connection: closeFür einen Conditional Request muss nun der ETag zusammen mit dem Header If-None-Match in den Request eingebettet werden:
GET /v1/catering/facilities HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/json
If-None-Match: "1LFuo7Gm4hUWxHbSpnHCBA=="Hat sich die Ressource seit dem ersten Request nicht geändert, antwortet der Server mit HTTP/1.1 304 Not Modified, wobei die Payload (also das angeforderte JSON-Dokument) weggelassen (Header Content-Length fehlt) und derselbe ETag mitgesendet wird:
HTTP/1.1 304 Not Modified
Cache-Control: private
Etag: "1LFuo7Gm4hUWxHbSpnHCBA=="
Connection: closeHat sich die Ressource dagegen seit dem ersten Request geändert, antwortet der Server regulär mit HTTP/1.1 200 OK, wobei die Payload (das angeforderte JSON-Dokument, nicht gezeigt) ebenso wie der neue ETag yzx3Da4mwyTfH+PLZ9mz2w== mitgesendet werden:
HTTP/1.1 200 OK
Content-Length: 4129
Cache-Control: private
Content-Type: application/json; charset=utf-8
Etag: "yzx3Da4mwyTfH+PLZ9mz2w=="
Connection: closeEin formelles SDK steht im Moment nicht zur Verfügung. Auf Anfrage sind aber die verwendeten Data Transfer Objects in C# (für XMLSerializer bzw. Json.NET) und Java (für Jackson) erhältlich.
HTTP Clients helfen beim Ausprobieren des REST API. Populäre Varianten:
- curl: Kommandozeilen-Werkzeug für Linux, Mac OS X etc.
- Fiddler: HTTP-Client/Proxy mit grafischer Benutzeroberfläche für Windows.
- HTTP Client: HTTP-Client mit grafischer Benutzeroberfläche für Mac OS X.
Möchte man den eigentlichen Datenverkehr zwischen Gerät und Server anschauen, reicht aufgrund des verschlüsselten Datenverkehrs ein einfaches Mithören, beispielsweise mit Wireshark, nicht aus. Statt dessen braucht man einen Intercepting Proxy, der zwischen Gerät und Server sitzt und für das Gerät als Server bzw. für den Server als Gerät agiert. Auf diese Weise kann beim Intercepting Proxy der Klartext ausgelesen werden. Zwei einfache Varianten, einen Intercepting Proxy zu realisieren, sind:
- Fiddler (Windows, Dokumentation für SSL-Entschlüsselung)
- OWASP Zed Attack Proxy (plattformunabhängig, Dokumentation für SSL-Entschlüsselung).
Liefert einen Index mit den Schulklassen, für die Stundenpläne vorhanden sind. Sind keine Schulklassen vorhanden, wird ein leerer Index zurückgegeben.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/classes/ -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten oder im falschen Format.
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 2. Klassen-Index in JSON
Request:
GET /v1/schedules/classes/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort (gekürzt):
{
"classes": [
"AL09",
"AL10",
"AL12",
"ARB07",
"ARB08",
"ARB09",
"ARB10",
"ARB11",
"ARB12",
"VS11a",
"VS11t",
"VUHKS",
"VUKHS",
"WI09a",
"WI09b",
"WI09t",
"WI10a",
"WI10b",
"WI10t",
"WI11a",
"WI11b",
"WI11c",
"WI11t",
"ZLG"
]
}Example 3. Klassen-Index in XML
Request:
GET /v1/schedules/classes/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort (gekürzt):
<index>
<classes>
<class>AL09</class>
<class>AL10</class>
<class>AL12</class>
<class>ARB07</class>
<class>ARB08</class>
<class>ARB09</class>
<class>ARB10</class>
<!-- ... -->
<class>WI09a</class>
<class>WI09b</class>
<class>WI09t</class>
<class>WI10a</class>
<class>WI10b</class>
<class>WI10t</class>
<class>WI11a</class>
<class>WI11b</class>
<class>WI11c</class>
<class>WI11t</class>
<class>ZLG</class>
</classes>
</index>Retourniert den Stundenplan der Klasse mit dem Namen name.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/classes/{name}?startingAt={date}&days={number} -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
| Name | Beschreibung |
|---|---|
| days searchpart, optional | Anzahl Tage, die der Stundenplan umfassen soll. Es werden Werte aus dem Intervall [1,7] akzeptiert. Wird die Anzahl Tage nicht angegeben, werden standardmässig 7 Tage angezeigt. Beispiel-Wert: 6
|
| name url-path, vorgeschrieben | Name der Klasse, deren Stundenplan abgerufen werden soll. Beispiel-Wert: T_AV10a.BA
|
| startingAt searchpart, optional | Datum, mit dem der Stundenplan beginnen soll, in der Form JJJJ-MM-TT. Wird kein Datum angegeben, wird das aktuelle Datum verwendet. Beispiel-Wert: 2012-05-18
|
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten, im falschen Format oder Werte für übergebene Parameter sind illegal. Beispiel: Stundenplan soll mehr als 7 Tage lang sein.
-
404 Not FoundStundenplan kann nicht gefunden werden (Klasse unbekannt, kein Stundenplan für das gewählte Datum…)
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 4. Tagesstundenplan einer Klasse in JSON
Request:
GET /v1/schedules/classes/T_AV10a.BA?startingAt=2012-05-14&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort:
{
"type":"Class",
"days":[
{
"date":"2012-05-14T00:00:00",
"events":[
{
"description":"",
"endTime":"2012-05-14T09:35:00",
"name":"t.TEMS-V",
"eventRealizations":[
{
"room":{
"name":"TL 201"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Hanfried",
"lastName":"Hesselbarth",
"shortName":"hsbh"
}
],
"classes":[
{
"name":"T_AV10a.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T08:45:00",
"startTime":"2012-05-14T08:00:00"
},
{
"endTime":"2012-05-14T09:35:00",
"startTime":"2012-05-14T08:50:00"
}
],
"startTime":"2012-05-14T08:00:00",
"type":"CourseEvent"
},
{
"description":"Navigation - Vorlesung",
"endTime":"2012-05-14T11:35:00",
"name":"t.NAV-V",
"eventRealizations":[
{
"room":{
"name":"TE 319"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Heinz",
"lastName":"Wipf",
"shortName":"wipf"
}
],
"classes":[
{
"name":"T_AV10a.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T08:45:00",
"startTime":"2012-05-14T08:00:00"
},
{
"endTime":"2012-05-14T09:35:00",
"startTime":"2012-05-14T08:50:00"
},
{
"endTime":"2012-05-14T10:45:00",
"startTime":"2012-05-14T10:00:00"
},
{
"endTime":"2012-05-14T11:35:00",
"startTime":"2012-05-14T10:50:00"
}
],
"startTime":"2012-05-14T08:00:00",
"type":"CourseEvent"
},
{
"description":"",
"endTime":"2012-05-14T11:35:00",
"name":"t.TEMS-V",
"eventRealizations":[
{
"room":{
"name":"TL 201"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Hanfried",
"lastName":"Hesselbarth",
"shortName":"hsbh"
}
],
"classes":[
{
"name":"T_AV10a.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T10:45:00",
"startTime":"2012-05-14T10:00:00"
},
{
"endTime":"2012-05-14T11:35:00",
"startTime":"2012-05-14T10:50:00"
}
],
"startTime":"2012-05-14T10:00:00",
"type":"CourseEvent"
},
{
"description":"",
"endTime":"2012-05-14T13:35:00",
"name":"t.MEMI-V",
"eventRealizations":[
{
"room":{
"name":"TE 402"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"",
"lastName":"",
"shortName":"div"
}
],
"classes":[
{
"name":"T_AV10a.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T12:45:00",
"startTime":"2012-05-14T12:00:00"
},
{
"endTime":"2012-05-14T13:35:00",
"startTime":"2012-05-14T12:50:00"
}
],
"startTime":"2012-05-14T12:00:00",
"type":"CourseEvent"
},
{
"description":"",
"endTime":"2012-05-14T15:35:00",
"name":"t.GNTS-V",
"eventRealizations":[
{
"room":{
"name":"TB 414"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Martin",
"lastName":"Schlup",
"shortName":"spma"
}
],
"classes":[
{
"name":"T_AV10a.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T14:45:00",
"startTime":"2012-05-14T14:00:00"
},
{
"endTime":"2012-05-14T15:35:00",
"startTime":"2012-05-14T14:50:00"
}
],
"startTime":"2012-05-14T14:00:00",
"type":"CourseEvent"
},
{
"description":"Air Traffic Management 1- Vorlesung",
"endTime":"2012-05-14T17:35:00",
"name":"t.ATM1-V",
"eventRealizations":[
{
"room":{
"name":"TL 201"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Peter",
"lastName":"Tiegel",
"shortName":"ti1"
}
],
"classes":[
{
"name":"T_AV10a.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T14:45:00",
"startTime":"2012-05-14T14:00:00"
},
{
"endTime":"2012-05-14T15:35:00",
"startTime":"2012-05-14T14:50:00"
},
{
"endTime":"2012-05-14T16:45:00",
"startTime":"2012-05-14T16:00:00"
},
{
"endTime":"2012-05-14T17:35:00",
"startTime":"2012-05-14T16:50:00"
}
],
"startTime":"2012-05-14T14:00:00",
"type":"CourseEvent"
},
{
"description":"",
"endTime":"2012-05-14T17:35:00",
"name":"t.GNTS-P",
"eventRealizations":[
{
"room":{
"name":"TB 414"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Martin",
"lastName":"Schlup",
"shortName":"spma"
}
],
"classes":[
{
"name":"T_AV10a.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T16:45:00",
"startTime":"2012-05-14T16:00:00"
},
{
"endTime":"2012-05-14T17:35:00",
"startTime":"2012-05-14T16:50:00"
}
],
"startTime":"2012-05-14T16:00:00",
"type":"CourseEvent"
}
],
"slots":[
{
"endTime":"2012-05-14T08:45:00",
"startTime":"2012-05-14T08:00:00"
},
{
"endTime":"2012-05-14T09:35:00",
"startTime":"2012-05-14T08:50:00"
},
{
"endTime":"2012-05-14T10:45:00",
"startTime":"2012-05-14T10:00:00"
},
{
"endTime":"2012-05-14T11:35:00",
"startTime":"2012-05-14T10:50:00"
},
{
"endTime":"2012-05-14T12:45:00",
"startTime":"2012-05-14T12:00:00"
},
{
"endTime":"2012-05-14T13:35:00",
"startTime":"2012-05-14T12:50:00"
},
{
"endTime":"2012-05-14T14:45:00",
"startTime":"2012-05-14T14:00:00"
},
{
"endTime":"2012-05-14T15:35:00",
"startTime":"2012-05-14T14:50:00"
},
{
"endTime":"2012-05-14T16:45:00",
"startTime":"2012-05-14T16:00:00"
},
{
"endTime":"2012-05-14T17:35:00",
"startTime":"2012-05-14T16:50:00"
},
{
"endTime":"2012-05-14T18:45:00",
"startTime":"2012-05-14T18:00:00"
},
{
"endTime":"2012-05-14T19:35:00",
"startTime":"2012-05-14T18:50:00"
},
{
"endTime":"2012-05-14T20:30:00",
"startTime":"2012-05-14T19:45:00"
},
{
"endTime":"2012-05-14T21:20:00",
"startTime":"2012-05-14T20:35:00"
}
]
}
],
"course":null,
"lecturer":null,
"room":null,
"class":{
"name":"T_AV10a.BA"
},
"student":null
}Example 5. Tagesstundenplan einer Klasse in XML
Request:
GET /v1/schedules/classes/T_AV10a.BA?startingAt=2012-05-14&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort:
<?xml version="1.0" encoding="utf-8"?>
<schedule xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<type>Class</type>
<days>
<day>
<date>2012-05-14T00:00:00</date>
<events>
<event>
<description/>
<endTime>2012-05-14T09:35:00</endTime>
<name>t.TEMS-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TL 201</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Hanfried</firstName>
<lastName>Hesselbarth</lastName>
<shortName>hsbh</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV10a.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T09:35:00</endTime>
<startTime>2012-05-14T08:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T08:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description>Navigation - Vorlesung</description>
<endTime>2012-05-14T11:35:00</endTime>
<name>t.NAV-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TE 319</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Heinz</firstName>
<lastName>Wipf</lastName>
<shortName>wipf</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV10a.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T09:35:00</endTime>
<startTime>2012-05-14T08:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T10:45:00</endTime>
<startTime>2012-05-14T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T11:35:00</endTime>
<startTime>2012-05-14T10:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T08:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description/>
<endTime>2012-05-14T11:35:00</endTime>
<name>t.TEMS-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TL 201</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Hanfried</firstName>
<lastName>Hesselbarth</lastName>
<shortName>hsbh</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV10a.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T10:45:00</endTime>
<startTime>2012-05-14T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T11:35:00</endTime>
<startTime>2012-05-14T10:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T10:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description/>
<endTime>2012-05-14T13:35:00</endTime>
<name>t.MEMI-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TE 402</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName/>
<lastName/>
<shortName>div</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV10a.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T12:45:00</endTime>
<startTime>2012-05-14T12:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T13:35:00</endTime>
<startTime>2012-05-14T12:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T12:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description/>
<endTime>2012-05-14T15:35:00</endTime>
<name>t.GNTS-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TB 414</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Martin</firstName>
<lastName>Schlup</lastName>
<shortName>spma</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV10a.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T14:45:00</endTime>
<startTime>2012-05-14T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T15:35:00</endTime>
<startTime>2012-05-14T14:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T14:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description>Air Traffic Management 1- Vorlesung</description>
<endTime>2012-05-14T17:35:00</endTime>
<name>t.ATM1-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TL 201</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Peter</firstName>
<lastName>Tiegel</lastName>
<shortName>ti1</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV10a.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T14:45:00</endTime>
<startTime>2012-05-14T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T15:35:00</endTime>
<startTime>2012-05-14T14:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T16:45:00</endTime>
<startTime>2012-05-14T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T17:35:00</endTime>
<startTime>2012-05-14T16:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T14:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description/>
<endTime>2012-05-14T17:35:00</endTime>
<name>t.GNTS-P</name>
<eventRealizations>
<eventRealization>
<room>
<name>TB 414</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Martin</firstName>
<lastName>Schlup</lastName>
<shortName>spma</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV10a.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T16:45:00</endTime>
<startTime>2012-05-14T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T17:35:00</endTime>
<startTime>2012-05-14T16:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T16:00:00</startTime>
<type>CourseEvent</type>
</event>
</events>
<slots>
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T09:35:00</endTime>
<startTime>2012-05-14T08:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T10:45:00</endTime>
<startTime>2012-05-14T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T11:35:00</endTime>
<startTime>2012-05-14T10:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T12:45:00</endTime>
<startTime>2012-05-14T12:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T13:35:00</endTime>
<startTime>2012-05-14T12:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T14:45:00</endTime>
<startTime>2012-05-14T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T15:35:00</endTime>
<startTime>2012-05-14T14:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T16:45:00</endTime>
<startTime>2012-05-14T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T17:35:00</endTime>
<startTime>2012-05-14T16:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T18:45:00</endTime>
<startTime>2012-05-14T18:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T19:35:00</endTime>
<startTime>2012-05-14T18:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T20:30:00</endTime>
<startTime>2012-05-14T19:45:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T21:20:00</endTime>
<startTime>2012-05-14T20:35:00</startTime>
</slot>
</slots>
</day>
</days>
<class>
<name>T_AV10a.BA</name>
</class>
</schedule>Liefert einen Index mit den Kursen, für die Stundenpläne vorhanden sind. Sind keine Kurse verzeichnet, ist der Index leer.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/courses/ -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten oder im falschen Format.
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 6. Kurs-Index in JSON
Request:
GET /v1/schedules/classes/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort (gekürzt):
{
"courses": [
{
"description": "a.BPM1",
"name": "a.bpm1"
},
{
"description": "a.BPM3",
"name": "a.bpm3"
},
{
"description": "a.BR1",
"name": "a.br1"
},
{
"description": "a.BR3",
"name": "a.br3"
},
{
"description": "a.BTAR1",
"name": "a.btar1"
},
{
"description": "a.BTAR3",
"name": "a.btar3"
},
{
"description": "a.E+K1",
"name": "a.e+k1"
},
{
"description": "Architekturgeschichte 1",
"name": "w-z1"
}
]
}Example 7. Kurs-Index in XML
Request:
GET /v1/schedules/classes/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort (gekürzt):
<?xml version="1.0"?>
<index xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<courses>
<course>
<name>a.bpm3</name>
<description>a.BPM3</description>
</course>
<course>
<name>a.br1</name>
<description>a.BR1</description>
</course>
<course>
<name>a.br3</name>
<description>a.BR3</description>
</course>
<!-- ... -->
<course>
<name>w-x2</name>
<description/>
</course>
<course>
<name>w-y1</name>
<description>Research Design Methode 1</description>
</course>
<course>
<name>w-z1</name>
<description>Architekturgeschichte 1</description>
</course>
</courses>
</index>Retourniert den Stundenplan des Kurses mit dem Namen name.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/courses/{name}?startingAt={date}&days={number} -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
| Name | Beschreibung |
|---|---|
| days searchpart, optional | Anzahl Tage, die der Stundenplan umfassen soll. Es werden Werte aus dem Intervall [1,7] akzeptiert. Wird die Anzahl Tage nicht angegeben, werden standardmässig 7 Tage angezeigt. Beispiel-Wert: 6
|
| name url-path, vorgeschrieben | Name des Kurses, dessen Stundenplan abgerufen werden soll. Beispiel-Wert: t.SRM-G
|
| startingAt searchpart, optional | Datum, mit dem der Stundenplan beginnen soll, in der Form JJJJ-MM-TT. Wird kein Datum angegeben, wird das aktuelle Datum verwendet. Beispiel-Wert: 2012-05-18
|
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten, im falschen Format oder Werte für übergebene Parameter sind illegal. Beispiel: Stundenplan soll mehr als 7 Tage lang sein.
-
404 Not FoundStundenplan kann nicht gefunden werden (Kurs unbekannt, kein Stundenplan für das gewählte Datum…)
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 8. Tagesstundenplan eines Kurses in JSON
Request:
GET /v1/schedules/courses/t.SRM-G?startingAt=2012-05-14&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort:
{
"type":"Course",
"days":[
{
"date":"2012-05-14T00:00:00",
"events":[
{
"description":"Safety- und Riskmanagement - Gruppenunterricht",
"endTime":"2012-05-14T17:35:00",
"name":"t.SRM-G",
"eventRealizations":[
{
"room":{
"name":"TB 610"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Heinrich",
"lastName":"Kuhn",
"shortName":"kuhn"
},
{
"type":"Lecturer",
"department":null,
"firstName":"Andrea",
"lastName":"Muggli",
"shortName":"muga"
}
],
"classes":[
{
"name":"T_AV09a.BA"
},
{
"name":"T_AV09b.BA"
},
{
"name":"T_AV09c.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T14:45:00",
"startTime":"2012-05-14T14:00:00"
},
{
"endTime":"2012-05-14T15:35:00",
"startTime":"2012-05-14T14:50:00"
},
{
"endTime":"2012-05-14T16:45:00",
"startTime":"2012-05-14T16:00:00"
},
{
"endTime":"2012-05-14T17:35:00",
"startTime":"2012-05-14T16:50:00"
}
],
"startTime":"2012-05-14T14:00:00",
"type":"CourseEvent"
}
],
"slots":[
{
"endTime":"2012-05-14T08:45:00",
"startTime":"2012-05-14T08:00:00"
},
{
"endTime":"2012-05-14T09:35:00",
"startTime":"2012-05-14T08:50:00"
},
{
"endTime":"2012-05-14T10:45:00",
"startTime":"2012-05-14T10:00:00"
},
{
"endTime":"2012-05-14T11:35:00",
"startTime":"2012-05-14T10:50:00"
},
{
"endTime":"2012-05-14T12:45:00",
"startTime":"2012-05-14T12:00:00"
},
{
"endTime":"2012-05-14T13:35:00",
"startTime":"2012-05-14T12:50:00"
},
{
"endTime":"2012-05-14T14:45:00",
"startTime":"2012-05-14T14:00:00"
},
{
"endTime":"2012-05-14T15:35:00",
"startTime":"2012-05-14T14:50:00"
},
{
"endTime":"2012-05-14T16:45:00",
"startTime":"2012-05-14T16:00:00"
},
{
"endTime":"2012-05-14T17:35:00",
"startTime":"2012-05-14T16:50:00"
},
{
"endTime":"2012-05-14T18:45:00",
"startTime":"2012-05-14T18:00:00"
},
{
"endTime":"2012-05-14T19:35:00",
"startTime":"2012-05-14T18:50:00"
},
{
"endTime":"2012-05-14T20:30:00",
"startTime":"2012-05-14T19:45:00"
},
{
"endTime":"2012-05-14T21:20:00",
"startTime":"2012-05-14T20:35:00"
}
]
}
],
"course":{
"name":"t.SRM-G",
"description":"Safety- und Riskmanagement - Gruppenunterricht"
},
"lecturer":null,
"room":null,
"class":null,
"student":null
}Example 9. Tagesstundenplan eines Kurses in XML
Request:
GET /v1/schedules/courses/t.SRM-G?startingAt=2012-05-14&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort:
<?xml version="1.0" encoding="utf-8"?>
<schedule xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<type>Course</type>
<days>
<day>
<date>2012-05-14T00:00:00</date>
<events>
<event>
<description>Safety- und Riskmanagement - Gruppenunterricht</description>
<endTime>2012-05-14T17:35:00</endTime>
<name>t.SRM-G</name>
<eventRealizations>
<eventRealization>
<room>
<name>TB 610</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Heinrich</firstName>
<lastName>Kuhn</lastName>
<shortName>kuhn</shortName>
</lecturer>
<lecturer>
<type>Lecturer</type>
<firstName>Andrea</firstName>
<lastName>Muggli</lastName>
<shortName>muga</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV09a.BA</name>
</class>
<class>
<name>T_AV09b.BA</name>
</class>
<class>
<name>T_AV09c.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T14:45:00</endTime>
<startTime>2012-05-14T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T15:35:00</endTime>
<startTime>2012-05-14T14:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T16:45:00</endTime>
<startTime>2012-05-14T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T17:35:00</endTime>
<startTime>2012-05-14T16:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T14:00:00</startTime>
<type>CourseEvent</type>
</event>
</events>
<slots>
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T09:35:00</endTime>
<startTime>2012-05-14T08:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T10:45:00</endTime>
<startTime>2012-05-14T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T11:35:00</endTime>
<startTime>2012-05-14T10:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T12:45:00</endTime>
<startTime>2012-05-14T12:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T13:35:00</endTime>
<startTime>2012-05-14T12:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T14:45:00</endTime>
<startTime>2012-05-14T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T15:35:00</endTime>
<startTime>2012-05-14T14:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T16:45:00</endTime>
<startTime>2012-05-14T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T17:35:00</endTime>
<startTime>2012-05-14T16:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T18:45:00</endTime>
<startTime>2012-05-14T18:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T19:35:00</endTime>
<startTime>2012-05-14T18:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T20:30:00</endTime>
<startTime>2012-05-14T19:45:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T21:20:00</endTime>
<startTime>2012-05-14T20:35:00</startTime>
</slot>
</slots>
</day>
</days>
<course>
<name>t.SRM-G</name>
<description>Safety- und Riskmanagement - Gruppenunterricht</description>
</course>
</schedule>Liefert einen Index mit den Dozenten, für die Stundenpläne vorhanden sind. Sind keine Dozenten verzeichnet, ist der Index leer.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/lecturers/ -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten oder im falschen Format.
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 10. Dozenten-Index in JSON
Request:
GET /v1/schedules/lecturers/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort (gekürzt):
{
"lecturers": [
{
"name": "Christian Abegglen",
"shortName": "abegglen"
},
{
"name": " Abegglen",
"shortName": "abg"
},
{
"name": "Francesco Accardo",
"shortName": "acca"
},
{
"name": "Christian Adlhart",
"shortName": "adas"
},
{
"name": "Josef Adam",
"shortName": "adjo"
},
{
"name": "Marc Zwicky",
"shortName": "zwim"
},
{
"name": "Markus Zwyssig",
"shortName": "zwys"
}
]
}Example 11. Dozenten-Index in XML
Request:
GET /v1/schedules/lecturers/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort (gekürzt):
<?xml version="1.0"?>
<index xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<lecturers>
<lecturer>
<name>Christian Abegglen</name>
<shortName>abegglen</shortName>
</lecturer>
<lecturer>
<name> Abegglen</name>
<shortName>abg</shortName>
</lecturer>
<lecturer>
<name>Francesco Accardo</name>
<shortName>acca</shortName>
</lecturer>
<!-- ... -->
<lecturer>
<name>Marc Zwicky</name>
<shortName>zwim</shortName>
</lecturer>
<lecturer>
<name>Markus Zwyssig</name>
<shortName>zwys</shortName>
</lecturer>
</lecturers>
</index>Retourniert den Stundenplan des Dozenten mit dem Dozentenkürzel name.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/lecturers/{name}?startingAt={date}&days={number} -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
| Name | Beschreibung |
|---|---|
| days searchpart, optional | Anzahl Tage, die der Stundenplan umfassen soll. Es werden Werte aus dem Intervall [1,7] akzeptiert. Wird die Anzahl Tage nicht angegeben, werden standardmässig 7 Tage angezeigt. Beispiel-Wert: 6
|
| name url-path, vorgeschrieben | Kürzel des Dozenten, dessen Stundenplan abgerufen werden soll. Beispiel-Wert: abcd
|
| startingAt searchpart, optional | Datum, mit dem der Stundenplan beginnen soll, in der Form JJJJ-MM-TT. Wird kein Datum angegeben, wird das aktuelle Datum verwendet. Beispiel-Wert: 2012-05-18
|
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten, im falschen Format oder Werte für übergebene Parameter sind illegal. Beispiel: Stundenplan soll mehr als 7 Tage lang sein.
-
404 Not FoundStundenplan kann nicht gefunden werden (Dozent unbekannt, kein Stundenplan für das gewählte Datum…)
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 12. Tagesstundenplan eines Dozenten in JSON
Request:
GET /v1/schedules/lecturers/baug?startingAt=2012-05-15&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort:
{
"type":"Lecturer",
"days":[
{
"date":"2012-05-15T00:00:00",
"events":[
{
"description":"Decision Support Systems - Vorlesung",
"endTime":"2012-05-15T11:35:00",
"name":"t.DSSY-V",
"eventRealizations":[
{
"room":{
"name":"TL 418"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Gerold",
"lastName":"Baudinot",
"shortName":"baug"
}
],
"classes":[
{
"name":"T_SI09a.BA"
},
{
"name":"T_UI09b.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-15T10:45:00",
"startTime":"2012-05-15T10:00:00"
},
{
"endTime":"2012-05-15T11:35:00",
"startTime":"2012-05-15T10:50:00"
}
],
"startTime":"2012-05-15T10:00:00",
"type":"CourseEvent"
}
],
"slots":[
{
"endTime":"2012-05-15T08:45:00",
"startTime":"2012-05-15T08:00:00"
},
{
"endTime":"2012-05-15T09:35:00",
"startTime":"2012-05-15T08:50:00"
},
{
"endTime":"2012-05-15T10:45:00",
"startTime":"2012-05-15T10:00:00"
},
{
"endTime":"2012-05-15T11:35:00",
"startTime":"2012-05-15T10:50:00"
},
{
"endTime":"2012-05-15T12:45:00",
"startTime":"2012-05-15T12:00:00"
},
{
"endTime":"2012-05-15T13:35:00",
"startTime":"2012-05-15T12:50:00"
},
{
"endTime":"2012-05-15T14:45:00",
"startTime":"2012-05-15T14:00:00"
},
{
"endTime":"2012-05-15T15:35:00",
"startTime":"2012-05-15T14:50:00"
},
{
"endTime":"2012-05-15T16:45:00",
"startTime":"2012-05-15T16:00:00"
},
{
"endTime":"2012-05-15T17:35:00",
"startTime":"2012-05-15T16:50:00"
},
{
"endTime":"2012-05-15T18:45:00",
"startTime":"2012-05-15T18:00:00"
},
{
"endTime":"2012-05-15T19:35:00",
"startTime":"2012-05-15T18:50:00"
},
{
"endTime":"2012-05-15T20:30:00",
"startTime":"2012-05-15T19:45:00"
},
{
"endTime":"2012-05-15T21:20:00",
"startTime":"2012-05-15T20:35:00"
}
]
}
],
"course":null,
"lecturer":{
"type":"Lecturer",
"department":{
"name":"T"
},
"firstName":null,
"lastName":null,
"shortName":"baug"
},
"room":null,
"class":null,
"student":null
}Example 13. Tagesstundenplan eines Dozenten in XML
Request:
GET /v1/schedules/lecturers/baug?startingAt=2012-05-15&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort:
<?xml version="1.0" encoding="utf-8"?>
<schedule xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<type>Lecturer</type>
<days>
<day>
<date>2012-05-15T00:00:00</date>
<events>
<event>
<description>Decision Support Systems - Vorlesung</description>
<endTime>2012-05-15T11:35:00</endTime>
<name>t.DSSY-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TL 418</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Gerold</firstName>
<lastName>Baudinot</lastName>
<shortName>baug</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_SI09a.BA</name>
</class>
<class>
<name>T_UI09b.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-15T10:45:00</endTime>
<startTime>2012-05-15T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T11:35:00</endTime>
<startTime>2012-05-15T10:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-15T10:00:00</startTime>
<type>CourseEvent</type>
</event>
</events>
<slots>
<slot>
<endTime>2012-05-15T08:45:00</endTime>
<startTime>2012-05-15T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T09:35:00</endTime>
<startTime>2012-05-15T08:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T10:45:00</endTime>
<startTime>2012-05-15T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T11:35:00</endTime>
<startTime>2012-05-15T10:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T12:45:00</endTime>
<startTime>2012-05-15T12:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T13:35:00</endTime>
<startTime>2012-05-15T12:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T14:45:00</endTime>
<startTime>2012-05-15T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T15:35:00</endTime>
<startTime>2012-05-15T14:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T16:45:00</endTime>
<startTime>2012-05-15T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T17:35:00</endTime>
<startTime>2012-05-15T16:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T18:45:00</endTime>
<startTime>2012-05-15T18:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T19:35:00</endTime>
<startTime>2012-05-15T18:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T20:30:00</endTime>
<startTime>2012-05-15T19:45:00</startTime>
</slot>
<slot>
<endTime>2012-05-15T21:20:00</endTime>
<startTime>2012-05-15T20:35:00</startTime>
</slot>
</slots>
</day>
</days>
<lecturer>
<type>Lecturer</type>
<department>
<name>T</name>
</department>
<shortName>baug</shortName>
</lecturer>
</schedule>Liefert einen Index mit den Räumen, für die Stundenpläne vorhanden sind. Sind keine Räume verzeichnet, ist der Index leer.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/rooms/ -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten oder im falschen Format.
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 14. Raum-Index in JSON
Request:
GET /v1/schedules/rooms/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort (gekürzt):
{
"rooms": [
"b 156",
"b 404",
"tp 404",
"tp 405",
"tp 405/1",
"tp 406",
"tp 407",
"tp 407/1",
"tp 408",
"tp 410"
]
}Example 15. Raum-Index in XML
Request:
GET /v1/schedules/rooms/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort (gekürzt):
<?xml version="1.0"?>
<index xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<rooms>
<room>b 156</room>
<room>b 404</room>
<room>b156</room>
<room>b404</room>
<!-- ... -->
<room>tp 406</room>
<room>tp 407</room>
<room>tp 407/1</room>
<room>tp 408</room>
<room>tp 410</room>
</rooms>
</index>Retourniert den Stundenplan des Dozenten mit dem Dozentenkürzel name.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/rooms/{name}?startingAt={date}&days={number} -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
| Name | Beschreibung |
|---|---|
| days searchpart, optional | Anzahl Tage, die der Stundenplan umfassen soll. Es werden Werte aus dem Intervall [1,7] akzeptiert. Wird die Anzahl Tage nicht angegeben, werden standardmässig 7 Tage angezeigt. Beispiel-Wert: 6
|
| name url-path, vorgeschrieben | Name des Raums, dessen Stundenplan abgerufen werden soll. Beispiel-Wert: TB 610
|
| startingAt searchpart, optional | Datum, mit dem der Stundenplan beginnen soll, in der Form JJJJ-MM-TT. Wird kein Datum angegeben, wird das aktuelle Datum verwendet. Beispiel-Wert: 2012-05-18
|
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten, im falschen Format oder Werte für übergebene Parameter sind illegal. Beispiel: Stundenplan soll mehr als 7 Tage lang sein.
-
404 Not FoundStundenplan kann nicht gefunden werden (Raum unbekannt, kein Stundenplan für das gewählte Datum…)
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 16. Tagesstundenplan eines Raums in JSON
Request:
GET /v1/schedules/rooms/TB%20610?startingAt=2012-05-14&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort:
{
"type":"Room",
"days":[
{
"date":"2012-05-14T00:00:00",
"events":[
{
"description":"Corporate Network Infrastructure Vorlesung",
"endTime":"2012-05-14T09:35:00",
"name":"t.CNI-V",
"eventRealizations":[
{
"room":{
"name":"TB 610"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Kurt",
"lastName":"Hauser",
"shortName":"husr"
},
{
"type":"Lecturer",
"department":null,
"firstName":"Hans",
"lastName":"Weibel",
"shortName":"wlan"
}
],
"classes":[
{
"name":"T_SI09a.BA"
},
{
"name":"T_UI09b.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T08:45:00",
"startTime":"2012-05-14T08:00:00"
},
{
"endTime":"2012-05-14T09:35:00",
"startTime":"2012-05-14T08:50:00"
}
],
"startTime":"2012-05-14T08:00:00",
"type":"CourseEvent"
},
{
"description":"Regelungstechnik 2 Vorlesung",
"endTime":"2012-05-14T13:35:00",
"name":"t.RT2-V",
"eventRealizations":[
{
"room":{
"name":"TB 610"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Ruprecht",
"lastName":"Altenburger",
"shortName":"altb"
}
],
"classes":[
{
"name":"T_ME09a.BA"
},
{
"name":"T_ME09b.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T12:45:00",
"startTime":"2012-05-14T12:00:00"
},
{
"endTime":"2012-05-14T13:35:00",
"startTime":"2012-05-14T12:50:00"
}
],
"startTime":"2012-05-14T12:00:00",
"type":"CourseEvent"
},
{
"description":"Safety- und Riskmanagement - Gruppenunterricht",
"endTime":"2012-05-14T17:35:00",
"name":"t.SRM-G",
"eventRealizations":[
{
"room":{
"name":"TB 610"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Heinrich",
"lastName":"Kuhn",
"shortName":"kuhn"
},
{
"type":"Lecturer",
"department":null,
"firstName":"Andrea",
"lastName":"Muggli",
"shortName":"muga"
}
],
"classes":[
{
"name":"T_AV09a.BA"
},
{
"name":"T_AV09b.BA"
},
{
"name":"T_AV09c.BA"
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T14:45:00",
"startTime":"2012-05-14T14:00:00"
},
{
"endTime":"2012-05-14T15:35:00",
"startTime":"2012-05-14T14:50:00"
},
{
"endTime":"2012-05-14T16:45:00",
"startTime":"2012-05-14T16:00:00"
},
{
"endTime":"2012-05-14T17:35:00",
"startTime":"2012-05-14T16:50:00"
}
],
"startTime":"2012-05-14T14:00:00",
"type":"CourseEvent"
}
],
"slots":[
{
"endTime":"2012-05-14T08:45:00",
"startTime":"2012-05-14T08:00:00"
},
{
"endTime":"2012-05-14T09:35:00",
"startTime":"2012-05-14T08:50:00"
},
{
"endTime":"2012-05-14T10:45:00",
"startTime":"2012-05-14T10:00:00"
},
{
"endTime":"2012-05-14T11:35:00",
"startTime":"2012-05-14T10:50:00"
},
{
"endTime":"2012-05-14T12:45:00",
"startTime":"2012-05-14T12:00:00"
},
{
"endTime":"2012-05-14T13:35:00",
"startTime":"2012-05-14T12:50:00"
},
{
"endTime":"2012-05-14T14:45:00",
"startTime":"2012-05-14T14:00:00"
},
{
"endTime":"2012-05-14T15:35:00",
"startTime":"2012-05-14T14:50:00"
},
{
"endTime":"2012-05-14T16:45:00",
"startTime":"2012-05-14T16:00:00"
},
{
"endTime":"2012-05-14T17:35:00",
"startTime":"2012-05-14T16:50:00"
},
{
"endTime":"2012-05-14T18:45:00",
"startTime":"2012-05-14T18:00:00"
},
{
"endTime":"2012-05-14T19:35:00",
"startTime":"2012-05-14T18:50:00"
},
{
"endTime":"2012-05-14T20:30:00",
"startTime":"2012-05-14T19:45:00"
},
{
"endTime":"2012-05-14T21:20:00",
"startTime":"2012-05-14T20:35:00"
}
]
}
],
"course":null,
"lecturer":null,
"room":{
"name":"TB 610"
},
"class":null,
"student":null
}Example 17. Tagesstundenplan eines Raums in XML
Request:
GET /v1/schedules/rooms/TB%20610?startingAt=2012-05-14&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort:
<?xml version="1.0" encoding="utf-8"?>
<schedule xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<type>Room</type>
<days>
<day>
<date>2012-05-14T00:00:00</date>
<events>
<event>
<description>Corporate Network Infrastructure Vorlesung</description>
<endTime>2012-05-14T09:35:00</endTime>
<name>t.CNI-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TB 610</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Kurt</firstName>
<lastName>Hauser</lastName>
<shortName>husr</shortName>
</lecturer>
<lecturer>
<type>Lecturer</type>
<firstName>Hans</firstName>
<lastName>Weibel</lastName>
<shortName>wlan</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_SI09a.BA</name>
</class>
<class>
<name>T_UI09b.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T09:35:00</endTime>
<startTime>2012-05-14T08:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T08:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description>Regelungstechnik 2 Vorlesung</description>
<endTime>2012-05-14T13:35:00</endTime>
<name>t.RT2-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TB 610</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Ruprecht</firstName>
<lastName>Altenburger</lastName>
<shortName>altb</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_ME09a.BA</name>
</class>
<class>
<name>T_ME09b.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T12:45:00</endTime>
<startTime>2012-05-14T12:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T13:35:00</endTime>
<startTime>2012-05-14T12:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T12:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description>Safety- und Riskmanagement - Gruppenunterricht</description>
<endTime>2012-05-14T17:35:00</endTime>
<name>t.SRM-G</name>
<eventRealizations>
<eventRealization>
<room>
<name>TB 610</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Heinrich</firstName>
<lastName>Kuhn</lastName>
<shortName>kuhn</shortName>
</lecturer>
<lecturer>
<type>Lecturer</type>
<firstName>Andrea</firstName>
<lastName>Muggli</lastName>
<shortName>muga</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV09a.BA</name>
</class>
<class>
<name>T_AV09b.BA</name>
</class>
<class>
<name>T_AV09c.BA</name>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T14:45:00</endTime>
<startTime>2012-05-14T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T15:35:00</endTime>
<startTime>2012-05-14T14:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T16:45:00</endTime>
<startTime>2012-05-14T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T17:35:00</endTime>
<startTime>2012-05-14T16:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T14:00:00</startTime>
<type>CourseEvent</type>
</event>
</events>
<slots>
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T09:35:00</endTime>
<startTime>2012-05-14T08:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T10:45:00</endTime>
<startTime>2012-05-14T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T11:35:00</endTime>
<startTime>2012-05-14T10:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T12:45:00</endTime>
<startTime>2012-05-14T12:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T13:35:00</endTime>
<startTime>2012-05-14T12:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T14:45:00</endTime>
<startTime>2012-05-14T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T15:35:00</endTime>
<startTime>2012-05-14T14:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T16:45:00</endTime>
<startTime>2012-05-14T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T17:35:00</endTime>
<startTime>2012-05-14T16:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T18:45:00</endTime>
<startTime>2012-05-14T18:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T19:35:00</endTime>
<startTime>2012-05-14T18:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T20:30:00</endTime>
<startTime>2012-05-14T19:45:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T21:20:00</endTime>
<startTime>2012-05-14T20:35:00</startTime>
</slot>
</slots>
</day>
</days>
<room>
<name>TB 610</name>
</room>
</schedule>Liefert einen Index mit den Studenten, für die Stundenpläne vorhanden sind. Sind keine Studenten vorhanden, wird ein leerer Index zurückgegeben.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/students/ -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten oder im falschen Format.
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 18. Studenten-Index in JSON
Request:
GET /v1/schedules/students/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort (gekürzt):
{
"students": [
"abarorol",
"abdalham",
"abderlar",
"acarina1",
"achermar",
"ackerdin",
"ackermer",
"ackersan",
"zweiftam",
"zwingtsu",
"zynamsha",
"zysseste"
]
}Example 19. Studenten-Index in XML
Request:
GET /v1/schedules/students/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort (gekürzt):
<?xml version="1.0"?>
<index xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<students>
<student>abarorol</student>
<student>abdalham</student>
<student>abderlar</student>
<student>acarina1</student>
<student>achermar</student>
<student>ackerdin</student>
<!-- ... -->
<student>zweidkar</student>
<student>zweifnad</student>
<student>zweifpat</student>
<student>zweiftam</student>
<student>zwingtsu</student>
<student>zynamsha</student>
<student>zysseste</student>
</students>
</index>Retourniert den Stundenplan des Studenten mit dem Studentenkürzel name.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/schedules/students/{name}?startingAt={date}&days={number} -
Cacheable
nein
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
| Name | Beschreibung |
|---|---|
| days searchpart, optional | Anzahl Tage, die der Stundenplan umfassen soll. Es werden Werte aus dem Intervall [1,7] akzeptiert. Wird die Anzahl Tage nicht angegeben, werden standardmässig 7 Tage angezeigt. Beispiel-Wert: 6
|
| name url-path, vorgeschrieben | Kürzel des Studenten, dessen Stundenplan abgerufen werden soll. Beispiel-Wert: musteeri
|
| startingAt searchpart, optional | Datum, mit dem der Stundenplan beginnen soll, in der Form JJJJ-MM-TT. Wird kein Datum angegeben, wird das aktuelle Datum verwendet. Beispiel-Wert: 2012-05-18
|
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten, im falschen Format oder Werte für übergebene Parameter sind illegal. Beispiel: Stundenplan soll mehr als 7 Tage lang sein.
-
404 Not FoundStundenplan kann nicht gefunden werden (Student unbekannt, kein Stundenplan für das gewählte Datum…)
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
504 Gateway TimeoutEiner der Drittservices, von denen der CampusInfo Server seine Daten bezieht, hat nicht (rechtzeitig) geantwortet.
Example 20. Tagesstundenplan eines Studenten in JSON
Request:
GET /v1/schedules/students/hablumat?startingAt=2012-05-14&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort:
{
"type":"Student",
"days":[
{
"date":"2012-05-14T00:00:00",
"events":[
{
"description":"Corporate Network Infrastructure Vorlesung",
"endTime":"2012-05-14T09:35:00",
"name":"t.CNI-V",
"eventRealizations":[
{
"room":{
"name":"TB 610"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Kurt",
"lastName":"Hauser",
"shortName":"husr"
},
{
"type":"Lecturer",
"department":null,
"firstName":"Hans",
"lastName":"Weibel",
"shortName":"wlan"
}
],
"classes":[
{
"name":""
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T08:45:00",
"startTime":"2012-05-14T08:00:00"
},
{
"endTime":"2012-05-14T09:35:00",
"startTime":"2012-05-14T08:50:00"
}
],
"startTime":"2012-05-14T08:00:00",
"type":"CourseEvent"
},
{
"description":"Nachrichtentechnik und Mobilkommunikation 2 Vorlesung",
"endTime":"2012-05-14T11:35:00",
"name":"t.NTM2-V",
"eventRealizations":[
{
"room":{
"name":"TE 402"
},
"lecturers":[
{
"type":"Lecturer",
"department":null,
"firstName":"Marcel",
"lastName":"Rupf",
"shortName":"rumc"
}
],
"classes":[
{
"name":""
}
]
}
],
"slots":[
{
"endTime":"2012-05-14T10:45:00",
"startTime":"2012-05-14T10:00:00"
},
{
"endTime":"2012-05-14T11:35:00",
"startTime":"2012-05-14T10:50:00"
}
],
"startTime":"2012-05-14T10:00:00",
"type":"CourseEvent"
}
],
"slots":[
{
"endTime":"2012-05-14T08:45:00",
"startTime":"2012-05-14T08:00:00"
},
{
"endTime":"2012-05-14T09:35:00",
"startTime":"2012-05-14T08:50:00"
},
{
"endTime":"2012-05-14T10:45:00",
"startTime":"2012-05-14T10:00:00"
},
{
"endTime":"2012-05-14T11:35:00",
"startTime":"2012-05-14T10:50:00"
},
{
"endTime":"2012-05-14T12:45:00",
"startTime":"2012-05-14T12:00:00"
},
{
"endTime":"2012-05-14T13:35:00",
"startTime":"2012-05-14T12:50:00"
},
{
"endTime":"2012-05-14T14:45:00",
"startTime":"2012-05-14T14:00:00"
},
{
"endTime":"2012-05-14T15:35:00",
"startTime":"2012-05-14T14:50:00"
},
{
"endTime":"2012-05-14T16:45:00",
"startTime":"2012-05-14T16:00:00"
},
{
"endTime":"2012-05-14T17:35:00",
"startTime":"2012-05-14T16:50:00"
},
{
"endTime":"2012-05-14T18:45:00",
"startTime":"2012-05-14T18:00:00"
},
{
"endTime":"2012-05-14T19:35:00",
"startTime":"2012-05-14T18:50:00"
},
{
"endTime":"2012-05-14T20:30:00",
"startTime":"2012-05-14T19:45:00"
},
{
"endTime":"2012-05-14T21:20:00",
"startTime":"2012-05-14T20:35:00"
}
]
}
],
"course":null,
"lecturer":null,
"room":null,
"class":null,
"student":{
"type":"Student",
"department":{
"name":"T"
},
"firstName":null,
"lastName":null,
"shortName":"hablumat"
}
}Example 21. Tagesstundenplan eines Studenten in XML
Request:
GET /v1/schedules/students/hablumat?startingAt=2012-05-14&days=1 HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort:
<?xml version="1.0" encoding="utf-8"?>
<schedule xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<type>Student</type>
<days>
<day>
<date>2012-05-14T00:00:00</date>
<events>
<event>
<description>Corporate Network Infrastructure Vorlesung</description>
<endTime>2012-05-14T09:35:00</endTime>
<name>t.CNI-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TB 610</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Kurt</firstName>
<lastName>Hauser</lastName>
<shortName>husr</shortName>
</lecturer>
<lecturer>
<type>Lecturer</type>
<firstName>Hans</firstName>
<lastName>Weibel</lastName>
<shortName>wlan</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name/>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T09:35:00</endTime>
<startTime>2012-05-14T08:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T08:00:00</startTime>
<type>CourseEvent</type>
</event>
<event>
<description>Nachrichtentechnik und Mobilkommunikation 2 Vorlesung</description>
<endTime>2012-05-14T11:35:00</endTime>
<name>t.NTM2-V</name>
<eventRealizations>
<eventRealization>
<room>
<name>TE 402</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Marcel</firstName>
<lastName>Rupf</lastName>
<shortName>rumc</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name/>
</class>
</classes>
</eventRealization>
</eventRealizations>
<slots>
<slot>
<endTime>2012-05-14T10:45:00</endTime>
<startTime>2012-05-14T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T11:35:00</endTime>
<startTime>2012-05-14T10:50:00</startTime>
</slot>
</slots>
<startTime>2012-05-14T10:00:00</startTime>
<type>CourseEvent</type>
</event>
</events>
<slots>
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T09:35:00</endTime>
<startTime>2012-05-14T08:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T10:45:00</endTime>
<startTime>2012-05-14T10:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T11:35:00</endTime>
<startTime>2012-05-14T10:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T12:45:00</endTime>
<startTime>2012-05-14T12:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T13:35:00</endTime>
<startTime>2012-05-14T12:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T14:45:00</endTime>
<startTime>2012-05-14T14:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T15:35:00</endTime>
<startTime>2012-05-14T14:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T16:45:00</endTime>
<startTime>2012-05-14T16:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T17:35:00</endTime>
<startTime>2012-05-14T16:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T18:45:00</endTime>
<startTime>2012-05-14T18:00:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T19:35:00</endTime>
<startTime>2012-05-14T18:50:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T20:30:00</endTime>
<startTime>2012-05-14T19:45:00</startTime>
</slot>
<slot>
<endTime>2012-05-14T21:20:00</endTime>
<startTime>2012-05-14T20:35:00</startTime>
</slot>
</slots>
</day>
</days>
<student>
<type>Student</type>
<department>
<name>T</name>
</department>
<shortName>hablumat</shortName>
</student>
</schedule>Retourniert Liste der Mensen und Cafeterien für alle unterstützte ZHAW-Standorte inklusive ihrer Öffnungszeiten und Ferientage.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/catering/facilities -
Cacheable
ja (ETag)
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten oder im falschen Format.
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
Example 22. Liste der ZHAW-Mensen und Cafeterien in JSON
Request:
GET /v1/catering/facilities/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort:
{
"gastronomicFacilities": [
{
"holidays": [
{
"endsAt": "2013-05-02T00:00:00+02:00",
"id": 1,
"name": "1. Mai",
"startsAt": "2013-05-01T00:00:00+02:00",
"version": "AAAAAAAAC7w="
}
],
"id": 2,
"location": {
"id": 1,
"name": "Winterthur",
"version": "AAAAAAAAB9E="
},
"name": "St. Georgenplatz",
"serviceTimePeriods": [
{
"endsOn": "2013-06-02T00:00:00+02:00",
"id": 2,
"lunchTimePlan": {
"type": "LunchTimePlan",
"wednesday": {
"from": "11:00",
"type": "LunchTime",
"until": "13:45"
}
},
"openingTimePlan": {
"type": "OpeningTimePlan",
"wednesday": {
"from": "07:00",
"type": "OpeningTime",
"until": "20:00"
}
},
"startsOn": "2013-02-18T00:00:00+01:00",
"version": "AAAAAAAAC74="
}
],
"type": "Canteen",
"version": "AAAAAAAAC7o="
}
]
}Example 23. Liste der ZHAW-Mensen und Cafeterien in XML
Request:
GET /v1/catering/facilities/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort:
<?xml version="1.0"?>
<gastronomicFacilityList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<gastronomicFacilities>
<gastronomicFacility>
<holidays>
<holiday>
<endsAt>2013-05-02T00:00:00+02:00</endsAt>
<id>1</id>
<name>1. Mai</name>
<startsAt>2013-05-01T00:00:00+02:00</startsAt>
<version>AAAAAAAAC7w=</version>
</holiday>
<holiday>
<endsAt>2013-05-10T00:00:00+02:00</endsAt>
<id>2</id>
<name>Auffahrt</name>
<startsAt>2013-05-08T16:00:00+02:00</startsAt>
<version>AAAAAAAAD6E=</version>
</holiday>
</holidays>
<id>2</id>
<location>
<id>1</id>
<name>Winterthur</name>
<version>AAAAAAAAB9E=</version>
</location>
<name>St. Georgenplatz</name>
<serviceTimePeriods>
<serviceTimePeriod>
<endsOn>2013-06-02T00:00:00+02:00</endsOn>
<id>2</id>
<lunchTimePlan>
<friday>
<from>11:00</from>
<type>LunchTime</type>
<until>13:45</until>
</friday>
<monday>
<from>11:00</from>
<type>LunchTime</type>
<until>13:45</until>
</monday>
<saturday>
<type>LunchTime</type>
</saturday>
<sunday>
<type>LunchTime</type>
</sunday>
<thursday>
<from>11:00</from>
<type>LunchTime</type>
<until>13:45</until>
</thursday>
<tuesday>
<from>11:00</from>
<type>LunchTime</type>
<until>13:45</until>
</tuesday>
<type>LunchTimePlan</type>
<wednesday>
<from>11:00</from>
<type>LunchTime</type>
<until>13:45</until>
</wednesday>
</lunchTimePlan>
<openingTimePlan>
<friday>
<from>07:00</from>
<type>OpeningTime</type>
<until>16:00</until>
</friday>
<monday>
<from>07:00</from>
<type>OpeningTime</type>
<until>20:00</until>
</monday>
<saturday>
<from>07:00</from>
<type>OpeningTime</type>
<until>13:00</until>
</saturday>
<sunday>
<type>OpeningTime</type>
</sunday>
<thursday>
<from>07:00</from>
<type>OpeningTime</type>
<until>20:00</until>
</thursday>
<tuesday>
<from>07:00</from>
<type>OpeningTime</type>
<until>20:00</until>
</tuesday>
<type>OpeningTimePlan</type>
<wednesday>
<from>07:00</from>
<type>OpeningTime</type>
<until>20:00</until>
</wednesday>
</openingTimePlan>
<startsOn>2013-02-18T00:00:00+01:00</startsOn>
<version>AAAAAAAAC74=</version>
</serviceTimePeriod>
</serviceTimePeriods>
<type>Canteen</type>
<version>AAAAAAAAC7o=</version>
</gastronomicFacility>
</gastronomicFacilities>
</gastronomicFacilityList>Retourniert Liste mit allen Menüplänen, die für die gewünschte Kalenderwoche des angegebenen Jahres hinterlegt sind.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/catering/menuplans/years/{year}/weeks/{week}/ -
Cacheable
ja (ETag)
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
| Name | Beschreibung |
|---|---|
| week url-path, vorgeschrieben | Nummer der Kalenderwoche nach ISO 8601 im gewählten Jahr, für die die Liste der Menüpläne abgerufen werden soll. Beispiel-Wert: 8
|
| year url-path, vorgeschrieben | Jahr der Kalenderwoche, für die die Liste der Menüpläne abgerufen werden soll. Beispiel-Wert: 2013
|
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten, im falschen Format oder Parameter ungültig (z.B. ungültige Kalenderwochennummer).
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
Example 24. Liste der Menüpläne für die Woche 08/2013
Request:
GET /v1/catering/menuplans/years/2013/weeks/8/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort:
{
"menuPlans": [
{
"calendarWeek": {
"week": 8,
"year": 2013
},
"gastronomicFacilityIds": [
1,
2,
3
],
"id": 2,
"menus": [
{
"dishes": [
{
"externalPrice": 11.0,
"id": 16,
"internalPrice": 7.0,
"label": "Tagesmenu",
"name": "Pouletgeschnetzeltes \"Casimir\" (BR)",
"priceForPartners": 8.0,
"sideDishes": [
{
"id": 31,
"name": "an Currysauce mit Fr\u00fcchten",
"version": "AAAAAAAADAU="
},
{
"id": 32,
"name": "Trockenreis",
"version": "AAAAAAAADAY="
},
{
"id": 33,
"name": "Menusalat",
"version": "AAAAAAAADAc="
}
],
"version": "AAAAAAAAC/U="
},
{
"externalPrice": 9.5,
"id": 17,
"internalPrice": 5.5,
"label": "Budget Menu (Nur im Technikum)",
"name": "Kartoffelgratin",
"priceForPartners": 6.5,
"sideDishes": [
{
"id": 34,
"name": "mit Lauch und K\u00e4se",
"version": "AAAAAAAADAg="
}
],
"version": "AAAAAAAAC/Y="
},
{
"externalPrice": 10.0,
"id": 18,
"internalPrice": 6.0,
"label": "Vegimenu",
"name": "\"Tortiglioni del Patrone\"",
"priceForPartners": 7.0,
"sideDishes": [
{
"id": 35,
"name": "mit getrockneten Tomaten",
"version": "AAAAAAAADAk="
},
{
"id": 36,
"name": "und Champignons",
"version": "AAAAAAAADAo="
}
],
"version": "AAAAAAAAC/c="
}
],
"id": 6,
"offeredOn": "2013-02-19T00:00:00+01:00",
"version": "AAAAAAAAC/Q="
},
{
"dishes": [
{
"externalPrice": 11.0,
"id": 19,
"internalPrice": 7.0,
"label": "Tagesmenu",
"name": "Pochiertes Flunderfilet (NL)",
"priceForPartners": 8.0,
"sideDishes": [
{
"id": 37,
"name": "mit Curcuma-Dillsauce",
"version": "AAAAAAAADAs="
},
{
"id": 38,
"name": "Salzkartoffeln",
"version": "AAAAAAAADAw="
},
{
"id": 39,
"name": "Fenchel gebraten",
"version": "AAAAAAAADA0="
}
],
"version": "AAAAAAAAC/k="
},
{
"externalPrice": 9.5,
"id": 20,
"internalPrice": 5.5,
"label": "Budget Menu (Nur im Technikum)",
"name": "Teigwaren",
"priceForPartners": 6.5,
"sideDishes": [
{
"id": 40,
"name": "an Tomatensauce",
"version": "AAAAAAAADA4="
},
{
"id": 41,
"name": "und Pilz",
"version": "AAAAAAAADA8="
}
],
"version": "AAAAAAAAC/o="
},
{
"externalPrice": 10.0,
"id": 21,
"internalPrice": 6.0,
"label": "Vegimenu",
"name": "K\u00e4sekuchen",
"priceForPartners": 7.0,
"sideDishes": [
{
"id": 42,
"name": "mit saisonaler Salatgarnitur",
"version": "AAAAAAAADBA="
}
],
"version": "AAAAAAAAC/s="
}
],
"id": 7,
"offeredOn": "2013-02-20T00:00:00+01:00",
"version": "AAAAAAAAC/g="
},
{
"dishes": [
{
"externalPrice": 11.0,
"id": 22,
"internalPrice": 7.0,
"label": "Tagesmenu",
"name": "Rindsbraten (CH)",
"priceForPartners": 8.0,
"sideDishes": [
{
"id": 43,
"name": "an Portweinjus",
"version": "AAAAAAAADBE="
},
{
"id": 44,
"name": "Griessgnocchi",
"version": "AAAAAAAADBI="
},
{
"id": 45,
"name": "R\u00fcebli",
"version": "AAAAAAAADBM="
}
],
"version": "AAAAAAAAC/0="
},
{
"externalPrice": 9.5,
"id": 23,
"internalPrice": 5.5,
"label": "Budget Menu (Nur im Technikum)",
"name": "Pastagratin",
"priceForPartners": 6.5,
"sideDishes": [
{
"id": 46,
"name": "mit Tomaten und",
"version": "AAAAAAAADBQ="
},
{
"id": 47,
"name": "Mozzarella \u00fcberbacken",
"version": "AAAAAAAADBU="
}
],
"version": "AAAAAAAAC/4="
},
{
"externalPrice": 10.0,
"id": 24,
"internalPrice": 6.0,
"label": "Vegimenu",
"name": "Kartoffelgnocchi",
"priceForPartners": 7.0,
"sideDishes": [
{
"id": 48,
"name": "an Currysauce",
"version": "AAAAAAAADBY="
},
{
"id": 49,
"name": "mit Sonnenblumenkernen und Lauch",
"version": "AAAAAAAADBc="
}
],
"version": "AAAAAAAAC/8="
}
],
"id": 8,
"offeredOn": "2013-02-21T00:00:00+01:00",
"version": "AAAAAAAAC/w="
},
{
"dishes": [
{
"externalPrice": 11.0,
"id": 25,
"internalPrice": 7.0,
"label": "Tagesmenu",
"name": "Spaghetti",
"priceForPartners": 8.0,
"sideDishes": [
{
"id": 50,
"name": "Bolognaise",
"version": "AAAAAAAADBg="
},
{
"id": 51,
"name": "mit Rindfleisch (CH)",
"version": "AAAAAAAADBk="
},
{
"id": 52,
"name": "Tagessalat",
"version": "AAAAAAAADBo="
}
],
"version": "AAAAAAAADAI="
},
{
"externalPrice": 9.5,
"id": 26,
"internalPrice": 5.5,
"label": "Budget Menu (Nur im Technikum)",
"name": "Teigwaren",
"priceForPartners": 6.5,
"sideDishes": [
{
"id": 53,
"name": "an Kr\u00e4utersauce",
"version": "AAAAAAAADBs="
}
],
"version": "AAAAAAAADAM="
},
{
"externalPrice": 10.0,
"id": 27,
"internalPrice": 6.0,
"label": "Vegimenu",
"name": "Gem\u00fcse-Pilzrago\u00fbt",
"priceForPartners": 7.0,
"sideDishes": [
{
"id": 54,
"name": "an Harissasauce",
"version": "AAAAAAAADBw="
},
{
"id": 55,
"name": "Indischer Gew\u00fcrzreis",
"version": "AAAAAAAADB0="
}
],
"version": "AAAAAAAADAQ="
}
],
"id": 9,
"offeredOn": "2013-02-22T00:00:00+01:00",
"version": "AAAAAAAADAE="
}
],
"version": "AAAAAAAAC/M="
}
]
}Example 25. Liste der Menüpläne für die Woche 08/2013
Request:
GET /v1/catering/menuplans/years/2013/weeks/8/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort:
<?xml version="1.0"?>
<menuPlanList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<menuPlans>
<menuPlan>
<calendarWeek>
<week>8</week>
<year>2013</year>
</calendarWeek>
<gastronomicFacilityIds>
<gastronomicFacilityId>1</gastronomicFacilityId>
<gastronomicFacilityId>2</gastronomicFacilityId>
<gastronomicFacilityId>3</gastronomicFacilityId>
</gastronomicFacilityIds>
<id>2</id>
<menus>
<menu>
<dishes>
<dish>
<externalPrice>11.0000</externalPrice>
<id>16</id>
<internalPrice>7.0000</internalPrice>
<label>Tagesmenu</label>
<name>Pouletgeschnetzeltes "Casimir" (BR)</name>
<priceForPartners>8.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>31</id>
<name>an Currysauce mit Früchten</name>
<version>AAAAAAAADAU=</version>
</sideDish>
<sideDish>
<id>32</id>
<name>Trockenreis</name>
<version>AAAAAAAADAY=</version>
</sideDish>
<sideDish>
<id>33</id>
<name>Menusalat</name>
<version>AAAAAAAADAc=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/U=</version>
</dish>
<dish>
<externalPrice>9.5000</externalPrice>
<id>17</id>
<internalPrice>5.5000</internalPrice>
<label>Budget Menu (Nur im Technikum)</label>
<name>Kartoffelgratin</name>
<priceForPartners>6.5000</priceForPartners>
<sideDishes>
<sideDish>
<id>34</id>
<name>mit Lauch und Käse</name>
<version>AAAAAAAADAg=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/Y=</version>
</dish>
<dish>
<externalPrice>10.0000</externalPrice>
<id>18</id>
<internalPrice>6.0000</internalPrice>
<label>Vegimenu</label>
<name>"Tortiglioni del Patrone"</name>
<priceForPartners>7.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>35</id>
<name>mit getrockneten Tomaten</name>
<version>AAAAAAAADAk=</version>
</sideDish>
<sideDish>
<id>36</id>
<name>und Champignons</name>
<version>AAAAAAAADAo=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/c=</version>
</dish>
</dishes>
<id>6</id>
<offeredOn>2013-02-19T00:00:00+01:00</offeredOn>
<version>AAAAAAAAC/Q=</version>
</menu>
<menu>
<dishes>
<dish>
<externalPrice>11.0000</externalPrice>
<id>19</id>
<internalPrice>7.0000</internalPrice>
<label>Tagesmenu</label>
<name>Pochiertes Flunderfilet (NL)</name>
<priceForPartners>8.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>37</id>
<name>mit Curcuma-Dillsauce</name>
<version>AAAAAAAADAs=</version>
</sideDish>
<sideDish>
<id>38</id>
<name>Salzkartoffeln</name>
<version>AAAAAAAADAw=</version>
</sideDish>
<sideDish>
<id>39</id>
<name>Fenchel gebraten</name>
<version>AAAAAAAADA0=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/k=</version>
</dish>
<dish>
<externalPrice>9.5000</externalPrice>
<id>20</id>
<internalPrice>5.5000</internalPrice>
<label>Budget Menu (Nur im Technikum)</label>
<name>Teigwaren</name>
<priceForPartners>6.5000</priceForPartners>
<sideDishes>
<sideDish>
<id>40</id>
<name>an Tomatensauce</name>
<version>AAAAAAAADA4=</version>
</sideDish>
<sideDish>
<id>41</id>
<name>und Pilz</name>
<version>AAAAAAAADA8=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/o=</version>
</dish>
<dish>
<externalPrice>10.0000</externalPrice>
<id>21</id>
<internalPrice>6.0000</internalPrice>
<label>Vegimenu</label>
<name>Käsekuchen</name>
<priceForPartners>7.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>42</id>
<name>mit saisonaler Salatgarnitur</name>
<version>AAAAAAAADBA=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/s=</version>
</dish>
</dishes>
<id>7</id>
<offeredOn>2013-02-20T00:00:00+01:00</offeredOn>
<version>AAAAAAAAC/g=</version>
</menu>
<menu>
<dishes>
<dish>
<externalPrice>11.0000</externalPrice>
<id>22</id>
<internalPrice>7.0000</internalPrice>
<label>Tagesmenu</label>
<name>Rindsbraten (CH)</name>
<priceForPartners>8.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>43</id>
<name>an Portweinjus</name>
<version>AAAAAAAADBE=</version>
</sideDish>
<sideDish>
<id>44</id>
<name>Griessgnocchi</name>
<version>AAAAAAAADBI=</version>
</sideDish>
<sideDish>
<id>45</id>
<name>Rüebli</name>
<version>AAAAAAAADBM=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/0=</version>
</dish>
<dish>
<externalPrice>9.5000</externalPrice>
<id>23</id>
<internalPrice>5.5000</internalPrice>
<label>Budget Menu (Nur im Technikum)</label>
<name>Pastagratin</name>
<priceForPartners>6.5000</priceForPartners>
<sideDishes>
<sideDish>
<id>46</id>
<name>mit Tomaten und</name>
<version>AAAAAAAADBQ=</version>
</sideDish>
<sideDish>
<id>47</id>
<name>Mozzarella überbacken</name>
<version>AAAAAAAADBU=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/4=</version>
</dish>
<dish>
<externalPrice>10.0000</externalPrice>
<id>24</id>
<internalPrice>6.0000</internalPrice>
<label>Vegimenu</label>
<name>Kartoffelgnocchi</name>
<priceForPartners>7.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>48</id>
<name>an Currysauce</name>
<version>AAAAAAAADBY=</version>
</sideDish>
<sideDish>
<id>49</id>
<name>mit Sonnenblumenkernen und Lauch</name>
<version>AAAAAAAADBc=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/8=</version>
</dish>
</dishes>
<id>8</id>
<offeredOn>2013-02-21T00:00:00+01:00</offeredOn>
<version>AAAAAAAAC/w=</version>
</menu>
<menu>
<dishes>
<dish>
<externalPrice>11.0000</externalPrice>
<id>25</id>
<internalPrice>7.0000</internalPrice>
<label>Tagesmenu</label>
<name>Spaghetti</name>
<priceForPartners>8.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>50</id>
<name>Bolognaise</name>
<version>AAAAAAAADBg=</version>
</sideDish>
<sideDish>
<id>51</id>
<name>mit Rindfleisch (CH)</name>
<version>AAAAAAAADBk=</version>
</sideDish>
<sideDish>
<id>52</id>
<name>Tagessalat</name>
<version>AAAAAAAADBo=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAADAI=</version>
</dish>
<dish>
<externalPrice>9.5000</externalPrice>
<id>26</id>
<internalPrice>5.5000</internalPrice>
<label>Budget Menu (Nur im Technikum)</label>
<name>Teigwaren</name>
<priceForPartners>6.5000</priceForPartners>
<sideDishes>
<sideDish>
<id>53</id>
<name>an Kräutersauce</name>
<version>AAAAAAAADBs=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAADAM=</version>
</dish>
<dish>
<externalPrice>10.0000</externalPrice>
<id>27</id>
<internalPrice>6.0000</internalPrice>
<label>Vegimenu</label>
<name>Gemüse-Pilzragoût</name>
<priceForPartners>7.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>54</id>
<name>an Harissasauce</name>
<version>AAAAAAAADBw=</version>
</sideDish>
<sideDish>
<id>55</id>
<name>Indischer Gewürzreis</name>
<version>AAAAAAAADB0=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAADAQ=</version>
</dish>
</dishes>
<id>9</id>
<offeredOn>2013-02-22T00:00:00+01:00</offeredOn>
<version>AAAAAAAADAE=</version>
</menu>
</menus>
<version>AAAAAAAAC/M=</version>
</menuPlan>
</menuPlans>
</menuPlanList>Retourniert Liste mit Metadaten zu den vorhandenen Feeds.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/feeds -
Cacheable
ja (ETag, Cache-Control)
-
Authentifzierung nötig
nein
-
Media Types
application/jsonundapplication/xml
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten oder im falschen Format.
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nichtapplication/jsonbzw.application/xml. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
Example 26. Liste der Feeds JSON
Request:
GET /v1/feeds/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/jsonAntwort:
{
"feeds": [
{
"cacheExpiresAfter": "01:00",
"identifier": "soe-events",
"name": "Veranstaltungen School of Engineering",
"type": "EventFeed",
"url": "http://www.engineering.zhaw.ch/de/engineering/rss-veranstaltungen-engineering.html",
"version": "AAAAAAAAE40="
},
{
"cacheExpiresAfter": "01:00",
"identifier": "soe-news",
"name": "News School of Engineering",
"type": "NewsFeed",
"url": "http://www.engineering.zhaw.ch/de/engineering/rss-school-of-engineering.html",
"version": "AAAAAAAAE4w="
}
]
}Example 27. Liste der Feeds in XML
Request:
GET /v1/feeds/ HTTP/1.1
Host: api.apps.engineering.zhaw.ch
User-Agent: ZHAWCampusInfoDemo (http://init.zhaw.ch/)
Accept: application/xmlAntwort:
<?xml version="1.0"?>
<feedList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<feeds>
<feed>
<cacheExpiresAfter>01:00</cacheExpiresAfter>
<identifier>soe-events</identifier>
<name>Veranstaltungen School of Engineering</name>
<type>EventFeed</type>
<url>http://www.engineering.zhaw.ch/de/engineering/rss-veranstaltungen-engineering.html</url>
<version>AAAAAAAAE40=</version>
</feed>
<feed>
<cacheExpiresAfter>01:00</cacheExpiresAfter>
<identifier>soe-news</identifier>
<name>News School of Engineering</name>
<type>NewsFeed</type>
<url>http://www.engineering.zhaw.ch/de/engineering/rss-school-of-engineering.html</url>
<version>AAAAAAAAE4w=</version>
</feed>
</feeds>
</feedList>Retourniert den gewünschten Feed.
Ressourcen-Informationen
-
URL
https://api.apps.engineering.zhaw.ch/v1/feeds/{identifier}/feed/ -
Cacheable
ja (ETag, Cache-Control)
-
Authentifzierung nötig
nein
-
Media Types
*/*
| Name | Beschreibung |
|---|---|
| identifier url-path, vorgeschrieben | Identifier des jeweiligen Feeds. Beispiel-Wert: zhaw-news
|
Mögliche Fehler
-
400 Bad RequestUser-Agent Header nicht enthalten, im falschen Format oder Parameter ungültig.
-
404 Not FoundEin Feed mit dem angegebenen Identifier existiert nicht.
-
406 Not AcceptableDer
Accept-Header bei der Anfrage war nicht*/*. -
500 Internal Server ErrorBeim Verarbeiten der Anfrage ist ein nicht näher spezifizierter Fehler aufgetreten.
-
502 Bad GatewayDer Feed konnte aufgrund eines Problems beim Quellserver nicht bereitgestellt werden.
Generisches Fehler-Objekt, das zurückgegeben wird, wenn bei der Verarbeitung eines Anfrage ein HTTP-Fehler auftritt.
| Name | Typ | Beschreibung |
|---|---|---|
Message |
String | Fehlernachricht |
Example 28. Fehlermeldung in JSON
{
"Message": "An exception occurred."
}Example 29. Fehlermeldung in XML
<?xml version="1.0"?>
<Error>
<Message>An exception occurred during.</Message>
</Error>Repräsentiert eine Abteilung der ZHAW wie die School of Engineering.
| Name | Typ | Beschreibung |
|---|---|---|
name |
String | Name des Departements. Beispiel-Wert: T
|
Example 30. Department-Objekt in JSON
{
"name":"T"
}Example 31. Department-Objekt in XML
<?xml version="1.0"?>
<department>
<name>T</name>
</department>Repräsentiert einen Raum auf dem Campus der ZHAW.
| Name | Typ | Beschreibung |
|---|---|---|
name |
String | Name des Raums. Beispiel-Wert: TB 610
|
Example 32. Room-Objekt in JSON
{
"name":"TL 201"
}Example 33. Room-Objekt in XML
<?xml version="1.0"?>
<room>
<name>TL 201</name>
</room>Repräsentiert eine Person, die in irgendeiner Form an der ZHAW registriert ist.
| Name | Typ | Beschreibung |
|---|---|---|
department |
Object | Departement, zu dem die Person gehört. |
firstName |
String | Vorname der Person. Beispiel-Wert: Erika
|
lastName |
String | Nachname der Person. Beispiel-Wert: Mustermann
|
shortName |
String | Kürzel der Person, bei Dozenten typischerweise 4 Zeichen lang, bei Studenten 8 Zeichen. Beispiel-Wert: musteeri
|
type |
String | Typ der Person. Gültige Werte sind: Employee (regulärer Angestellter), Lecturer (Dozent), Student (Student) |
Example 34. Person-Objekt in JSON
{
"type":"Lecturer",
"department":{
"name":"T"
},
"firstName":"Erika",
"lastName":"Mustermann",
"shortName":"muer"
}Example 35. Person-Objekt in XML
<?xml version="1.0"?>
<lecturer>
<type>Lecturer</type>
<department>
<name>T</name>
</department>
<firstName>Hanfried</firstName>
<lastName>Hesselbarth</lastName>
<shortName>hsbh</shortName>
</lecturer>Repräsentiert eine Schulklasse.
| Name | Typ | Beschreibung |
|---|---|---|
name |
String | Name der Schulklasse. Beispiel-Wert: T_AV10a.BA
|
Example 36. Class-Objekt in JSON
{
"name":"T_AV10a.BA"
}Example 37. Class-Objekt in XML
<?xml version="1.0"?>
<class>
<name>T_AV10a.BA</name>
</class>Repräsentiert eine Veranstaltungsart eines Moduls, zum Beispiel Übungen oder Vorlesung.
| Name | Typ | Beschreibung |
|---|---|---|
description |
String | Beschreibung des Kurses. Beispiel-Wert: Java für Fortgeschrittene - Praktikum
|
name |
String | Name des Kurses. Beispiel-Wert: t.JFF-P
|
Example 38. Course-Objekt in JSON
{
"description": "Java für Fortgeschrittene - Praktikum",
"name": "t.JFF-P"
}Example 39. Course-Objekt in XML
<?xml version="1.0"?>
<course>
<description>Java für Fortgeschrittene - Praktikum</description>
<name>T_AV10a.BA</name>
</course>Repräsentiert eine Veranstaltung (Ferien, Unterricht), die an einem einzelnen Tag des Stundenplans stattfindet.
| Name | Typ | Beschreibung |
|---|---|---|
description |
String | Beschreibung der Veranstaltung. Beispiel-Wert: Java für Fortgeschrittene - Praktikum
|
endTime |
DateTime | Zeit, zu der die Lektion endet, nach ISO 8601. Beispiel-Wert: 2012-05-15T08:45:00
|
eventRealizations |
Liste von Object | Liste der Durchführungen dieser Veranstaltung, die an demselben Tag stattfinden. |
name |
String | Name des Veranstaltung. Beispiel-Wert: t.JFF-P
|
slots |
Liste von Object | Liste von Lektionen, die von der Veranstaltung belegt werden. |
startTime |
DateTime | Zeit, zu der die Lektion beginnt, nach ISO 8601. Beispiel-Wert: 2012-05-15T08:00:00
|
type |
String | Typ der Veranstaltung. Gültige Werte sind: CourseEvent (Unterricht), Holiday (Feiertag) |
Example 40. Event-Objekt in JSON
{
"description": "",
"endTime": "2012-05-14T09:35:00",
"eventRealizations": [],
"name": "t.TEMS-V",
"slots": [],
"startTime": "2012-05-14T08:00:00",
"type": "CourseEvent"
}Example 41. Event-Objekt in XML
<?xml version="1.0"?>
<event>
<description/>
<endTime>2012-05-14T09:35:00</endTime>
<name>t.TEMS-V</name>
<eventRealizations/>
<slots/>
<startTime>2012-05-14T08:00:00</startTime>
<type>CourseEvent</type>
</event>Repräsentiert eine von eventuell mehreren parallelen Durchführungen einer Veranstaltung. Sind zum Beispiel “zu viele” Studenten für eine Veranstaltung angemeldet, können verschiedene Dozenten sie gleichzeitig parallel in zwei verschiedenen Räumen betreuen.
| Name | Typ | Beschreibung |
|---|---|---|
classes |
Liste von Object | Liste von Klassen, die bei dieser Durchführung der Veranstaltung anwesend sind. |
lecturers |
Liste von Object | Liste der Dozenten, die diese Durchführung der Veranstaltung betreuen. |
room |
Object | Raum, in dem Durchführung der Veranstaltung stattfindet. |
Example 42. EventRealization-Objekt in JSON
{
"classes": [
{
"name": "T_AV10a.BA"
}
],
"lecturers": [
{
"department": null,
"firstName": "Hanfried",
"lastName": "Hesselbarth",
"shortName": "hsbh",
"type": "Lecturer"
}
],
"room": {
"name": "TL 201"
}
}Example 43. EventRealization-Objekt in XML
<?xml version="1.0"?>
<eventRealization>
<room>
<name>TL 201</name>
</room>
<lecturers>
<lecturer>
<type>Lecturer</type>
<firstName>Hanfried</firstName>
<lastName>Hesselbarth</lastName>
<shortName>hsbh</shortName>
</lecturer>
</lecturers>
<classes>
<class>
<name>T_AV10a.BA</name>
</class>
</classes>
</eventRealization>Repräsentiert einen Tag, der Teil des Stundenplans ist.
| Name | Typ | Beschreibung |
|---|---|---|
date |
DateTime | Datum des Tages nach ISO 8601. Beispiel-Wert: 2012-05-14T00:00:00
|
events |
Liste von Object | Liste der Veranstaltungen, die an diesem Tag stattfinden. |
slots |
Liste von Object | Liste von Lektionen, in denen an diesem Tag Veranstaltungen stattfinden können. Dient zum Aufbau des Stundenrasters. |
Example 44. Day-Objekt in JSON
{
"date":"2012-05-14T00:00:00",
"events":[],
"slots":[]
}Example 45. Day-Objekt in XML
<day>
<date>2012-05-14T00:00:00</date>
<events/>
<slots/>
</day>Repräsentiert einen Stundenplan, der eine bestimmte Anzahl von Tagen umfasst und entweder zu einer Klasse, einem Kurs, einem Dozenten, einem Studenten oder einem Raum gehört.
| Name | Typ | Beschreibung |
|---|---|---|
class |
Object | Schulkasse, für die der Stundenplan ist. Nur gesetzt, falls der Typ des Stundenplans Class ist. |
course |
Object | Kurs, für den der Stundenplan ist. Nur gesetzt, falls der Typ des Stundenplans Course ist. |
days |
Liste von Object | Liste der Tage, die der Stundenplan umfasst. |
lecturer |
Object | Dozent, für den der Stundenplan ist. Nur gesetzt, falls der Typ des Stundenplans Lecturer ist. |
room |
Object | Raum, für den der Stundenplan ist. Nur gesetzt, falls der Typ des Stundenplans Room ist. |
student |
Object | Student, für die der Stundenplan ist. Nur gesetzt, falls der Typ des Stundenplans Student ist. |
type |
String | Typ des Stundenplans. Gültige Werte sind: Class (Stundenplan einer Schulklasse), Course (Stundenplan eines Kurses), Lecutrer (Stundenplan eines Dozenten), Room (Stundenplan eines Raums), Student (Stundenplan eines Studenten) |
| Beispiele für Stundenpläne sind im Abschnitt Stundenplan-Ressourcen zu finden. | |
|---|---|
Repräsentiert einen Zeitschlitz (“Lektion”) im Zeitraster des Stundenplans.
| Name | Typ | Beschreibung |
|---|---|---|
endTime |
DateTime | Zeit, zu der die Lektion endet, nach ISO 8601. Beispiel-Wert: 2012-05-15T08:45:00
|
startTime |
DateTime | Zeit, zu der die Lektion beginnt, nach ISO 8601. Beispiel-Wert: 2012-05-15T08:00:00
|
Example 46. Slot-Objekt in JSON
{
"endTime": "2012-05-14T17:35:00",
"startTime": "2012-05-14T16:50:00"
}Example 47. Slot-Objekt in XML
<slot>
<endTime>2012-05-14T08:45:00</endTime>
<startTime>2012-05-14T08:00:00</startTime>
</slot>Repräsentiert eine Kalenderwoche eines spezifischen Jahres.
| Name | Typ | Beschreibung |
|---|---|---|
week |
Integer | Wochennummer der Kalenderwoche nach ISO 8601. Beispiel-Wert: 5
|
year |
Integer | Jahreszahl des Jahres, in dem die Kalenderwoche liegt. Beispiel-Wert: 2013
|
Example 48. CalendarWeek-Objekt in JSON
{
"week": 8,
"year": 2013
}Example 49. CalendarWeek-Objekt in XML
<calendarWeek>
<week>8</week>
<year>2013</year>
</calendarWeek>Repräsentiert ein Gericht, das an einem spezifischen Tag im Angebot ist.
| Name | Typ | Beschreibung |
|---|---|---|
externalPrice |
Decimal | Preis, den Personen für das Gericht bezahlen müssen, die nicht Mitglieder bzw. Partner der ZHAW sind. Beispiel-Wert: 8.00
|
id |
Integer | Eindeutige Identifikationsnummer des Gerichts (bzw. des Datensatzes). Wird durch den Server verwaltet. Beispiel-Wert: 3
|
internalPrice |
Decimal | Preis, den Mitglieder der ZHAW für das Gericht bezahlen müssen. Beispiel-Wert: 6.50
|
label |
String | Bezeichnet die Art des Gerichts, z.B. "Tagesmenü" oder "Budget-Menü". Beispiel-Wert: Tagesmenü
|
name |
String | Name des Gerichts. Beispiel-Wert: Omelette
|
priceForPartners |
Decimal | Preis, den Partner der ZHAW für das Gericht bezahlen müssen. Beispiel-Wert: 7.50
|
sideDishes |
Liste von Object | Liste der Beilagen zum Gericht (kann leer sein). |
version |
String |
Base64-codierter Byte-Array, der die Version des Gerichts (also des Datensatzes) eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAAC/0=
|
Example 50. Dish-Objekt in JSON
{
"externalPrice": 10.0,
"id": 18,
"internalPrice": 6.0,
"label": "Vegimenu",
"name": "\"Tortiglioni del Patrone\"",
"priceForPartners": 7.0,
"sideDishes": [
{
"id": 35,
"name": "mit getrockneten Tomaten",
"version": "AAAAAAAADAk="
},
{
"id": 36,
"name": "und Champignons",
"version": "AAAAAAAADAo="
}
],
"version": "AAAAAAAAC/c="
}Example 51. Dish-Objekt in XML
<dish>
<externalPrice>11.0000</externalPrice>
<id>22</id>
<internalPrice>7.0000</internalPrice>
<label>Tagesmenu</label>
<name>Rindsbraten (CH)</name>
<priceForPartners>8.0000</priceForPartners>
<sideDishes>
<sideDish>
<id>43</id>
<name>an Portweinjus</name>
<version>AAAAAAAADBE=</version>
</sideDish>
<sideDish>
<id>44</id>
<name>Griessgnocchi</name>
<version>AAAAAAAADBI=</version>
</sideDish>
<sideDish>
<id>45</id>
<name>Rüebli</name>
<version>AAAAAAAADBM=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/0=</version>
</dish>Repräsentiert eine Mensa respektive Cafeteria der ZHAW.
| Name | Typ | Beschreibung |
|---|---|---|
holidays |
Liste von Object | Liste der Feiertage, an denen die Mensa respektive Cafeteria geschlossen bleibt. Kann leer sein. |
id |
Integer | Eindeutige Identifikationsnummer der Mensa/Cafeteria (bzw. des Datensatzes). Wird durch den Server verwaltet. Beispiel-Wert: 83
|
location |
Object | Ort, an dem sich die Mensa/Cafeteria befindet. |
name |
String | Name der Mensa/Cafeteria. Beispiel-Wert: Tössfeld
|
serviceTimePeriods |
Liste von Object | Liste mit Servicezeiten der Mensa/Cafeteria (d.h. Öffnungs- und Mittagszeiten). Kann leer sein. |
type |
String | Typ des Objekts. Definiert, ob es sich um eine Mensa (Canteen) oder eine Cafeteria (Cafeteria) handelt. Beispiel-Wert: Canteen
|
version |
String |
Base64-codierter Byte-Array, der die Version des Objekts (also des Datensatzes) eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAAC7o=
|
| Ist die Liste der Servicezeiten leer oder sind keine Servicezeiten für den benötigten Zeitraum hinterlegt, bedeutet das nicht, dass die Mensa/Cafeteria geschlossen ist. Eine Mensa/Cafeteria ist erst dann geschlossen, wenn die Servicezeiten hinterlegt, der Eintrag für den gewünschten Tag aber fehlt. | |
|---|---|
| Beispiele für Mensa/Cafeteria-Objekte sind in der Ressourcen-Dokumentation zu finden. | |
|---|---|
Repräsentiert einen Feiertag, an dem eine Mensa/Cafeteria geschlossen ist.
| Name | Typ | Beschreibung |
|---|---|---|
endsAt |
DateTime | Zeitpunkt, zu dem der Feiertag endet, nach ISO 8601. Die Dauer eines Feiertags ist definiert als startsAt <= holiday < endsAt. Beispiel-Wert: 2013-05-02T00:00:00+02:00
|
id |
Integer | Eindeutige Identifikationsnummer des Feiertags (bzw. des Datensatzes). Wird durch den Server verwaltet. Beispiel-Wert: 19
|
name |
String | Name des Feiertags. Beispiel-Wert: Weihnachten
|
startsAt |
DateTime | Zeitpunkt, zu dem der Feiertag beginnt, nach ISO 8601. Die Dauer eines Feiertags ist definiert als startsAt <= holiday < endsAt. Beispiel-Wert: 2013-05-01T00:00:00+02:00
|
version |
String |
Base64-codierter Byte-Array, der die Version des Objekts (also des Datensatzes) eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAAC7w=
|
Example 52. Holiday-Objekt in JSON
{
"endsAt": "2013-05-02T00:00:00+02:00",
"id": 1,
"name": "1. Mai",
"startsAt": "2013-05-01T00:00:00+02:00",
"version": "AAAAAAAAC7w="
}Example 53. Holiday-Objekt in XML
<holiday>
<endsAt>2013-05-10T00:00:00+02:00</endsAt>
<id>2</id>
<name>Auffahrt</name>
<startsAt>2013-05-08T16:00:00+02:00</startsAt>
<version>AAAAAAAAD6E=</version>
</holiday>Repräsentiert einen Ort, an dem sich eine Mensa/Cafeteria der ZHAW befindet.
| Name | Typ | Beschreibung |
|---|---|---|
id |
Integer | Eindeutige Identifikationsnummer des Orts (bzw. des Datensatzes). Wird durch den Server verwaltet. Beispiel-Wert: 201
|
name |
String | Name des Orts. Beispiel-Wert: Winterthur
|
version |
String |
Base64-codierter Byte-Array, der die Version des Objekts (also des Datensatzes) eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAAB9E=
|
Example 54. Location-Objekt in JSON
{
"id": 1,
"name": "Winterthur",
"version": "AAAAAAAAB9E="
}Example 55. Location-Objekt in XML
<location>
<id>1</id>
<name>Winterthur</name>
<version>AAAAAAAAB9E=</version>
</location>Repräsentiert ein Menü, d.h. die Menge der Gerichte, die an einem bestimmten Tag angeboten werden.
| Name | Typ | Beschreibung |
|---|---|---|
dishes |
Liste von Object | Liste der Gerichte, die Teil des Menüs sind. |
id |
Integer | Nummer, die den den Datensatz eindeutig identifiziert. Wird vom Server verwaltet. Beispiel-Wert: 9
|
offeredOn |
LocalDate | Datum des Tages, an dem das Menü angeboten wird, in der lokalen Zeitzone der Mensa/Cafeteria nach ISO 8601. Beispiel-Wert: 2013-01-13
|
version |
String |
Base64-codierter Byte-Array, der die Version des Objekts (also des Datensatzes) eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAAC/Q=
|
Example 56. Menu-Objekt in JSON
{
"dishes": [
{
"externalPrice": 9.5,
"id": 17,
"internalPrice": 5.5,
"label": "Budget Menu (Nur im Technikum)",
"name": "Kartoffelgratin",
"priceForPartners": 6.5,
"sideDishes": [
{
"id": 34,
"name": "mit Lauch und K\u00e4se",
"version": "AAAAAAAADAg="
}
],
"version": "AAAAAAAAC/Y="
}
],
"id": 6,
"offeredOn": "2013-02-19T00:00:00+01:00",
"version": "AAAAAAAAC/Q="
}Example 57. Menu-Objekt in XML
<menu>
<dishes>
<dish>
<externalPrice>9.5000</externalPrice>
<id>17</id>
<internalPrice>5.5000</internalPrice>
<label>Budget Menu (Nur im Technikum)</label>
<name>Kartoffelgratin</name>
<priceForPartners>6.5000</priceForPartners>
<sideDishes>
<sideDish>
<id>34</id>
<name>mit Lauch und Käse</name>
<version>AAAAAAAADAg=</version>
</sideDish>
</sideDishes>
<version>AAAAAAAAC/Y=</version>
</dish>
</dishes>
<id>6</id>
<offeredOn>2013-02-19T00:00:00+01:00</offeredOn>
<version>AAAAAAAAC/Q=</version>
</menu>Repräsentiert einen Menüplan für eine bestimmte Kalenderwoche.
| Name | Typ | Beschreibung |
|---|---|---|
calendarWeek |
Object | Kalenderwoche, für die der Menüplan gültig ist. |
gastronomicFacilityIds |
Liste von Integer | Enthält die Liste der IDs der Mensen/Cafeterias, für die der Menüplan gültig ist. Es handelt sich um die Werte aus dem Feld id des Objekts GastronomicFacility. |
id |
Integer | Nummer, die den den Datensatz eindeutig identifiziert. Wird vom Server verwaltet. Beispiel-Wert: 97
|
menus |
Liste von Object | Liste der Menüs, die der Menüplan umfasst. |
version |
String |
Base64-codierter Byte-Array, der die Version des Objekts (also des Datensatzes) eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAAC/Q=
|
| Beispiele für MenuPlan-Objekte sind in der Ressourcen-Dokumentation zu finden. | |
|---|---|
Repräsentiert eine Kalenderwoche eines spezifischen Jahres.
| Name | Typ | Beschreibung |
|---|---|---|
from |
LocalTime | Zeitpunkt, ab dem die Mensa/Cafeteria offen ist bzw. Mittagessen erhältlich ist, in der lokalen Zeitzone der Mensa/Cafeteria. Die Dauer ist definiert als from <= ServiceTime < until. Beispiel-Wert: 09:45
|
type |
String | Art der Servicezeit, entweder Öffnungszeit (OpeningTime) oder Mittagszeit (LunchTime). Beispiel-Wert: OpeningTime
|
until |
LocalTime | Zeitpunkt, bis zu dem die Mensa/Cafeteria offen ist bzw. Mittagessen erhältlich ist, in der lokalen Zeitzone der Mensa/Cafeteria. Die Dauer ist definiert als from <= ServiceTime < until. Beispiel-Wert: 12:15
|
Example 58. ServiceTime-Objekt in JSON
{
"from": "07:00",
"type": "OpeningTime",
"until": "20:00"
}Example 59. ServiceTime-Objekt in XML
<thursday>
<from>11:00</from>
<type>LunchTime</type>
<until>13:45</until>
</thursday>Beinhaltet die Servicezeiten (wie Öffnungszeiten und Mittagszeiten) für einen gewissen Zeitraum.
| Name | Typ | Beschreibung |
|---|---|---|
endsOn |
LocalDate | Tag, bis zu dem die Servicezeiten gültig sind, nach ISO 8601. Die Gültigkeitsdauer der Servicezeiten ist definiert als startsOn <= ServiceTimePeriod <= endsOn. Beispiel-Wert: 2013-06-02T00:00:00+02:00
|
id |
Integer | Nummer, die den den Datensatz eindeutig identifiziert. Wird vom Server verwaltet. Beispiel-Wert: 14
|
lunchTimePlan |
Object | Mittagszeiten für die aktuelle Periode. Wird kein Mittagessen angeboten, fehlen die Zeitangaben. |
openingTimePlan |
Object | Öffnungszeiten für die aktuelle Periode. Fehlen die Zeitangaben, ist die Mensa/Cafeteria geschlossen. |
startsOn |
LocalDate | Tag, ab dem die Servicezeiten gültig sind, nach ISO 8601. Die Gültigkeitsdauer der Servicezeiten ist definiert als startsOn <= ServiceTimePeriod <= endsOn. Beispiel-Wert: 2013-02-18T00:00:00+01:00
|
version |
String |
Base64-codierter Byte-Array, der die Version des Objekts (also des Datensatzes) eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAAC74=
|
Example 60. ServiceTimePeriod-Objekt in JSON
{
"endsOn": "2013-06-02T00:00:00+02:00",
"id": 2,
"lunchTimePlan": {
"type": "LunchTimePlan",
"wednesday": {
"from": "11:00",
"type": "LunchTime",
"until": "13:45"
}
},
"openingTimePlan": {
"type": "OpeningTimePlan",
"wednesday": {
"from": "07:00",
"type": "OpeningTime",
"until": "20:00"
}
},
"startsOn": "2013-02-18T00:00:00+01:00",
"version": "AAAAAAAAC74="
}Example 61. ServiceTimePeriod-Objekt in XML
<serviceTimePeriod>
<endsOn>2013-06-02T00:00:00+02:00</endsOn>
<id>2</id>
<lunchTimePlan>
<monday>
<from>11:00</from>
<type>LunchTime</type>
<until>13:45</until>
</monday>
<type>LunchTimePlan</type>
</lunchTimePlan>
<openingTimePlan>
<monday>
<from>07:00</from>
<type>OpeningTime</type>
<until>20:00</until>
</monday>
<type>OpeningTimePlan</type>
</openingTimePlan>
<startsOn>2013-02-18T00:00:00+01:00</startsOn>
<version>AAAAAAAAC74=</version>
</serviceTimePeriod>Repräsentiert einen Servicezeitenplan.
| Name | Typ | Beschreibung |
|---|---|---|
friday |
Object | Servicezeit für Freitag. Geschlossen (bei Typ OpeningTimePlan) bzw. kein Mittagessen (bei Typ LunchTimePlan), wenn Werte fehlen. |
monday |
Object | Servicezeit für Montag. Geschlossen (bei Typ OpeningTimePlan) bzw. kein Mittagessen (bei Typ LunchTimePlan), wenn Werte fehlen. |
saturday |
Object | Servicezeit für Samstag. Geschlossen (bei Typ OpeningTimePlan) bzw. kein Mittagessen (bei Typ LunchTimePlan), wenn Werte fehlen. |
sunday |
Object | Servicezeit für Sonntag. Geschlossen (bei Typ OpeningTimePlan) bzw. kein Mittagessen (bei Typ LunchTimePlan), wenn Werte fehlen. |
thursday |
Object | Servicezeit für Donnerstag. Geschlossen (bei Typ OpeningTimePlan) bzw. kein Mittagessen (bei Typ LunchTimePlan), wenn Werte fehlen. |
tuesday |
Object | Servicezeit für Dienstag. Geschlossen (bei Typ OpeningTimePlan) bzw. kein Mittagessen (bei Typ LunchTimePlan), wenn Werte fehlen. |
type |
String | Art des Servicezeitenplan, entweder Öffnungszeiten (bei Typ OpeningTimePlan) oder Mittagszeiten (bei Typ LunchTimePlan). Beispiel-Wert: LunchTimePlan
|
wednesday |
Object | Servicezeit für Mittwoch. Geschlossen (bei Typ OpeningTimePlan) bzw. kein Mittagessen (bei Typ LunchTimePlan), wenn Werte fehlen. |
Example 62. ServiceTimePlan-Objekt in JSON
{
"type": "LunchTimePlan",
"wednesday": {
"from": "11:00",
"type": "LunchTime",
"until": "13:45"
}
}Example 63. ServiceTimePlan-Objekt in XML
<?xml version="1.0"?>
<lunchTimePlan>
<monday>
<from>11:00</from>
<type>LunchTime</type>
<until>13:45</until>
</monday>
<type>LunchTimePlan</type>
</lunchTimePlan>Repräsentiert eine Beilage zu einem Gericht.
| Name | Typ | Beschreibung |
|---|---|---|
id |
Integer | Eindeutige Identifikationsnummer der Beilage (bzw. des Datensatzes). Wird durch den Server verwaltet. Beispiel-Wert: 31
|
name |
String | Name der Beilage. Beispiel-Wert: Bohnen
|
version |
String |
Base64-codierter Byte-Array, der die Version des Objekts (also des Datensatzes) eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAADAY=
|
Example 64. SideDish-Objekt in JSON
{
"id": 32,
"name": "Trockenreis",
"version": "AAAAAAAADAY="
}Example 65. SideDish-Objekt in XML
<sideDish>
<id>44</id>
<name>Griessgnocchi</name>
<version>AAAAAAAADBI=</version>
</sideDish>Repräsentiert einen Feed.
| Name | Typ | Beschreibung |
|---|---|---|
cacheExpiresAfter |
LocalTime | Zeit, nach der der zwischengespeicherte Feed abläuft und erneut abgerufen wird, in Stunden und Minuten. Beispiel-Wert: 01:00
|
identifier |
String | Zeichenkette, die den Feed eindeutig identifiziert. Beispiel-Wert: zhaw-news
|
name |
String | Name des Feeds. Beispiel-Wert: News School of Engineering
|
type |
String | Typ des Feeds, entweder EventFeed oder NewsFeed. Beispiel-Wert: EventFeed
|
url |
String | Quell-Url des Feeds. Beispiel-Wert: http://example.com/feed
|
version |
String |
Base64-codierter Byte-Array, der die Version des Datensatzes eindeutig identifiziert. Wird durch den Server verwaltet. Beispiel-Wert: AAAAAAAAC/0=
|
Example 66. Feed-Objekt in JSON
{
"cacheExpiresAfter": "01:00",
"identifier": "soe-events",
"name": "Veranstaltungen School of Engineering",
"type": "EventFeed",
"url": "http://www.engineering.zhaw.ch/de/engineering/rss-veranstaltungen-engineering.html",
"version": "AAAAAAAAE40="
}Example 67. Feed-Objekt in XML
<feed>
<cacheExpiresAfter>01:00</cacheExpiresAfter>
<identifier>soe-news</identifier>
<name>News School of Engineering</name>
<type>NewsFeed</type>
<url>http://www.engineering.zhaw.ch/de/engineering/rss-school-of-engineering.html</url>
<version>AAAAAAAAE4w=</version>
</feed>Last updated 2018-04-12 16:02:55 CEST