OJPStopEventRequest 2.0

#AutoTranslate

Kurzbeschreibung

Der StopEvent-Service dient dazu, einen Abfahrts- oder Ankunftsmonitor zu konstruieren. Alle Fahrten ab einer Haltestelle und ihren zugeordneten Haltekanten werden einbezogen. Anders als beim Router werden jedoch keine benachbarten Haltestellen ausgegeben, wenn an der angefragten keine Resultate verfügbar sind.

Technische Beschreibung

API-Explorer

Sie können eigene Requests ausprobieren – direkter Link zum API-Explorer.

Request

Die Anfrage erfolgt mit einem OJPStopEventRequest, welche verschiedene Parameter für die Anfrage enthält, nachfolgend ein Beispiel von Bern:

<OJP xmlns="http://www.vdv.de/ojp" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.vdv.de/ojp" version="2.0">
    <OJPRequest>
        <siri:ServiceRequest>
            <siri:ServiceRequestContext>
                <siri:Language>de</siri:Language>
            </siri:ServiceRequestContext>
            <siri:RequestTimestamp>2025-02-11T14:11:26.795Z</siri:RequestTimestamp>
            <siri:RequestorRef>SKIPlus</siri:RequestorRef>
            <OJPStopEventRequest>
                <siri:RequestTimestamp>2025-02-11T14:11:26.795Z</siri:RequestTimestamp>
                <siri:MessageIdentifier>SER_1</siri:MessageIdentifier>
                <Location>
                    <PlaceRef>
                        <siri:StopPointRef>ch:1:sloid:7000</siri:StopPointRef>
                        <Name>
                            <Text>Bern</Text>
                        </Name>
                    </PlaceRef>
                    <DepArrTime>2025-02-11T14:11:21.539Z</DepArrTime>
                </Location>
                <Params>
                    <NumberOfResults>10</NumberOfResults>
                    <StopEventType>departure</StopEventType>
                    <IncludePreviousCalls>true</IncludePreviousCalls>
                    <IncludeOnwardCalls>true</IncludeOnwardCalls>
                    <UseRealtimeData>full</UseRealtimeData>
                </Params>
            </OJPStopEventRequest>
        </siri:ServiceRequest>
    </OJPRequest>
</OJP>

Folgend die Parameter der OJPStopEventRequestStructure:

ElementKardinalitätBeschreibungBeispiel
RequestTimestamp1:1Timestamp der Anfrage. Bevorzugt in Zulu Time.
<siri:RequestTimestamp>2025-02-11T14:11:26.795Z</siri:RequestTimestamp>
MessageIdentifier0:1Der Identifier der Message. Kann vom Benutzer gewählt werden. Kann im Supportfall von Nutzen sein. Dieser wird, wenn vorhanden, in der Response zurückgegeben.
<siri:MessageIdentifier>SER_1</siri:MessageIdentifier>

Location/StopPlaceRef-1:1Referenz zu einem StopPlace, von wo die Fahrten von Interesse abgehen. Das “Name”-Element muss vorhanden sein, wird aber nicht ausgewertet. Mehr Infos.
<PlaceRef>
<StopPlaceRef>ch:1:sloid:7000</StopPlaceRef>
<Name>
<Text>Bern</Text>
</Name>
</PlaceRef>
Location/siri:StopPointRef-1:1Referenz zu einem StopPoint, von wo die Fahrten von Interesse abgehen. Ist die Referenz von einer Haltekannte, werden nur Fahrten, welche dort abgehen, gefunden. Das “Name”-Element muss vorhanden sein, wird aber nicht ausgewertet. Mehr Infos.
<PlaceRef>
<siri:StopPointRef>ch:1:sloid:7000</siri:StopPointRef>
<Name>
<Text>Bern</Text>
</Name>
</PlaceRef>
Location/GeoPosition-1:1WGS84 Koordinaten, es werden die nächsten Abfahrten in der Nähe dieses Punktes in der Reihenfolge der Abfahrten geliefert. Diese können von unterschiedlichen Haltestellen abgehen und sind zeitlich sortiert. Das “Name”-Element muss vorhanden sein, wird aber nicht ausgewertet.
<PlaceRef>
    <GeoPosition>
        <siri:Longitude>8.5545</siri:Longitude>
        <siri:Latitude>47.365</siri:Latitude>
    </GeoPosition>
    <Name>
        <Text>Zürich Kreuzplatz</Text>
    </Name>
</PlaceRef>
Location/DepArrTime0:1Die zu verwendende Zeit. Am Besten als Zulu-Time”Z” ist Zulu-Zeit (also zeitzonenunabhängig). Bei Z müssen unbedingt die Sekunden auch angegeben werden. Stimmt das Format nicht oder ist kein Z vorhanden, versucht das System, die Zeit als lokale Zeit zu interpretieren.
<DepArrTime>2025-02-11T14:11:21.539Z</DepArrTime>

Location/TimeAllowance0:1Zusätzliche Zeit, die benötigt wird, um diesen Ort zu erreichen/zu verlassen (z. B. max. 5 Minuten zu Fuss, aber 10 Minuten mit dem Fahrrad). xs:Duration.
<Location>
<PlaceRef>
<siri:StopPointRef>ch:1:sloid:7000</siri:StopPointRef>
<Name>
<Text>Bern</Text>
</Name>
</PlaceRef>
<TimeAllowance>PT5M</TimeAllowance>
</Location>
Params0:1StopEventParamStructure Details siehe folgende Tabelle.
<Params>
<StopEventType>both</StopEventType>
<IncludePreviousCalls>true</IncludePreviousCalls>
<IncludeOnwardCalls>true</IncludeOnwardCalls>
<IncludeOperatingDays>true</IncludeOperatingDays>
<UseRealtimeData>full</UseRealtimeData>
</Params>

Params des StopEventDataFilters

ElementKardinalitätBeschreibungBeispiel
ModeFilter0:1Filter nach Mode. Element Exclude gibt an, ob die Modes ein- oder ausgeschlossen werden sollen. Es können 1:* Mode hinzugefügt werden. Nur “PtMode” wird unterstützt, “PersonalMode” nicht.<ModeFilter>
    <Exclude>true</Exclude>
    <PtMode>bus</PtMode>
</ModeFilter>
LineFilter0:1Filter nach Linie. Element Exclude gibt an, ob die Linien ein- oder ausgeschlossen werden sollen. Es können 1:* Line hinzugefügt werden.

 

<LineFilter>
<Line>
<siri:LineRef>sbb:91018:A</siri:LineRef>
<siri:DirectionRef>H</siri:DirectionRef>
</Line>
<Exclude>true</Exclude>
</LineFilter>
OperatorFilter0:1Filter nach Betreiber. Element Exclude gibt an, ob die Betreiber ein- oder ausgeschlossen werden sollen. Es können 1:* OperatorRef hinzugefügt werden.
<OperatorFilter>
<Exclude>false</Exclude>
<OperatorRef>ojp:11</OperatorRef>
</OperatorFilter>
NumberOfResults0:1Anzahl Resultate welche angefragt werden. Falls nicht genügend gefunden werden, werden weniger geliefert, falls Resultate mit gleicher Priorität gefunden werden, können auch mehr Resultate geliefert werden.
<NumberOfResults>10</NumberOfResults>
StopEventType0:1Typ der StopEvents:
  • arrival
  • departure
  • both
<StopEventType>both</StopEventType>
IncludePreviousCalls0:1Sollen für die einzelnen Fahrten die vorangehenden Halte angegeben werden?
<IncludePreviousCalls>true</IncludePreviousCalls>
IncludeOnwardCalls0:1Sollen für die einzelnen Fahrten die anschliessenden Halte angegeben werden?
<IncludeOnwardCalls>true</IncludeOnwardCalls>
IncludeOperatingDays0:1Soll die Information zu den Betriebstagen für diesen StopEvent angegeben werden?
<IncludeOperatingDays>true</IncludeOperatingDays>
UseRealtimeData0:1Bestimmt wie die Echtzeit berücksichtigt wird, full = alles; explanatory = auch verspätete und gestrichene Verbindungen (ausführlichste Variante); none = nur gemäss Fahrplan.
<UseRealtimeData>explanatory</UseRealtimeData>
IncludePlacesContext0:1Soll der Ortskontext übertragen werden? Wenn diese Information bereits vorhanden ist, kann mit false die Antwort schlanker gemacht werden. Default ist true.
<IncludePlacesContext>true</IncludePlacesContext>
IncludeSituationsContext0:1Sollen die Ereignismeldungen übertragen werden? Wenn diese Information bereits vorhanden ist, kann mit false die Antwort schlanker gemacht werden. Default ist true.
<IncludeSituationsContext>true</IncludeSituationsContext>
IncludeAllRestrictedLines0:1Es kann Linien geben, die besondere Einschränkungen haben und nicht allgemein für die Öffentlichkeit zugänglich sind. Z.B. Schulbusse, Firmen-Shuttles, Skilifte müssen über einen ACCESS MODE Ski verfügen. Linien mit ACCESS MODE Velo werden ebenfalls aufgenommen. Wenn dieses Flag gesetzt ist, werden vorhandene eingeschränkte Linien vom Router berücksichtigt.
Ein Besipiel sind Autozüge weiter unten.
<IncludeAllRestrictedLines>true</IncludeAllRestrictedLines>

Response

Das empfangene Resultat ist eine OJPStopEventDelivery Meldung, bestehend aus dem TripResponseContext und den verschiedenen TripResults und sieht wie angeführt aus:

<OJP xmlns:siri="http://www.siri.org.uk/siri" xmlns="http://www.vdv.de/ojp" version="2.0">
    <OJPResponse>
        <siri:ServiceDelivery>
           <siri:ResponseTimestamp>2025-02-14T18:03:51.3185811+01:00</siri:ResponseTimestamp>
           <siri:ProducerRef>MENTZ</siri:ProducerRef>
           <OJPStopEventDelivery>
               <siri:ResponseTimestamp>2025-02-14T18:03:51.3185821+01:00</siri:ResponseTimestamp>
               <siri:RequestMessageRef>c5c59047-5c59-4ade-b635-9c942a0125ec</siri:RequestMessageRef>
               <siri:DefaultLanguage>de</siri:DefaultLanguage>
               <CalcTime>42</CalcTime>
               <StopEventResponseContext>
                   <Places>
                       <Place>
                           <StopPlace>
                               <StopPlaceRef>ch:1:sloid:91178</StopPlaceRef>
                               <StopPlaceName>
                                   <Text xml:lang="de">Zürich, Hardturm</Text>
                               </StopPlaceName>
                               <TopographicPlaceRef>23026261:27</TopographicPlaceRef>
                           </StopPlace>
                           <Name>
                               <Text xml:lang="de">Zürich, Hardturm</Text>
                           </Name>
                           <GeoPosition>
                               <siri:Longitude>8.50455</siri:Longitude>
                               <siri:Latitude>47.39415</siri:Latitude>
                           </GeoPosition>
                       </Place>
                       <Place>
                           <StopPoint>
                               <siri:StopPointRef>ch:1:sloid:91178::0</siri:StopPointRef>
                               <StopPointName>
                                   <Text xml:lang="de">Zürich, Hardturm</Text>
                               </StopPointName>
                               <ParentRef>ch:1:sloid:91178</ParentRef>
                               <TopographicPlaceRef>23026261:27</TopographicPlaceRef>
                           </StopPoint>
                           <Name>
                               <Text xml:lang="de">Zürich, Hardturm</Text>
                           </Name>
                           <GeoPosition>
                               <siri:Longitude>8.50455</siri:Longitude>
                               <siri:Latitude>47.39415</siri:Latitude>
                           </GeoPosition>
                       </Place>
                       <Place>
                           <TopographicPlace>
                               <TopographicPlaceCode>23026261:27</TopographicPlaceCode>
                               <TopographicPlaceName>
                                   <Text xml:lang="de">Zürich</Text>
                               </TopographicPlaceName>
                           </TopographicPlace>
                           <Name>
                               <Text xml:lang="de">Zürich</Text>
                           </Name>
                           <GeoPosition>
                               <siri:Longitude>8.50455</siri:Longitude>
                               <siri:Latitude>47.39415</siri:Latitude>
                           </GeoPosition>
                       </Place>
<!-- ... --> 
                       <Place>
                           <StopPoint>
                               <siri:StopPointRef>ch:1:sloid:91178::3</siri:StopPointRef>
                               <StopPointName>
                                   <Text xml:lang="de">Zürich, Hardturm</Text>
                               </StopPointName>
                               <ParentRef>ch:1:sloid:91178</ParentRef>
                               <TopographicPlaceRef>23026261:27</TopographicPlaceRef>
                           </StopPoint>
                           <Name>
                               <Text xml:lang="de">Zürich, Hardturm</Text>
                           </Name>
                           <GeoPosition>
                               <siri:Longitude>8.50429</siri:Longitude>
                               <siri:Latitude>47.39473</siri:Latitude>
                           </GeoPosition>
                       </Place>
                   </Places>
                   <Situations/>
               </StopEventResponseContext>
               <StopEventResult>
                   <StopEvent>
                       <PreviousCall>
                           <CallAtStop>
                               <siri:StopPointRef>ch:1:sloid:91178::0</siri:StopPointRef>
                               <StopPointName>
                                   <Text xml:lang="de">Zürich, Hardturm</Text>
                               </StopPointName>
                               <ServiceDeparture>
                                   <TimetabledTime>2025-02-17T08:33:00Z</TimetabledTime>
                               </ServiceDeparture>
                               <Order>1</Order>
                           </CallAtStop>
                       </PreviousCall>
<!-- ... --> 
                       <ThisCall>
                           <CallAtStop>
                               <siri:StopPointRef>ch:1:sloid:30813::0</siri:StopPointRef>
                               <StopPointName>
                                   <Text xml:lang="de">Zürich, Kreuzplatz</Text>
                               </StopPointName>
                               <ServiceDeparture>
                                   <TimetabledTime>2025-02-17T09:01:00Z</TimetabledTime>
                               </ServiceDeparture>
                               <Order>19</Order>
                           </CallAtStop>
                       </ThisCall>
                       <OnwardCall>
                           <CallAtStop>
                               <siri:StopPointRef>ch:1:sloid:91119::0</siri:StopPointRef>
                               <StopPointName>
                                   <Text xml:lang="de">Zürich, Englischviertelstrasse</Text>
                               </StopPointName>
                               <ServiceArrival>
                                   <TimetabledTime>2025-02-17T09:02:00Z</TimetabledTime>
                               </ServiceArrival>
                               <ServiceDeparture>
                                   <TimetabledTime>2025-02-17T09:03:00Z</TimetabledTime>
                               </ServiceDeparture>
                               <Order>20</Order>
                            </CallAtStop>
                        </OnwardCall>
<!-- ... --> 
                        <OnwardCall>
                            <CallAtStop>
                                <siri:StopPointRef>ch:1:sloid:91233::1</siri:StopPointRef>
                                <StopPointName>
                                    <Text xml:lang="de">Zürich, Klusplatz</Text>
                                </StopPointName>
                                <PlannedQuay>
                                    <Text xml:lang="de">B</Text>
                                </PlannedQuay>
                                <ServiceArrival>
                                    <TimetabledTime>2025-02-17T09:06:00Z</TimetabledTime>
                                </ServiceArrival>
                            </CallAtStop>
                        </OnwardCall>
                        <Service>
                            <Mode>
                                <PtMode>tram</PtMode>
                                <siri:TramSubmode>cityTram</siri:TramSubmode>
                                <Name>
                                    <Text xml:lang="de">Tram</Text>
                                </Name>
                                <ShortName>
                                    <Text xml:lang="de">T</Text>
                                </ShortName>
                            </Mode>
                            <ConventionalModeOfOperation>scheduled</ConventionalModeOfOperation>
                            <TrainNumber>4619</TrainNumber>
                            <siri:LineRef>ojp:91008:H</siri:LineRef>
                            <siri:OperatorRef>3849</siri:OperatorRef>
                            <PublicCode>Tram</PublicCode>
                            <PublishedServiceName>
                                <Text xml:lang="de">8</Text>
                            </PublishedServiceName>
                            <ProductCategory>
                                <Name>
                                    <Text xml:lang="de">Tram</Text>
                                </Name>
                                <ShortName>
                                    <Text xml:lang="de">T</Text>
                                </ShortName>
                                <ProductCategoryRef>2</ProductCategoryRef>
                            </ProductCategory>
                            <siri:DirectionRef>H</siri:DirectionRef>
                            <JourneyRef>ch:1:sjyid:100648:plan:3183eb5d-c26c-4ef4-972d-c92c4416363a</JourneyRef>
                            <OperatingDayRef>2025-02-17</OperatingDayRef>
                            <Cancelled>false</Cancelled>
                            <Unplanned>false</Unplanned>
                            <Deviation>false</Deviation>
                            <Attribute>
                                <UserText>
                                    <Text xml:lang="de">Niederflureinstieg</Text>
                                </UserText>
                                <Code>A__NF</Code>
                            </Attribute>
                            <OriginStopPointRef>ch:1:sloid:91178::0</OriginStopPointRef>
                            <DestinationStopPointRef>ch:1:sloid:91233::1</DestinationStopPointRef>
                            <OriginText>
                                <Text xml:lang="de">Zürich, Hardturm</Text>
                            </OriginText>
                            <DestinationText>
                                <Text xml:lang="de">Zürich, Klusplatz</Text>
                            </DestinationText>
                        </Service>
                        <OperatingDays>
                            <From>2025-02-02</From>
                            <To>2025-12-12</To>
                            <Pattern>01111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100011110011111000111000111110011111001111100111110011110001111100101110011111001111100111110010111001111000011110011111001111100111110011111001111100111110011111001111100111110011111</Pattern>
                        </OperatingDays>
                    </StopEvent>
                </StopEventResult>
<!-- ... --> 
            </OJPStopEventDelivery>
        </siri:ServiceDelivery>
    </OJPResponse>
</OJP>
+

Die Antwort ist in einer OJPStopEventDelivery enthalten, welche wie folgt aufgebaut ist:

ElementKardinalitätBeschreibungBeispiel
siri:ResponseTimestamp1:1Der timestamp der Antwort
<siri:ResponseTimestamp>2020-04-03T14:47:59Z</siri:ResponseTimestamp>
siri:RequesteMessageRef0:1Hier wird die Message referenziert, die angefragt wurde
<siri:RequestMessageRef>756</siri:RequestMessageRef>
siri:DeliveryStatus0:1Der Status der Antwort, true bedeutet, die Anfrage wurde bearbeitet.
<siri:Status>true</siri:Status>
CalcTime0:1Die Berechnungszeit in Millisekunden
<CalcTime>139</CalcTime>
StopEventResponseContext0:1Hier werden Referenzinformationen wie die verwendeten Haltestellen zurück geliefert.Siehe separate Tabelle
StopEventResult0:*Die effektiven Resultate. Siehe Bespiel weiter oben.
<StopEventResult>
<StopEvent>
<PreviousCall>
<CallAtStop>
<siri:StopPointRef>ch:1:sloid:91178::0</siri:StopPointRef>
<StopPointName>
<Text xml:lang="de">Zürich, Hardturm</Text>
</StopPointName>
<ServiceDeparture>
<TimetabledTime>2025-02-17T08:33:00Z</TimetabledTime>
</ServiceDeparture>
<Order>1</Order>
</CallAtStop>
</PreviousCall>
<!-- ... -->
<ThisCall>
<!-- ... -->
</ThisCall>
<!-- ... -->
<OnwardCall>
<!-- ... -->
</OnwardCall>
StopEventResult/Id1:1Die ID des Resultats
<ResultId>ID-5194D714-33A5-48B0-8895-BDCBAB540958</ResultId>
StopEventResult/StopEvent1:1Die einzelnen Fahrten. Siehe separate Tabelle

ReponseContextStucture

Struktur mit reisebezogenen Antwortkontexten, die Sammlungen von Orten und Situationen als folgende Elemente enthalten:

  • Operators
  • Places
  • Situations
ElementKardinalitätBeschreibungBeispiel
Operators0:1Struktur für Operator-Objekte. Nur Operator-Objekte, auf die in der Antwort verwiesen wird, sollten ausgegeben werden.n/a
Places0:1In der Struktur sollten nur die Platzierungsobjekte aufgenommen werden, auf die in der Antwort verwiesen wird.
<Places>
<Place>
<StopPlace>
<StopPlaceRef>ch:1:sloid:7000</StopPlaceRef>
<StopPlaceName>
<Text xml:lang="de">Bern</Text>
</StopPlaceName>
<TopographicPlaceRef>23006351:1</TopographicPlaceRef>
</StopPlace>
<Name>
<Text xml:lang="de">Bern</Text>
</Name>
<GeoPosition>
<siri:Longitude>7.43772</siri:Longitude>
<siri:Latitude>46.94929</siri:Latitude>
</GeoPosition>
</Place>
<!-- ... -->
</Places>
Situations0:1Struktur für SIRI SX-Situationsobjekte. Nur Situationen, auf die in der Antwort Bezug genommen wird, sollten ausgegeben werden.
<Situations>
<PtSituation>
<siri:CreationTime>2024-10-24T08:46:00Z</siri:CreationTime>
<siri:ParticipantRef>ski-ddip-out-sx_prod</siri:ParticipantRef>
<siri:SituationNumber>ch:1:sstid:100001:57f8d406-b6f7-420d-9a03-46eb48a4de24-1</siri:SituationNumber>
<siri:Version>7</siri:Version>
<siri:Source>
<siri:SourceType>directReport</siri:SourceType>
</siri:Source>
<siri:ValidityPeriod>
<siri:StartTime>2025-02-02T21:30:00Z</siri:StartTime>
<siri:EndTime>2025-12-08T04:55:00Z</siri:EndTime>
</siri:ValidityPeriod>
<siri:AlertCause>unknown</siri:AlertCause>
<siri:Priority>3</siri:Priority>
<siri:ScopeType>stopPoint</siri:ScopeType>
<siri:Language>de</siri:Language>
<siri:PublishingActions>
<siri:PublishingAction>
<siri:PublishAtScope>
<siri:ScopeType>stopPoint</siri:ScopeType>
<siri:Affects/>
</siri:PublishAtScope>
<siri:PassengerInformationAction>
<siri:ActionRef/>
<siri:RecordedAtTime>2024-10-24T08:46:00Z</siri:RecordedAtTime>
<siri:Perspective>stopPoint</siri:Perspective>
<siri:TextualContent>
<siri:SummaryContent>
<siri:SummaryText xml:lang="de">Der Bahnverkehr zwischen Bern und Olten ist eingeschränkt.</siri:SummaryText>
</siri:SummaryContent>
<siri:ReasonContent>
<siri:ReasonText xml:lang="de">Der Grund dafür sind Bauarbeiten.</siri:ReasonText>
</siri:ReasonContent>
<siri:DurationContent>
<siri:DurationText xml:lang="de">Die Einschränkung dauert von 02.02.2025, 22:30 bis 03.02.2025, 05:55. Die Einschränkung dauert von 04.05.2025, 22:30 bis 05.05.2025, 05:55. Die Einschränkung dauert von 15.06.2025 bis 20.06.2025, jeweils von 22:30 bis 05:55. Die Einschränkung dauert von 22.06.2025 bis 27.06.2025, jeweils von 22:30 bis 05:55. Die Einschränkung dauert von 27.07.2025, 22:30 bis 28.07.2025, 05:55. Die Einschränkung dauert von 21.09.2025 bis 26.09.2025, jeweils von 22:30 bis 05:55. Die Einschränkung dauert von 28.09.2025 bis 03.10.2025, jeweils von 22:30 bis 05:55. Die Einschränkung dauert von 07.12.2025, 22:30 bis 08.12.2025, 05:55.</siri:DurationText>
</siri:DurationContent>
</siri:TextualContent>
</siri:PassengerInformationAction>
</siri:PublishingAction>
</siri:PublishingActions>
</PtSituation>

StopEventStruktur

Das StopEvent besteht aus:

  • PreviousCall(s): Wenn Parameter gewählt
  • ThisCall: Der aktuell ausgewählte Halt
  • OnwardCall(s): Zukünftige Halte auf der Fahrt
  • Service: Informationen zur Fahrt
ElementKardinalitätBeschreibungBeispiel
PreviousCall 0:*Die PreviousCall sind die Halte vor demjenigen, der angefragt wurde. Alle Information ist in einem CallAtStop. Siehe entsprechenden Abschnitt.
<PreviousCall>
<CallAtStop>
<siri:StopPointRef>ch:1:sloid:91142</siri:StopPointRef>
<StopPointName>
<Text>Zürich, Friedhof Enzenbühl</Text>
</StopPointName>
<ServiceArrival>
<TimetabledTime>2020-04-03T15:32:00Z</TimetabledTime>
</ServiceArrival>
<ServiceDeparture>
<TimetabledTime>2020-04-03T15:32:00Z</TimetabledTime>
</ServiceDeparture>
<Order>2</Order>
</CallAtStop>
</PreviousCall>
ThisCall1:1Dies ist der Halt, um den es im Request geht. Alle Information ist in einem CallAtStop. Siehe entsprechenden Abschnitt.
<ThisCall>
<CallAtStop>
<siri:StopPointRef>ch:1:sloid:30813</siri:StopPointRef>
<StopPointName>
<Text>Zürich Kreuzplatz</Text>
</StopPointName>
<ServiceArrival>
<TimetabledTime>2020-04-03T15:40:00Z</TimetabledTime>
</ServiceArrival>
<ServiceDeparture>
<TimetabledTime>2020-04-03T15:40:00Z</TimetabledTime>
</ServiceDeparture>
<Order>9</Order>
</CallAtStop>
</ThisCall>
OnwardCall0:*Der OnwardCall sind die Halte nach dem aktuellen Halt, der im Request angefragt wurde. Alle Information ist in einem CallAtStop. Siehe entsprechenden Abschnitt.
<OnwardCall>
<CallAtStop>
<siri:StopPointRef>ch:1:sloid:91049</siri:StopPointRef>
<StopPointName>
<Text>Zürich, Auzelg</Text>
</StopPointName>
<ServiceArrival>
<TimetabledTime>2020-04-03T16:16:00Z</TimetabledTime>
</ServiceArrival>
<Order>34</Order>
</CallAtStop>
</OnwardCall>
Service1:1Der Service ist die Information zur ganzen Fahrt.
Enthält dabei die “OperatingDayRef” und die “JourneyRef”, welche zusammen eindeutig eine bestimmte Fahrt ergeben. Zudem sind auch der “Mode” und der “PublicCode” mit dem Linienname angegeben. Detailliertere Infos zu “Origin” und “Destination” befinden sich im “StopEventResponseContext”. Weiter sind auch Hinweise wie die “TrainNumber” und die verschiedenen Fahrplanattribute, welche Details des Zuges beschreiben wie z.B. “A__NF” für Niederfluhr-Einstiegt. Eine Liste mit Beschreibung dieser Attribute ist hier: Beschreibung.
<Service>
<OperatingDayRef>2020-04-03</OperatingDayRef>
<JourneyRef>ch:1:sjyid:100001:627-001</JourneyRef>
<siri:LineRef>sbb:91011:A</siri:LineRef>
<siri:DirectionRef>R</siri:DirectionRef>
<Mode>
<PtMode>tram</PtMode>
<siri:TramSubmode>cityTram</siri:TramSubmode>
<Name>
<Text xml:lang="de">Tram</Text>
</Name>
</Mode>
<PublishedLineName>
<Text>11</Text>
</PublishedLineName>
<OperatorRef>sbb:3849</OperatorRef>
<OriginStopPointRef>ch:1:sloid:91315</OriginStopPointRef>
<OriginText>
<Text xml:lang="de">Zürich, Rehalp</Text>
</OriginText>
<DestinationStopPointRef>ch:1:sloid:91049</DestinationStopPointRef>
<DestinationText>
<Text xml:lang="de">Zürich, Auzelg</Text>
</DestinationText>
</Service>
OperatingDays0:1Die Gültigkeit der angegebenen Fahrt und das Pattern, an welchen Tagen diese Verbindung durchgeführt wird.
<OperatingDays>
<From>2025-02-02</From>
<To>2025-12-12</To>
<Pattern>01111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100011110011111000111000111110011111001111100111110011110001111100101110011111001111100111110010111001111000011110011111001111100111110011111001111100111110011111001111100111110011111</Pattern>
</OperatingDays>
OperatingDays/From1:1Gültigkeitsdatum ab wann, jeweils in der Form “yyyy-mm-dd”.
<From>2025-02-02</From>
OperatingDays/To1:1Gültigkeitsdatum bis wann, jeweils in der Form “yyyy-mm-dd”.
<To>2025-12-12</To>
OperatingDays/Pattern1:1Weitere Informationen, wie das Pattern zu interpretieren ist, befindet sich hier: Linien-Kalender
<Pattern>01111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100011110011111000111000111110011111001111100111110011110001111100101110011111001111100111110010111001111000011110011111001111100111110011111001111100111110011111001111100111110011111</Pattern>

CallAtStopStruktur

 

ElementKardinalitätBeschreibungBeispiel
siri:StopPointRef1:1Die Haltestellennummer. Es werden nur noch SLOID verwendet, für ausländische StopPoints können noch BPUIC Nummer vorkommen als StopPointRef. Mehr Infos.
<siri:StopPointRef>ch:1:sloid:30813</siri:StopPointRef>
StopPointName1:1Der Name der Haltestelle
<StopPointName>
<Text>Zürich Kreuzplatz</Text>
</StopPointName>
PlannedQuay0:1Der geplante Steig
<PlannedQuay>
<Text xml:lang="de">1</Text>
</PlannedQuay>
EstimatedQuay0:1Der aktuelle Steig, wenn vorhanden
<EstimatedQuay>
<Text xml:lang="de">1</Text>
</EstimatedQuay
ServiceArrival0:1Der erste Halt hat kein Arrival.
<ServiceArrival>
<TimetabledTime>2020-04-03T15:40:00Z</TimetabledTime>
<EstimatedTime>2020-04-03T15:40:00Z</EstimatedTime>
</ServiceArrival>
ServiceDeparture0:1Der letzte Halt hat kein Departure.
<ServiceDeparture>
<TimetabledTime>2020-04-03T15:40:00Z</TimetabledTime>
<EstimatedTime>2020-04-03T15:40:00Z</EstimatedTime>
</ServiceDeparture>
Order1:1Die Reihenfolge der Haltestellen
<Order>9</Order>
RequestStop0:1Halt auf Verlangen. Boolean. Geplant für eine zukünftige Version.n/a
UnplannedStop0:1Halt, der laut Planung nicht vorgesehen war. Boolean. Geplant für eine zukünftige Version.n/a
NotServicedStop0:1Entgegen der Planung findet kein Halt statt (Ausfälle).
<NotServicedStop>true</NotServicedStop>
NoBoardingAtStop0:1Das Einsteigen ist an dieser Haltestelle nicht möglich.
<NoBoardingAtStop>true</NoBoardingAtStop>
NoAlightingAtStop0:1Das Aussteigen ist an dieser Haltestelle nicht möglich.
<NoAlightingAtStop>true</NoAlightingAtStop>

Die ContinousServiceStructure

ElementKardinalitätBeschreibungBeispiel
OperatingDayRef1:1Der relevante Betriebstag
<OperatingDayRef>2020-04-03</OperatingDayRef>
JourneyRef1:1Die ID der Fahrt.
<JourneyRef>ch:1:sjyid:100001:627-001</JourneyRef>
siri:LineRef1:1Die ID der Linie.
<siri:LineRef>ojp:91021:H</siri:LineRef>
siri:DirectionRef0:1Die ID der Richtung.
<siri:DirectionRef>R</siri:DirectionRef>
Mode1:1Der Verkehrsmodus. Die Liste der Modi findet sich beim LocationInformationRequest
<Mode>
<PtMode>tram</PtMode>
<siri:TramSubmode>cityTram</siri:TramSubmode>
<Name>
<Text xml:lang="de">Tram</Text>
</Name>
</Mode>
PublishedLineName1:1Der veröffentlichte Name der Linie.
<PublishedLineName>
<Text>11</Text>
</PublishedLineNam
OperatorRef0:1Die Referenz auf den Betreiber.
<siri:OperatorRef>ojp:11</siri:OperatorRef>
Attribute0:*Attribute sind Eigenschaften meist auf Fahrten. Z.B. Niederflurbus, Bar, Reservation notwendig.Mandataory ist true, wenn das Attribut dem Benutzer unbedingt angezeigt werden muss.
<Attribute>
<Text>
<Text xml:lang="de">Linie 31: Niederflureinstieg</Text>
<Text>
<Code>30</Code>
<Mandatory>false</Mandatory>
</Attribute>
OrginStopPointRef0:1Die SLOID des Startpunkts.
<OriginStopPointRef>ch:1:sloid:91315</OriginStopPointRef>
OriginText0:1Der Name der Starthaltestelle.
<OriginText>
<Text xml:lang="de">Zürich, Rehalp</Text>
</OriginText>
DestinationStopPointRef0:1Die SLOID der Zielhaltestelle.
<DestinationStopPointRef>ch:1:sloid:91049</DestinationStopPointRef>
DestinationText0:1Der Name der Zielhaltestelle.
<DestinationText>
<Text xml:lang="de">Zürich, Auzelg</Text>
</DestinationText>
Unplanned0:1Gibt an, ob es sich um eine zusätzliche, nicht im regulären Fahrplan aufgeführte Fahrt handelt. Boolean.
<Unplanned>true</Unplanned>
Cancelled0:1Ausfall einer Fahrt: Boolean.
<Cancelled>true</Cancelled>
Deviation0:1Gibt an, ob die Fahrt nicht gemäss dem Fahrplan ausgeführt wird. Geplant für eine zukünftige Version.n/a
Delayed0:1Gibt an ob diese Reise Verspätungen hat. Geplant für eine zukünftige Version.
(Bitte Echtzeit Informationen verwenden)
n/a
Infeasible0:1Gibt an ob diese Reise aufgrund betrieblicher Verspätungen und unmöglicher Umsteigevorgänge nicht genutzt werden kann.
<Infeasible>true</Infeasible>
BookingArrangements0:1Das Feature wird nicht unterstützt.n/a
ParticipantRef1:1Dient zur Kommunikation von Störungen oder sonstigen aussergewöhnlichen Situationen.
<siri:ParticipantRef>ski-ddip-out-sx_prod</siri:ParticipantRef>
siri:SituationNumber1:1Dient zur Kommunikation von Störungen oder sonstigen aussergewöhnlichen Situationen.
<siri:SituationNumber>ch:1:sstid:100001:2195005152170-1</siri:SituationNumber>

Weiterführende Angaben

Echtzeit

Wichtige Konzepte:

  • Betriebstage: Tage an denen ein Zug verkehrt. Kann im Endeffekt mehr als 24h dauern. Notation allerdings DD-MM-YYYY als OperatingDays z.B. im Service/Mode.
  • Zulu-Zeit: Entspricht der UTC-Zeit und wird so angegeben 2025-02-02T11:24:00Z, ansonsten dann ebenfalls also  ISO 8601 Zeitangabe mit Zeitzonen-Abweichung 2025-02-02T09:24:00+0200. In der UTC-Zeit  gibt es keine Sommerzeitumstellung. Ausgabe von Sekundenbruchteilen sind insbesondre bei Zeitstempel üblich.
  • Hysterese: Im Bereich der Kundeninformation werden nur Änderungen weitergeleitet, die eine gewisse Grösse überschreiten. Dies geschieht mittels Hysterese. D.h. die Verspätungen werden nicht gepollt, sondern erst ab einer gewissen Änderung weitergeleitet. Abweichungen werden in 1/10 Minuten kommuniziert.

Echtzeit oder auch Realtime wird jeweils nur für den aktuellen Betriebstag ausgegeben. Die Abweichung wird jeweils in Bezug auf die StopPointRef angegeben, welches auch dem im Fahrplan vorhandenen Element entspricht, während eine StopPlaceRef einen Punkt in einem Bahnhof referenziert. In der Schweiz werden jeweils identische IDs für StopPointRef und StopPlaceRef verwendet.

Hier ein Beispiel mit Echtzeit anhand eines “CallAtStop”. Das gleiche Konzept kann auf alle Stellen im OJP angewendet werden, wo Abweichungen zum Fahrplan ausgegeben werden:

<CallAtStop>
    <siri:StopPointRef>ch:1:sloid:91128::0</siri:StopPointRef>
    <StopPointName>
        <Text xml:lang="de">Zürich, Fernsehstudio</Text>
    </StopPointName>
    <ServiceArrival>
        <TimetabledTime>2025-02-17T13:06:18Z</TimetabledTime>
        <EstimatedTime>2025-02-17T13:05:54Z</EstimatedTime>
    </ServiceArrival>
    <ServiceDeparture>
        <TimetabledTime>2025-02-17T13:06:30Z</TimetabledTime>
        <EstimatedTime>2025-02-17T13:06:00Z</EstimatedTime>
    </ServiceDeparture>
    <Order>2</Order>
</CallAtStop>

Die Diskrepanz zwischen der “TimetabledTime” und der “EstimatedTime” ist die Abweichung der Echtzeit zum Fahrplan, diese wird auch angegeben wenn es sich z.B. um eine frühere Ankunft handelt. Deshalb ist es sinnvoll, Logik für die Ausgabe der Abweichung zu implementieren, so dass nur für den Kunden relevante Abweichung, wie eine Verspätung, ausgegeben werden.

Autotunnelzüge

<OJP xmlns="http://www.vdv.de/ojp" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.vdv.de/ojp" version="2.0">
    <OJPRequest>
        <siri:ServiceRequest>
            <siri:ServiceRequestContext>
                <siri:Language>de</siri:Language>
            </siri:ServiceRequestContext>
            <siri:RequestTimestamp>2025-02-17T08:03:02.813Z</siri:RequestTimestamp>
            <siri:RequestorRef>SKIPlus_ATZ</siri:RequestorRef>
            <OJPStopEventRequest>
                <siri:RequestTimestamp>2025-02-17T08:03:02.813Z</siri:RequestTimestamp>
                <Location>
                    <PlaceRef>
                        <siri:StopPointRef>ch:1:sloid:11171</siri:StopPointRef>
                        <Name>
                            <Text>Kandersteg Autoverlad</Text>
                        </Name>
                    </PlaceRef>
                </Location>
                <Params>
                    <IncludeAllRestrictedLines>true</IncludeAllRestrictedLines>
                    <NumberOfResults>10</NumberOfResults>
                    <StopEventType>departure</StopEventType>
                    <IncludePreviousCalls>true</IncludePreviousCalls>
                    <IncludeOnwardCalls>true</IncludeOnwardCalls>
                    <UseRealtimeData>full</UseRealtimeData>
                </Params>
            </OJPStopEventRequest>
        </siri:ServiceRequest>
    </OJPRequest>
</OJP>

Grossraumprofile (bei der BLS) sind anhand des GF-Attributs erkennbar:

<Attribute>
    <Text>
        <Text xml:lang="de">Grossraumprofil</Text>
    </Text>
    <Code>A__GF</Code>
</Attribute>