Einleitung
Der Tagesfahrplan Service stellt einen Fahrplan inklusive Sollzugbildung und Verspätungsdaten über eine REST Schnittstelle bereit.
Beschreibung der Schnittstelle
Das encoding ist generell UTF-8, d.h. sämtliche Parameter werden als UTF-8 interpretiert [1] und ohne Angabe eines charsets im "Accept" header, wird XML mit encoding UTF-8 zurückgeliefert.
DailyTimetable
Liefert die Fahrplandaten eines Kalendertages, d.h. die Daten sätmlicher Fahrten, deren geplantes Abfahrtsdatum diesem Tag entspricht. Dabei werden Fahrten grundsätzlich immer komplett zurückgeliefert, es werden also auch Halte nach Mitternacht geliefert, falls die Fahrt (geplant) vor 24:00 gestartet ist.
URL: /timetable/{client}/{network}/{date}
bzw. /timetable/{client}/{network}
Parameter | Multiplizität | Typ | Beschreibung |
---|---|---|---|
client |
1 |
Aufzählungstyp |
Der Name des Mandanten |
network |
1 |
Aufzählungstyp |
Das Name des Netzes |
date |
0..1 |
Datum |
Datum des Kalendertages im ISO 8601 Format |
Erläuterungen:
-
client
Die Werte dieses Aufzählungstypen hängen von der Konfiguration der Schnittstelle ab. Es kann lediglich ein einziger Mandant oder gleichzeitig mehrere unterstützt werden.Fehlerhafte bzw. genauer unbekannte Werte werden mit HTTP code 400 (Bad Request) quittiert.
-
network
Dieser Parameter identifiziert das Netz, für das der Fahrplan ausgegeben werden soll. Die gültigen Werte dieses Aufzählungstypen hängen vom gewählten Mandanten ab. Falls das Netz beschränkt wird, werden Fahrten, die gar keinem Netz zugeordnet sind (z.B. ungeplante Fahrten) nicht zurückgeliefert. Der Wert "all" ist grundsätzlich immer gültig und adressiert sämtliche Netze des jeweiligen Mandanten ohne Beschränkung. D.h. hier wären dann auch Fahrten ohne Netzzuordnung enthalten.Unbekannte Werte werden mit HTTP code 400 (Bad Request) quittiert.
-
date
Der Kalendertag, für den der Fahrplan ausgegeben werden soll. Wird hier kein Datum angegeben, so wird der aktuelle Tag adressiert. Liegt der Tag in der Vergangenheit, so können geplante und tatsächliche Zeiten/Fahrverläufe ausgegeben werden, ansonsten können lediglich Planzeiten (ohne Verspätungsdaten) angezeigt werden und dies auch nur, sofern ein Vorladeprozess diese Daten zur Verfügung gestellt hat.
Bei sämtlichen Parametr wird zwischen Groß- und Kleinschreibung unterschieden. Normalerweise sind die Werte aller Aufzählungstyp in Kleinschreibung definiert. |
Beispiel request / response
GET /timetable/{client}/all/2019-03-15 HTTP/1.1
Host: timetable-rest.etc-consult.de
Authorization: Basic cm9iaW46TWpMU3ctdXdtU3Rs
Accept: application/xml
Accept-Language: en
XML Schema
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" targetNamespace="https://www.etc-consult.de/namespace/timetable" xmlns:tns="https://www.etc-consult.de/namespace/timetable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DailyTimetable" type="tns:dailyTimetable"/>
<xs:complexType name="dailyTimetable">
<xs:sequence>
<xs:element name="trains" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="train" type="tns:train" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="date" type="xs:date" use="required"/>
<xs:attribute name="railwayCompany" type="xs:string" use="required"/>
<xs:attribute name="network" type="xs:string" use="required"/>
<xs:attribute name="direction" type="xs:int" use="required"/>
</xs:complexType>
<xs:complexType name="train">
<xs:sequence>
<xs:element name="throughService" type="tns:throughService" minOccurs="0" maxOccurs="1"/>
<xs:element name="stops" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="stop" type="tns:stop" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="number" type="xs:int" use="required"/>
<xs:attribute name="dayOfOperation" type="xs:string" use="required"/>
<xs:attribute name="networkName" type="xs:string"/>
</xs:complexType>
<xs:complexType name="throughService">
<xs:sequence>
<xs:element name="administrationFrom" type="xs:string" minOccurs="1"/>
<xs:element name="administrationTo" type="xs:string" minOccurs="1"/>
<xs:element name="trainnumber" type="xs:string" minOccurs="1"/>
<xs:element name="ibnr" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="stop">
<xs:sequence>
<xs:element name="line" type="xs:string" minOccurs="0"/>
<xs:element name="category" type="xs:string" minOccurs="0"/>
<xs:element name="distanceNextStop" type="xs:long" minOccurs="0"/>
<xs:element name="stopOnRequest" type="xs:boolean"/>
<xs:element name="arrival" type="xs:dateTime" minOccurs="0"/>
<xs:element name="departure" type="xs:dateTime" minOccurs="0"/>
<xs:element name="arrivalDelta" type="xs:duration" minOccurs="0"/>
<xs:element name="departureDelta" type="xs:duration" minOccurs="0"/>
<xs:element name="deltaOrigin" type="xs:string" minOccurs="0"/>
<xs:element name="coordinates" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="location" type="tns:location" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="vehicles" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="vehicle" type="tns:vehicle" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="order" type="xs:double" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="ibnr" type="xs:string"/>
</xs:complexType>
<xs:complexType name="location">
<xs:sequence>
<xs:element name="latitude" type="xs:decimal" minOccurs="1"/>
<xs:element name="longitude" type="xs:decimal" minOccurs="1"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="vehicle">
<xs:sequence>
<xs:element name="number" type="xs:string" minOccurs="0"/>
<xs:element name="abbreviation" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="position" type="xs:int" use="required"/>
<xs:attribute name="circulation" type="xs:string"/>
<xs:attribute name="circulationStart" type="xs:string"/>
<xs:attribute name="circulationEnd" type="xs:string"/>
</xs:complexType>
</xs:schema>