OJPTripRequest 2.0

#AutoTranslate

Brief Description

TripRequest is the core service. A trip can be planned by specifying the origin and destination.

A trip has multiple legs (sections), which are divided into three categories ‘TimedLeg,’ ‘TransferLeg’ and ‘ContinousLeg’ which are e.g. walking routes or transport trips without a defined timetable.

Functional Description

  • Stops: The service records can also be used for this purpose.
  • Journeys: A journey is the transport of customers on a specific route, a specific timetable connection, with a specific mode of transport journey, at a specific time, in a specific direction.
  • Timetable: A timetable defines the route of a means of transport in local and long-distance public passenger transport and in rail freight transport. The necessary information includes train number, days of operation, route, arrival, departure and transit times at stops as well as the permissible speeds in the individual sections of the route.
  • Forecast: Forecasts are the future traffic times of a train, calculated based on the train’s current location. The progression of the forecast is calculated using algorithms that take various factors into account.
  • Means of transport: Either synonymous with vehicles (train, boat, tram, bus) on different modes of transport or used as a ‘transport system’ (public transport, etc.).
  • DateTime in the response: It is always UTC (Universal Time Coordinated), this should be delivered with the seconds and the ISO 8601 standard If UTC is not used, the time zone difference must be included.

Technical Description

API Explorer

You can try out examples of requests or modify them at your own discretion – direct link to OJP OpenAPI explorer.

Request

Further information on OJPTripRequest. Here’s an example of an OJPTripRequest in OJP 2.0:

<?xml version="1.0" encoding="UTF-8"?>
<OJP xmlns="http://www.vdv.de/ojp" xmlns:siri="http://www.siri.org.uk/siri" version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vdv.de/ojp ../../../../OneDrive/01_Dokumente/OJP%20OpenJourneyPlanner/OJP_changes_for_v1.1/OJP.xsd">
    <OJPRequest>
        <siri:ServiceRequest>
            <siri:RequestTimestamp>2025-01-17T09:58:34Z</siri:RequestTimestamp>
            <siri:RequestorRef>SKIplus</siri:RequestorRef>
            <OJPTripRequest>
                <siri:RequestTimestamp>2025-01-17T09:58:34Z</siri:RequestTimestamp>
                <siri:MessageIdentifier>SKI-TR-Example1</siri:MessageIdentifier>
                <Origin>
                    <PlaceRef>
                        <siri:StopPointRef>ch:1:sloid:3308</siri:StopPointRef>
                        <Name>
                            <Text>Kloten</Text>
                        </Name>
                    </PlaceRef>
                    <DepArrTime>2025-10-01T23:30:00Z</DepArrTime>
                </Origin>
                <Destination>
                    <PlaceRef>
                        <siri:StopPointRef>ch:1:sloid:3424</siri:StopPointRef>
                        <Name>
                            <Text>Schaffhausen</Text>
                        </Name>
                    </PlaceRef>
                </Destination>
                <Params>
                    <NumberOfResults>3</NumberOfResults>
                    <IncludeIntermediateStops>false</IncludeIntermediateStops>
                </Params>
            </OJPTripRequest>
        </siri:ServiceRequest>
    </OJPRequest>
</OJP>

Description of OJPTripRequestStructure:

Item Cardinality Description Example
siri:RequestTimestamp 1:1 The timestamp of the request in ISO 8601, preferably in UTC.
<siri:RequestTimestamp>2025-01-31T12:30:00Z</siri:RequestTimestamp>
siri:RequestorRef 0:1 The RequestorRef should be used to identify the systems requesting the request. If problems arise, this can help us as OJP system operators to contact the system user in question.
<siri:RequestorRef>SKIplus</siri:RequestorRef>
siri:MessageIdentifier 0:1 The identifier of the message. Can be selected by the user. Can be useful in case of support. This is returned in the response, if available.
<siri:MessageIdentifier>SKI-TR-Example1</siri:MessageIdentifier>
Origin 1:* The starting point of the trip request. OJP offers several ways to describe this element.
More information can be found in the relevant section.
<Origin> 
<PlaceRef>
<StopPlaceRef>ch:1:sloid:3000</StopPlaceRef>
<Name>
<Text>Bern</Text>
</Name>
</PlaceRef>
<DepArrTime>2025-01-20T12:00:00Z</DepArrTime>
</Origin>
Destination 1:* The destination of the journey request. OJP offers several ways to describe this element.
More information can be found in the relevant section.
<Destination>
<PlaceRef>
<StopPlaceRef>ch:1:sloid:5000</StopPlaceRef>
<Name>
<Text>Luzern</Text>
</Name>
</PlaceRef>
<DepArrTime>2025-01-20T12:00:00Z</DepArrTime>
</Destination>
Via 0:1 A maximum of one via is supported. If several via points are to be included or if a round trip is to be calculated, the requesting system must divide the journey into several trips.
DwellTime is optional, a corresponding stay is then calculated at the ViaPoint. DwellTime >= Departure time (Via) – Arrival time (Via).
Note: If a DwellTime is specified, the trip at the via stop does not output a TransferLeg because there is no direct transfer.
<Via>
<ViaPoint>
<StopPlaceRef>ch:1:sloid:6000</StopPlaceRef>
<Name>
<Text>Winterthur</Text>
</Name>
</ViaPoint>
<ojp:DwellTime>PT2H</ojp:DwellTime>
</Via>
Params 0:* For the description of the parameters, see the relevant section below. There you will also find a link to other parameters, but not all of them are supported.
<Params>
    <NumberOfResults>5</NumberOfResults>
    <IncludeTrackSections>true</IncludeTrackSections>
    <IncludeLegProjection>true</IncludeLegProjection>
    <IncludeIntermediateStops>true</IncludeIntermediateStops>
    <UseRealtimeData>explanatory</UseRealtimeData>
</Params>

Structure Origin/Destination

Item Cardinality Description Example
 PlaceRef/siri:StopPointRef 0:1 Reference to a ‘Scheduled Stop Point’. Only SLOID will now be used, for foreign StopPoints, BPUIC numbers may still occur as PlaceRef in StopPointRef (and StopPlaceRef). More Information.
<PlaceRef>
<siri:StopPointRef>ch:1:sloid:3000:9:17</siri:StopPointRef>
<Name>
<Text>Zürich HB</Text>
</Name>
</PlaceRef>
PlaceRef/StopPlaceRef 0:1 Reference to a stop. Only SLOID will now be used; for foreign StopPoints, the BPUIC number may still occur as PlaceRef for StopPlaceRef (and StopPointRef). More Information.
<PlaceRef>
<StopPlaceRef>ch:1:sloid:3424</StopPlaceRef>
<Name>
<Text>Schaffhausen</Text>
</Name>
</PlaceRef>
PlaceRef/GeoPosition 0:1 WGS84 Coordinates, no names element is required for this.
<PlaceRef>
    <GeoPosition>
        <siri:Longitude>7.431516</siri:Longitude>
        <siri:Latitude>46.956353</siri:Latitude>
    </GeoPosition>
</PlaceRef>
PlaceRef/TopographicPlaceRef 0:1 Name and code with description of TopographicPlace for use in passenger information

 

<TopographicPlace>
<TopographicPlaceCode>23026261:27</TopographicPlaceCode>
<TopographicPlaceName>
<Text xml:lang="de">Zürich</Text>
</PlaceRef>
<TopographicPlaceName>
</TopographicPlace>

DepArrTime 0:1 Time to be used.

‘Z’ is Zulu time (independent of any time zone). The time must comply with ISO 8601, so it must be in seconds. If the format is not correct, the system takes its local time.

<DepArrTime>2025-01-20T12:00:00Z</DepArrTime>
TimeAllowance 0:1 Instead of DepArrTime. Additional time required to reach and leave the location.
<TimeAllowance>PT2H</TimeAllowance>
IndividualTransportOptions 0:* Options for travelling to and from the stops

See separate table

<IndividualTransportOptions>
    <Mode>walk</Mode>
    <MaxDistance>5000</MaxDistance>
    <MaxDuration>PT1H</MaxDuration>
    <Speed>120</Speed>
</IndividualTransportOptions>

Structure IndividualTransportOption

Item Cardinality Description Example
ItModeToCover/PersonalMode 1:1 PersonalMode, which is to be used to reach the origin, in some cases also the destination. Not all modes are currently supported; this is also the default for when the journey does not start at a stop. Other values:
  • foot
  • bicyclecar
  • motor
  • cycle
  • truck
  • scooter
  • other (Only in case if nothing else fits)
<Params>
    ...
    <ItModeToCover>
        <PersonalMode>foot</PersonalMode>
    </ItModeToCover>
</Params>
MaxDistance 0:1 Maximum distance in metres. This limits the routes.
<MaxDistance>10000</MaxDistance>
MaxDuration 0:1 Maximum duration. Indicates the maximum duration of the router. Please note the format. It is xs:duration.
<MaxDuration>PT2H</MaxDuration>
MinDistance 0:1 Minimum distance in metres. This minimises the routes.

Not supported.

n/a
MinDuration 0:1 Minimum duration. Indicates the minimum duration of the router. Please note the format. It is xs:duration.

Not supported.

n/a
Speed 0:1 Relative speed in percent, normal is (default) 100%, slower with a smaller value, faster with a higher value.
<Speed>150</Speed>

Structure TripParamStructure

Item Cardinality Description Example
ModeAndModeOfOperationFilter 0:* The filter indicates which modes are to be taken into account. The Exclude parameter can be used to define whether I want to exclude a mode (true) or just request this mode (false). The following list of modes is supported:
rail, bus, tram, water

There are also rail submodes derived from SIRI originate from. Other submode filters are not currently supported. “railSubmode”:

international, highSpeedRail, interregionalRail, local, railShuttle

<ModeAndModeOfOperationFilter>
    <Exclude>false</Exclude>
    <PtMode>water</PtMode>
</ModeAndModeOfOperationFilte>
or
<ModeAndModeOfOperationFilter>
    <Exclude>false</Exclude>
    <siri:RailSubmode>interregionalRail</siri:RailSubmode>
</ModeAndModeOfOperationFilter>
LineFilter 0:1 Lines to be included or excluded.

 

<LineFilter>
    <Line>
        <LineRef>sbb:92080::R</LineRef>
    </Line>
    <Line>
        <LineRef>sbb:91012:B:H</LineRef>
    </Line>
    <Exclude>true</Exclude>
</LineFilter>
OperatorFilter 0:1 Operators to be included or excluded.

 

<OperatorFilter>
    <Exclude>false</Exclude>
    <OperatorRef>sbb:11:SchweizerischeBundesbahnenSBB</OperatorRef>
</OperatorFilter>
IncludeAllRestrictedLines 0:1 There may be lines that have special restrictions and are not generally accessible to the public. For example, school buses or company shuttles. If this flag is set, the router also takes into account restricted lines.
<IncludeAllRestrictedLines>true</IncludeAllRestrictedLines>
NoSingleStep 0:1 The user cannot cross a paragraph.

This feature is not available.

n/a
NoStairs 0:1 The user cannot navigate stairs.

This feature is not available.

n/a
NoEscalator 0:1 The user cannot navigate an escalator.

This feature is not available.

n/a
NoElevator 0:1 The user cannot use an elevator.

This feature is not available.

n/a
NoRamp 0:1 The user cannot navigate a ramp

This feature is not available.

n/a
LevelEntrance 0:1 The user requires entrances/transitions at ground level

This feature is not available.

n/a
BikeTransport 0:1 The default is ‘false,’ while ‘true’ does not return any connections with restrictions on bicycle transport.
Note: Journeys where the carriage of bicycles is not permitted at some stops are currently not displayed at other stops.
<BikeTransport>true</BikeTransport>
WalkSpeed 0:1 Deviation from normal running speed. 100% normal.

This feature is not available.

n/a
NumberOfResults 0:1 If results are weighted equally by the search algorithm, more results are returned. If the desired number of connections cannot be found, fewer results are returned. Otherwise, the desired number of results is returned.
<NumberOfResults>10</NumberOfResults>
NumberOfResultsBefore 0:1 Number of results before a given time (at the finish line or at the start). If an OJP client wishes to receive an earlier departure time for the journeys it has received, it must send a new request stating NumberOfResultsBefore=n and Destination.DepArrTime = earliest EndTime found in the last response minus 1 minute.
<NumberOfResultsBefore>4</NumberOfResultsBefore>
NumberOfResultsAfter 0:1 Number of results after a given time (at the finish or at the start)

If an OJP client wishes to receive a later date for the journeys it has already received, it must send a new request with NumberOfResultsAfter=n and Origin.DepArrTime = latest StartTime found in the last response, plus 1 minute.

<NumberOfResultsAfter>6</NumberOfResultsAfter>
TimeWindow 0:1 Time window in which the trips should be, starting from the time specified in PlaceContext. Not supported. n/a
UseRealtimeData 0:1 Determines how real-time is taken into account, full = everything; explanatory = also delayed and cancelled connections (most detailed variant); none = according to the timetable only.
<UseRealtimeData>explanatory</UseRealtimeData>
TransferLimit 0:1 Maximum number of changes
<TransferLimit>3</TransferLimit>
OptimisationMethod 0:1 Which optimization method should be used?

fastest, least walking, etc.

Currently, only ‘minChanges’ is available.

<OptimisationMethod>minChanges</OptimisationMethod> 
ItModesToCover 0:* Find a separate monomodal trip for each mode in the list, in addition to the intermodal trips. n/a
IncludeTrackSection 0:1 The OJP response should contain TrackSections that allow the geographical projection of a leg. TrackStart, TrackEnd and Duration are output if this information is available.
<IncludeTrackSections>true</IncludeTrackSections>
IncludeLegProjection 0:1 Include the geographical presentation of a leg in the result.
<IncludeLegProjection>true</IncludeLegProjection>
IncludeTurnDescription 0:1 A detailed route description for each leg is output in PathGuidance.
<IncludeTurnDescription>true</IncludeTurnDescription>
IncludeIntermediateStops 0:1 Indicates whether stops should also be specified along the individual trip, i.e. all the intermediate stops.
<IncludeIntermediateStops>true</IncludeIntermediateStops>
IncludeFare 0:1 Include price information.

This feature is currently not supported.

<IncludeFare>true</IncludeFare>

 

Response

Further information about the trip answer or the OJPTripDeliver Structure can be found in the VDV table.

First, the TripResponseContext is returned. It contains information on all the places used (stops, locations, addresses, etc.) in the Places element:

<Place>
    <StopPlace>
        <StopPlaceRef>ch:1:sloid:90034</StopPlaceRef>
        <StopPlaceName>
            <Text xml:lang="de">Bern, Bärenpark</Text>
        </StopPlaceName>
        <TopographicPlaceRef>23006351:1</TopographicPlaceRef>
    </StopPlace>
    <Name>
        <Text xml:lang="de">Bern, Bärenpark</Text>
    </Name>
    <GeoPosition>
        <siri:Longitude>7.45941</siri:Longitude>
        <siri:Latitude>46.94847</siri:Latitude>
    </GeoPosition>
</Place>
<Place>
    <StopPoint>
        <siri:StopPointRef>ch:1:sloid:90034:0:2</siri:StopPointRef>
        <StopPointName>
            <Text xml:lang="de">Bern, Bärenpark</Text>
        </StopPointName>
        <ParentRef>ch:1:sloid:90034</ParentRef>
        <TopographicPlaceRef>23006351:1</TopographicPlaceRef>
    </StopPoint>
    <Name>
        <Text xml:lang="de">Bärenpark</Text>
    </Name>
    <GeoPosition>
        <siri:Longitude>7.45941</siri:Longitude>
        <siri:Latitude>46.94847</siri:Latitude>
    </GeoPosition>
</Place>

In ServiceKontext PtSituations (faults) are also entered if they generally apply to the route of travel.

<PtSituation>
    <siri:CreationTime>2025-02-03T12:13:00Z</siri:CreationTime>
    <siri:ParticipantRef>ski-ddip-out-sx_prod</siri:ParticipantRef>
    <siri:SituationNumber>ch:1:sstid:100001:ski-oct_sip2-sx_prod-TT951800-0</siri:SituationNumber>
    <siri:Version>1</siri:Version>
    <siri:Source>
        <siri:SourceType>directReport</siri:SourceType>
    </siri:Source>
    <siri:ValidityPeriod>
        <siri:StartTime>2025-02-03T12:13:00Z</siri:StartTime>
        <siri:EndTime>2025-02-04T21:00: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>2025-02-03T12:13:00Z</siri:RecordedAtTime>
                <siri:Perspective>stopPoint</siri:Perspective>
                <siri:TextualContent>
                    <siri:SummaryContent>
                        <siri:SummaryText xml:lang="de">Der stufenfreie Zugang zum Bahnhof Bern ist für Reisende mit Mobilitätseinschränkung unter Umständen nicht mehr garantiert.</siri:SummaryText>
                    </siri:SummaryContent>
                    <siri:ReasonContent>
                        <siri:ReasonText xml:lang="de">Der Grund ist eine Liftstörung.</siri:ReasonText>
                    </siri:ReasonContent>
                    <siri:DescriptionContent>
                        <siri:DescriptionText xml:lang="de">Betroffen ist der Personenlift Gleis 1/2 - Welle.</siri:DescriptionText>
                    </siri:DescriptionContent>
                    <siri:RecommendationContent>
                        <siri:RecommendationText xml:lang="de">Für Reisende mit Mobilitätseinschränkung wird empfohlen, sich beim Contact Center Handicap zu melden: Tel. 0800 007 102 oder swisspass.ch/handicap.</siri:RecommendationText>
                    </siri:RecommendationContent>
                    <siri:DurationContent>
                        <siri:DurationText xml:lang="de">Die Einschränkung dauert ungefähr bis 04.02.2025, 22:00.</siri:DurationText>
                    </siri:DurationContent>
                </siri:TextualContent>
            </siri:PassengerInformationAction>
        </siri:PublishingAction>
    </siri:PublishingActions>
</PtSituation>
+

This is followed by 0:* TripResult. The header is followed by individual trips.

<TripResult>
    <Id>ID-FEF77DD9-EC8D-46D8-92EE-DC5FCFBE7B86</Id>
    <Trip>
        <Id>ID-FEF77DD9-EC8D-46D8-92EE-DC5FCFBE7B86</Id>
        <Duration>PT6M30S</Duration>
        <StartTime>2025-02-03T07:59:00Z</StartTime>
        <EndTime>2025-02-03T08:05:30Z</EndTime>
        <!-- ... -->

If a journey to and from a stop is not requested, a Continous- Leg (walk) leading to the stop.
Otherwise a TimedLeg the first leg. Here’s an example with a ContinousLeg at the beginning:

<Leg>
    <Id>1</Id>
    <Duration>PT2M</Duration>
    <ContinuousLeg>
        <LegStart>
            <GeoPosition>
                <siri:Longitude>7.45939</siri:Longitude>
                <siri:Latitude>46.94783</siri:Latitude>
            </GeoPosition>
            <Name>
                <Text xml:lang="de">46.947825,7.459388</Text>
            </Name>
        </LegStart>
        <LegEnd>
            <siri:StopPointRef>ch:1:sloid:90034</siri:StopPointRef>
            <Name>
                <Text xml:lang="de">Bern, Bärenpark</Text>
            </Name>
        </LegEnd>
        <Service>
            <PersonalModeOfOperation>own</PersonalModeOfOperation>
            <PersonalMode>foot</PersonalMode>
        </Service>
        <Duration>PT2M</Duration>
        <Length>121</Length>
    </ContinuousLeg>
</Leg>
<Leg>
    <Id>2</Id>
    <Duration>PT4M</Duration>
    <TimedLeg>
        <LegBoard>
            <siri:StopPointRef>ch:1:sloid:90034:0:2</siri:StopPointRef>
            <StopPointName>
                <Text xml:lang="de">Bern, Bärenpark</Text>
            </StopPointName>
            <NameSuffix>
                <Text xml:lang="de">PLATFORM_ACCESS_WITH_ASSISTANCE</Text>
            </NameSuffix>
            <ServiceDeparture>
                <TimetabledTime>2025-02-03T08:01:00Z</TimetabledTime>
                <EstimatedTime>2025-02-03T08:01:30Z</EstimatedTime>
            </ServiceDeparture>
            <Order>1</Order>
        </LegBoard>
        <LegIntermediate>
            <siri:StopPointRef>ch:1:sloid:90033:0:2</siri:StopPointRef>
            <StopPointName>
                <Text xml:lang="de">Bern, Nydegg</Text>
            </StopPointName>
            <NameSuffix>
                <Text xml:lang="de">PLATFORM_ACCESS_WITH_ASSISTANCE</Text>
            </NameSuffix>
            <ServiceArrival>
                <TimetabledTime>2025-02-03T08:02:00Z</TimetabledTime>
                <EstimatedTime>2025-02-03T08:02:30Z</EstimatedTime>
            </ServiceArrival>
            <ServiceDeparture>
                 <TimetabledTime>2025-02-03T08:02:00Z</TimetabledTime>
                 <EstimatedTime>2025-02-03T08:02:30Z</EstimatedTime>
            </ServiceDeparture>
            <Order>2</Order>
        </LegIntermediate>
        <LegIntermediate>
            <siri:StopPointRef>ch:1:sloid:90032:0:2</siri:StopPointRef>
            <StopPointName>
                <Text xml:lang="de">Bern, Rathaus</Text>
            </StopPointName>
            <NameSuffix>
                <Text xml:lang="de">ALTERNATIVE_TRANSPORT</Text>
            </NameSuffix>
            <ServiceArrival>
                <TimetabledTime>2025-02-03T08:03:00Z</TimetabledTime>
                <EstimatedTime>2025-02-03T08:03:30Z</EstimatedTime>
            </ServiceArrival>
            <ServiceDeparture>
                <TimetabledTime>2025-02-03T08:03:00Z</TimetabledTime>
                <EstimatedTime>2025-02-03T08:03:30Z</EstimatedTime>
            </ServiceDeparture>
            <Order>3</Order>
        </LegIntermediate>
        <LegAlight>
            <siri:StopPointRef>ch:1:sloid:7110:0:6</siri:StopPointRef>
            <StopPointName>
                <Text xml:lang="de">Bern, Zytglogge</Text>
            </StopPointName>
            <NameSuffix>
                <Text xml:lang="de">PLATFORM_ACCESS_WITH_ASSISTANCE</Text>
            </NameSuffix>
            <PlannedQuay>
                <Text xml:lang="de">C</Text>
            </PlannedQuay>
            <EstimatedQuay>
                <Text xml:lang="de">C</Text>
            </EstimatedQuay>
            <ServiceArrival>
                <TimetabledTime>2025-02-03T08:05:00Z</TimetabledTime>
                <EstimatedTime>2025-02-03T08:05:30Z</EstimatedTime>
            </ServiceArrival>
            <Order>4</Order>
         </LegAlight>
         <Service>
            <Mode>
                <PtMode>bus</PtMode>
                <siri:BusSubmode>localBus</siri:BusSubmode>
                <Name>
                    <Text xml:lang="de">Bus</Text>
                </Name>
                <ShortName>
                    <Text xml:lang="de">B</Text>
                </ShortName>
             </Mode>
             <ConventionalModeOfOperation>scheduled</ConventionalModeOfOperation>
             <TrainNumber>9992</TrainNumber>
             <siri:LineRef>ojp:92012:_x0020_</siri:LineRef>
             <siri:OperatorRef>827</siri:OperatorRef>
             <PublicCode>Bus</PublicCode>
             <PublishedServiceName>
                 <Text xml:lang="de">12</Text>
             </PublishedServiceName>
             <ProductCategory>
                 <Name>
                     <Text xml:lang="de">Bus</Text>
                 </Name>
                 <ShortName>
                     <Text xml:lang="de">B</Text>
                 </ShortName>
                 <ProductCategoryRef>29</ProductCategoryRef>
             </ProductCategory>
             <siri:DirectionRef>R</siri:DirectionRef>
             <OperatingDayRef>2025-02-03</OperatingDayRef>
             <DestinationStopPointRef>ch:1:sloid:76646</DestinationStopPointRef>
             <OriginText>
                 <Text xml:lang="de">n/a</Text>
             </OriginText>
             <DestinationText>
                 <Text xml:lang="de">Bern, Bahnhof</Text>
             </DestinationText>
             <JourneyRef>ojp-92-12-_-j25-1-419-TA</JourneyRef>
             <Attribute>
                 <UserText>
                     <Text xml:lang="de">VELOS: Platzzahl eingeschränkt</Text>
                 </UserText>
                 <Code>A__VB</Code>
             </Attribute>
<!-- ... -->
        </Service>
    </TimedLeg>
</Leg>
+

Comments:

  • The attributes are formed from the known attributes from HRDF with A__ . The mapping is carried out in accordance with Notes2FacilitiesMappingFile.
  • The available modes are based on the Traffic notices derived. In some cases, these also correspond to a combination of SIRI facilities.
  • To FareRequest it must be possible to create the attributes in the Response with Fare codes which are then relevant for the request to the NOVA system.
<!-- ... -->
<Attribute>
    <UserText>
        <Text xml:lang="de">TC-006000</Text>
    </UserText>
    <Code>T_1SX</Code>
</Attribute>
<!-- ... -->

Changeover and implementation of the Disability Discrimination Act

TransferLegs are output as follows for changes:

<!-- ... -->
<Leg>
    <Id>2</Id>
    <Duration>PT6M</Duration>
    <TransferLeg>
        <TransferType>walk</TransferType>
        <LegStart>
            <siri:StopPointRef>ch:1:sloid:7000:501:24</siri:StopPointRef>
            <Name>
                <Text xml:lang="de">Bern</Text>
            </Name>
        </LegStart>
        <LegEnd>
            <siri:StopPointRef>ch:1:sloid:7000:5:10</siri:StopPointRef>
            <Name>
                <Text xml:lang="de">Bern</Text>
            </Name>
        </LegEnd>
        <Duration>PT6M</Duration>
    </TransferLeg>
</Leg>
<!-- ... -->

Special transfers with the day “TransferType” with the content “remainInVehicle” and “changeWithinVehicle” are weakening and wing trains. The reinforcement is usually not visible in the customer information.

To comply with the Disability Discrimination Act, information on wheelchair accessibility per journey is shown in the tags “LegBord” and “LegAlight” issued:

<!-- ... -->
<TimedLeg>
    <LegBoard>
        <siri:StopPointRef>ch:1:sloid:7000:5:10</siri:StopPointRef>
        <StopPointName>
            <Text xml:lang="de">Bern</Text>
        </StopPointName>
        <PlannedQuay>
            <Text xml:lang="de">10</Text>
        </PlannedQuay>
        <EstimatedQuay>
            <Text xml:lang="de">10</Text>
        </EstimatedQuay>
        <NameSuffix>
            <strong><Text xml:lang="de">PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED</Text></strong>
        </NameSuffix>
        <ServiceDeparture>
            <TimetabledTime>2025-02-03T14:47:00Z</TimetabledTime>
            <EstimatedTime>2025-02-03T14:47:30Z</EstimatedTime>
        </ServiceDeparture>
        <Order>1</Order>
    </LegBoard>
<!-- ... -->
    <LegAlight>
        <siri:StopPointRef>ch:1:sloid:7100:3:4</siri:StopPointRef>
        <StopPointName>
            <Text xml:lang="de">Thun</Text>
        </StopPointName>
        <NameSuffix>
            <strong><Text xml:lang="de">PLATFORM_ACCESS_WITHOUT_ASSISTANCE</Text></strong>
        </NameSuffix>
        <PlannedQuay>
            <Text xml:lang="de">4</Text>
        </PlannedQuay>
        <EstimatedQuay>
            <Text xml:lang="de">4</Text>
        </EstimatedQuay>
        <ServiceArrival>
            <TimetabledTime>2025-02-03T15:18:00Z</TimetabledTime>
            <EstimatedTime>2025-02-03T15:18:00Z</EstimatedTime>
        </ServiceArrival>
        <Order>10</Order>
    </LegAlight>
<!-- ... -->

The following notes are possible and the following symbols and texts are used for customer information:

  • Autonomy / PLATFORM_ACCESS_WITHOUT_ASSISTANCE
  • Ramp use / PLATFORM_ACCESS_WITH_ASSISTANCE
  • Pre-registration / PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED
  • Shuttle / ALTERNATIVE_TRANSPORT
  • no access / PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE
  • no info / NO_DATA

Geographical information used

The footpath routing is based on OpenStreetMap (OSM). OSM data is available at Open Data Commons Open Database License (ODbL). Applications that use OSM must cite OSM as their source. How this can be done (depending on the type of application) is set out in the OSM Guidelines.

Further information

Search for car tunnel hoists

Example of a request for a car tunnel drawbar (ATZ):

<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-03T10:05:00.552Z</siri:RequestTimestamp>
            <siri:RequestorRef>SKIplus</siri:RequestorRef>
            <OJPTripRequest>
                <siri:RequestTimestamp>2025-02-03T10:05:00.552Z</siri:RequestTimestamp>
                <Origin>
                    <PlaceRef>
                        <StopPlaceRef>ch:1:sloid:11171</StopPlaceRef>
                        <Name>
                            <Text>Kandersteg Autoverlad (Kandersteg)</Text>
                        </Name>
                    </PlaceRef>
                    <DepArrTime>2025-02-03T08:00:15.652Z</DepArrTime>
                </Origin>
                <Destination>
                    <PlaceRef>
                        <StopPlaceRef>ch:1:sloid:19655</StopPlaceRef>
                        <Name>
                            <Text>Goppenstein Autoverlad (Ferden)</Text>
                        </Name>
                    </PlaceRef>
                </Destination>
                <Params>
                    <IncludeAllRestrictedLines>true</IncludeAllRestrictedLines>
                    <NumberOfResults>1</NumberOfResults>
                    <IncludeTrackSections>true</IncludeTrackSections>
                    <IncludeLegProjection>true</IncludeLegProjection>
                    <IncludeTurnDescription>true</IncludeTurnDescription>
                    <IncludeIntermediateStops>true</IncludeIntermediateStops>
                    <UseRealtimeData>explanatory</UseRealtimeData>
                </Params>
            </OJPTripRequest>
        </siri:ServiceRequest>
    </OJPRequest>
</OJP>