Zakelijk

Reisadvies API aanvullende documentatie

Inleiding 9292 Reisadvies API

De 9292 Reisadvies API biedt de mogelijkheid om gebruik te maken van de planner engine van 9292 binnen een eigen website of app voor het geven van reisadviezen van adres naar adres van al het openbaar vervoer in heel Nederland inclusief eigen vervoer, deelvoertuigen en flex OV.

Deze handleiding beschrijft hoe u de interface van de 9292 Reisadvies API kunt gebruiken om op uw website of andere toepassing een routeplanner aan uw klanten aan te bieden. Dit is een aanvulling op de online swaggerdocumentatie van ons product.

Als basis voor de 9292 Reisadvies API wordt XML (tot en met v3.0.4) of JSON gebruikt. Kennis van WebAPI als ontwikkelaar en JSON is dan ook noodzakelijk om deze uitvoering te kunnen installeren.

Gebruiksvoorwaarden

Gebruik van de 9292 Reisadvies API is alleen toegestaan met uitdrukkelijke toestemming van 9292.

 

9292 Logo

Het is verplicht het 9292 Logo te tonen. Het gaat hier om alleen het logo en geen tekst.
9292 geeft akkoord op plaatsing voor live gang binnen de productieomgeving. Dit om de uniformiteit te waarborgen.
Via de volgende URL is het 9292 Logo op te halen:

 

Release notes

Software versie

Documentatie versie

Opmerking

11-05-2020
v2.6.1

20-01-2020
v1.7.5

  • Plannen met de fiets en toegankelijk plannen zijn aan de 9292 Reisadvies API toegevoegd
  • Foutmeldingen bijgewerkt

24-09-2020
v2.7.1

01-09-2020
v1.7.6

  • Bezetting toegevoegd aan de 9292 Reisadvies API

08-12-2020
v2.7.2

15-10-2020
v1.7.7

  • Fietsafstand is vergroot van 20min. naar 30min.
  • CO2 gegevens bijgewerkt

22-03-2021
v2.8.0

23-03-2021
v1.7.8

  • Documentatie op basis van de OpenAPI 3 standaard
  • Betere zoekresultaten voor zoeken naar bestemmingen, o.a. betere matching met zoektermen, bij straatnamen met nummers erin en met huisnummers
  • Verstoringsberichten van verstoringen worden direct in het reisadvies getoond
  • Nieuwe modaliteiten om mee te plannen aan het begin en eind van de reis (first- en lastmile): huurfiets, elektrische (huur)fiets, (huur)scooter
  • Ondersteuning voor vervoer op aanvraag zoals Watertaxi Rotterdam
  • Vertalingen voor land-, provincie- en haltetype-namen
  • Modaliteit "taxi" toegevoegd aan de vergelijkingslijst van voertuigemissies
  • Standaard stallingstijd voor fietsen is verhoogd van 2min. naar 5min.
  • Diverse bugfixes

26-04-2021
v2.8.1

26-04-2021
v1.7.9

  • Betere zoekresultaten voor zoeken naar stations en haltes met samengestelde namen
  • Betere matching van drukte informatie aan journey legs
  • Verstoringsbericht model is uitgebreid om meer details over de aard van de verstoring te tonen
  • Diverse bugfixes

28-06-2021
v2.8.3

 
  • Verbetering van API performance
  • Diverse bugfixes

29-06-2021
v2.8.4

 
  • Twee bugfixes met betrekking tot FareInfo (tarieven)

05-07-2021 v2.8.5 

 
  • Het veld StationAbbreviation werd onterecht leeg gelaten in de eerste/laatste Leg van een reis als er wordt gepland met coördinaten.

04-08-2021 v2.9.0

 
  • Fix voor het aanduiden van reisadviezen met vertragingen die leiden tot onhaalbare overstappen (FatalDelay)
  • Diverse updates doorgevoerd aan de techniek in de achtergrond

08-09-2021 v2.9.1

 
  • Fix voor het correct teruggegeven van tijdstippen wanneer deze worden opgestuurd als UTC tijd (2021-08-30T17:00Z) of als deze zijn voorzien van een tijdzone (2021-08-30T17:00+02:00). 
  • Fix voor Prijswijzer API verzoeken om centrumzone en sterwaarde informatie (indien van toepassing) mee te nemen in de calculatie van het voordeligst kortingsproduct

11-10-2021 v3.0.1

  Nieuwe versie (v3) is toegevoegd. Deze bevat de volgende wijzigingen ten opzichte van de vorige versie:
  • Het datum- en tijdstipformaat in alle API-antwoorden is aangepast naar het ISO 8601 formaat (bijv. 2021-10-11T13:00:00.000Z)
  • InterchangeTime van de JourneyRequest is aangepast zodat de gewenste overstaptijd in minuten opgeven kan worden
  • Unieke identificatie, genaamd "JourneyId", toegevoegd aan elk reisadvies
  • Reisadvies opvragen met minder lopen
  • Reisadvies opvragen rekening houdend met persoonlijke instellingen voor reistijd en snelheid
  • Weergeven van tariefinformatie in een Leg
  • Weergeven van routeinformatie in een Leg
  • Unimodaal-reisadvies voor privé-voertuigen en het lopen
  • Zoeken naar locaties in de buurt is toegevoegd ("NearbyLocations" endpoint)
  • Wederom opvragen van een bestaand reisadvies o.b.v. een uniek JourneyId is toegevoegd ("PlannedJourneys" endpoint)
  • Opvragen van Prijswijzer API informatie is verplaatst naar een aparte endpoint, namelijk: "ProductAdvice"
  • Diverse bugfixes

22-11-2021 v3.0.2

 
  • Modaliteiten “Elektrische fiets” en “Scooter” toegevoegd aan de vergelijkingslijst van voertuigemissies
  • De CO2 gegevens zijn bijgewerkt
  • Unimodaal-reisadvies verzoek retourneert een foutmelding wanneer geen unimodaal-reisadvies gevonden kan worden i.p.v. het retourneren van een multimodaal alternatief
  • De coördinaten van de routeinformatie worden getoond conform het “Well Known Text” LineString formaat
  • FlexOption parameters worden in een toekomstig release vervangen en zijn daardoor alvast als “deprecated” gemarkeerd
  • Diverse bugfixes

07-12-2021 v3.0.3

 
  • Verbeterde performance bij het ophalen van reisadviezen

19-01-2022 v3.0.4

 
  • Aanscherpen van foutmelding bij invoering van waardes die niet zijn toegestaan
  • Diverse voorbereidingen op toekomstige wijzigingen

04-01-2023

v4.0.0

 

Nieuwe versie (v4) is toegevoegd. Deze bevat de volgende wijzigingen ten opzichte van de vorige versie:

  • Geen ondersteuning voor XML meer in alle endpoints
  • Redesign van de requests en responses van verschillende endpoints en alle foutmeldingen om meer duidelijkheid te geven
  • De response taalkeuze is vervangen door Accept-Language header instelling in plaats van de Language request parameter
  • Ondersteuning toegevoegd voor huur(elektrische)fietsen en -scooters in de first mile
  • Ondersteuning voor het opvragen van specifieke ophaallocaties bij het plannen met deelvoertuigen in zowel first- als last mile
  • Ondersteuning voor het opvragen van een inleverlocatie in het reisadvies met deelvoertuigen
  • Ondersteuning voor 25km/u en 45km/u elektrische fietsen en scooters
  • Ondersteuning voor “PublicTaxi” (HubTaxi) in zowel first- als last mile
  • JourneyRequestType uitgebreid met “Earlier” en “Later” die respectievelijk een set reisadviezen ophalen die plaatshebben voor de huidige set reisadviezen of een set reisadvies die volgen na de huidige set reisadviezen
  • 3 Typen suggesties toegevoegd aan elk reisadvies (indien van toepassing):
    - Bestemming is op loopafstand
    - Er is een unimodaal alternatief
    - De first en/of last mile zijn op loopafstand
  • Twee nieuwe filtergroepen toegevoegd “OnDemand” en “WithSurcharge” om modaliteiten te filteren in de planner:
    - OnDemand filtert ‘vervoer op aanvraag’
    - WithSurcharge filtert ‘met toeslag’
  • Service label veld toegevoegd aan de leg die label informatie bevat geleverd door de vervoerder
  • JourneyId format bijgewerkt om beter een unieke reis te vinden en te reproduceren
  • NearbyLocations endpoint bijgewerkt om alleen nog Station, Stop of POI te retourneren
  • Ondersteuning voor het strict toepassen van persoonlijke instellingen
  • De ‘LessWalking’ optie is individueel toepasbaar of de first of last mile
  • API status kan worden gecontroleerd in het nieuwe status endpoint
  • De standaard tijd van een deelvoertuig stal leg is verlaagd van 5 naar 2 minuten
  • De standaard tijd van een deelvoertuig huur leg is verlaagd van 10 naar 4 minuten
  • ElectricBicycle25, ElectricBicycle45, Moped25 en Moped45 toegevoegd aan de lijst van vergelijkbare emissies
  • Verbeterde ondersteuning voor unimodale reisadviezen
  • CO2 emissie berekening verbeterd
  • Diverse bugfixes

 

API Beveiliging

De 9292 Reisadvies API is beveiligd en kan alleen aangeroepen worden als men in het bezit is van een door 9292 verstrekt ‘Token’ of wel APIKey. Dit ‘Token’ bestaat uit een serie tekens en letters die per Licentieovereenkomst wordt afgegeven en die de klant het recht geeft om requests aan de server van 9292 te doen.
Dit ‘Token’ is even geheim als uw gebruikersnaam en wachtwoord. Deel het met niemand.
9292 kan bij misbruik het ‘Token’ deactiveren.

Toegangstoken

Het toegangstoken ontvangt u per e-mail van de 9292 Servicedesk. Dit is uw identificatiecode. Met dit token kunt u gebruik maken van de aansluittestomgeving van de 9292 Reisadvies API. Wanneer u de implementatie heeft voltooid en 9292 uw dienst heeft getest, kunt u overgaan naar de productieomgeving. Hiervoor ontvangt u van de 9292 Servicedesk een nieuw token.
De aansluiting op de aansluittestomgeving blijft na overgang op de productieomgeving nog twee weken bestaan.

Het token moet in de header bij iedere aanroep worden meegestuurd. Hierbij een voorbeeld van de request header:

Header Key

Value

Authorization

Token <MY_TOKEN>

Accept

Application/JSON

Content-Type

charset=utf-8

Let op:

De 9292 Reisadvies API ondersteunt alleen HTTPS verzoeken.

Er worden tokens meegestuurd die een betreffende afnemer kan identificeren. Daardoor kan er bij het aftappen van een HTTP stroom misbruik van het token worden gemaakt. Dit kan resulteren in een hogere telling in de statistieken en een hogere factuur.

 

Reisadvies API Basis Features

Geldigheidsdatum voor reisadviezen

De 9292 Reisadvies API maakt gebruik van gegevens die verouderen of wijzigen (o.a. dienstregelingen). Daarom kunnen alleen datums gebruikt worden die binnen de geldigheidsduur vallen. Zodra er een datum wordt gebruikt die buiten de geldigheidsdatum valt zal de 9292 Reisadvies API altijd een foutmelding (400 BadRequest) teruggeven.
De geldigheidsduur kan d.m.v. de Dataset endpoint worden opgevraagd.

Het opvragen van de Dataset wordt niet meegeteld als request voor de facturatie.

 

Beschikbaarheidsstatus API

De status van de 9292 Reisadvies API kan worden opgevraagd door middel van de ‘status’ endpoint. De response geeft een overzicht van de totale status van de API. Afhankelijk van de impact geeft de endpoint een ‘Unhealthy’ of ‘Degraded’ status terug indien er onderliggende issues zijn of ‘Healthy’ indien de API naar behoren werkt.

Deze verzoeken worden niet meegeteld als request voor de facturatie.

 

Locaties opvragen voor reisadviezen

Om een locatie op te vragen dient u binnen de 9292 Reisadvies API de Locations endpoint aan te roepen. Met een locatie request kunt u informatie opvragen over een station, plaats, straat, huisnummer, halte of POI (Point Of Interest). Een locatie request zal standaard 5 locaties teruggeven, maar er is een extra instelmogelijkheid om tussen 1 en 10 locaties terug te krijgen. De stations zullen eerst teruggegeven worden, daarna de bus-/tram-/metrohaltes, daarna de straatnamen, postcodes etc.
Het is mogelijk alleen een specifiek type locatie op te vragen of alle typen locaties die aan de zoekterm voldoen.

Dit Locations endpoint is geen autosuggest. Met behulp van de Locations endpoint kunt u wel zelf een autosuggest voor uw applicatie(s) ontwikkelen.

Het opvragen van een locatie wordt niet meegeteld als request voor de facturatie.

 

Locaties in de buurt opvragen

Het opvragen van locaties in de buurt kan uitgevoerd worden op basis van breedte- en lengtegraad coördinaten of een geldige “locationId” met de “NearbyLocations” endpoint. De 9292 Reisadvies API geeft de 5 meest dichtbij zijnde locaties terug binnen een straal van 500 meter. Deze locaties kunnen een station, halte of een POI zijn. Er is een extra instelmogelijkheid om tussen 1 en 10 locaties terug te krijgen.
Het is tevens mogelijk om op type locatie te filteren.

Het opvragen van een locatie wordt niet meegeteld als request voor de facturatie.

 

OV-reisadvies opvragen

Om een reisadvies op te vragen roept u het ‘Journeys’ endpoint aan. Het opvragen van een OV-reisadvies geeft standaard 9 reizen terug. Dit zijn reizen rond het opgevraagde tijdstip. Dit aantal is niet instelbaar.

De FromId, ToId en ViaId moeten corresponderen met de ‘Id’ van een locatie van het ‘Locations’ endpoint.

Attributen in het OV-reisadvies

Attributen zijn gegevens die door bijvoorbeeld NS worden meegestuurd met betrekking tot een reis(deel). Deze worden niet bij alle reizen getoond, alleen waar deze informatie is toegevoegd aan het OV-reisadvies zal het element Attributes worden getoond.

Onderstaande tabel bevat een aantal voorbeelden van mogelijke attributen.

Attribuut Id

Attribuut waarde

Omschrijving/Opmerking

TWEE

alleen 2e klas

Aanduiding dat alleen 2de klas beschikbaar is voor een reis.

Dit komt maar op een aantal trajecten voor namelijk:


  • Leeuwarden – Harlingen Haven
  • Leeuwarden – Stavoren
  • Zutphen – Hengelo – Oldenzaal
  • Dordrecht - Geldermalen

WCA

Rolstoeltoegankelijk

komt voor als de modaliteit toegankelijk is

SPEC

Speciaal ticket vereist

Komt voornamelijk voor bij (Intercity Direct & Internationale treinen)

FINI

fiets meenemen niet mogelijk

Komt voornamelijk voor bij (Intercity Direct & Internationale treinen)

RESM

Reserveren mogelijk

Komt voornamelijk voor bij (Intercity Direct & Internationale treinen)

TSR

Toeslag Schiphol - Rotterdam

Komt voornamelijk voor bij (Intercity Direct & Internationale treinen)

Structuur van een attribuut

Attributen in het OV-reisadvies zijn in het “Attributes” component te vinden. Attributes bestaat uit nul of meerdere LegAttributes. Hierbij een voorbeeld van een Attributes component:

Voorbeeld

"attributes": [{
"id": "TWEE",
"title": "alleen 2e klas"
}]

 

Unieke identificatie van een OV-reis binnen een OV-reisadvies

Elke OV-reis heeft een “JourneyId” waarmee het advies is te identificeren.

Hierbij een voorbeeld van een reisadvies met een JourneyId:

Voorbeeld

{
"journeyId": "i5AAAICqqqrq_3QX0FuYhYsImKmZ6c3CHAxAAyIg1ALscDFwlXD3AHc3ADU1CAgICIEc3S5w
CsMIc3zA4fDBbehx6xSi_A9mfl339JDfYY0CDobmJwy-74_GhDG8e-IQTuF78v1ozPQxTb03pkJVfVFu1aICHn5Q
UrJVq4m1lro6n0odKTOpo3XFtqrR4yE1GrOmHHXPWiMiMov_XYuqUMCY1ruP4CDK7SsfopRneciWJW85LUsuuYY
C5tXvZO45yemSDx13DAUclyzz9f6YckbmkqjkeibrqHFIz7ayZBv7hOQQz8lckoDDAt7kfJS8XG8bOPw3AA",
"journeyState": "TCC43K5Y4CP325D5",
"departureTime": "2022-11-25T15:02:00.0000000Z",
"arrivalTime": "2022-11-25T16:28:00.0000000Z",
"numberOfChanges": 3,
...
}

 

Suggesties voor alternatieve reisopties in het OV-reisadvies


Een reisadvies kan 3 typen van suggesties bevatten voor alternatieve reisopties:

  • Indien de volledige reis binnen loopafstand is, dan bevat het reisadvies een “DestinationWithinWalkingDistance” veld met de waarde ‘true’.
  • Indien de afstand tussen het vertrekpunt en de aankomstlocatie in de first- of last mile leg binnen loopafstand is, bevat de specifieke reis het veld “StopWithinWalkingDistance” met de waarde ‘true’.
  • Indien er een ‘unimodaal’ alternatief is bevat het reisadvies 2 extra velden:
    - "WithinModalityRange“ is een true/false waarde die aangeeft dat er een unimodaal alternatief is voor de reis
    - UnimodalDistance” geeft de reisafstand terug in meters

Onderstaand een voorbeeld van een reisadvies dat alle 3 de typen suggesties bevat:

Voorbeeld

{

"withinModalityRange": true,
"unimodalDistance": 2500,
"destinationWithinWalkingDistance": true,

"journeys": [
{

"stopWithinWalkingDistance": true,

}
}

Verstoringsberichten in het OV-reisadvies

Er kunnen verstoringsberichten aan een of meerdere reizen binnen het reisadvies worden gekoppeld. Deze berichten worden door vervoerders (bijvoorbeeld NS) opgestuurd voor een bepaalde plaats, station, halte lijnnummer en/of alle ritten van een vervoerder.
Een verstoringsbericht, indien aanwezig, wordt in het Disruption element van een Leg getoond.

Business rules voor het koppelen van verstoringen aan het reisadvies

De 9292 Reisadvies API onderkent vier soorten verstoringsberichten:

  1. Berichten die gelden voor plaatsen
    • Een bericht wordt gekoppeld indien de plaatsnaam van de halte in een Leg overeenkomt met de plaatsnaam in een bericht.
    • Indien het betreffend bericht ook de vervoerder bevat, wordt het bericht alleen gekoppeld als zowel de plaatsnaam als de operator in de Leg in combinatie voorkomen in het bericht
  2. Berichten die gelden voor haltes
    • Een bericht wordt gekoppeld indien de vertrek- of aankomsthalte van een Leg voorkomt in het bericht
  3. Berichten die gelden voor lijnen
    • Een bericht wordt gekoppeld indien het lijnnummer van de Leg voorkomt in een bericht
    • Indien een bericht zowel haltes als lijnen bevat geldt dat het bericht alleen wordt getoond als de combinatie lijnnummer met vertrek- of aankomsthalte in het bericht voorkomt
  4. Berichten die gelden voor vervoerders
    • Een bericht wordt gekoppeld indien de operator in de Leg voor komt in een bericht en er in het betreffende bericht geen plaatsnaam, lijn of halte is opgenomen

Tarieven geldend voor de OV-reis binnen het OV-reisadvies

In alle responses zitten tarieven, deze tarieven zijn te vinden onder FareInfo. Deze FareInfo bevat tarieven die voor de gehele reis (Journey) gelden. Het is ook mogelijk om de tarieven per Leg te tonen.

Tarieven op Journey niveau

FareInfo bestaat uit een “Complete” en een “FareLegs” component. Indien er geen tarieven beschikbaar zijn, zoals een OV-reisadvies met een veerboot, dan komt onder element “Complete” false terug. Dan is het niet mogelijk om een totaal OV-reisadvies prijs af te geven. Voor de delen waar het wel mogelijk is, wordt dit in FareLegs per reisdeel getoond.

Tarieven met de trein

Hieronder een voorbeeld response van een treintarief van NS met tariefinformatie:                         

  • 2e klas tarief 14,00 euro volle prijs
  • 2e klas tarief 8,40 euro reductie
  • 1e klas tarief 23,80 euro volle prijs
  • 1e klas tarief 14,30 euro reductie

Voorbeeld

"fareInfo": {
"complete": true,
"reducedPriceEuroCents": 1400,
"fullPriceEuroCents": 840,
"fareLegs": [ {
"fromId": "station-amsterdam-centraal",
"foId": " station-rotterdam-centraal ",
"routeDisplayName": " Amsterdam - Rotterdam",
"operators": ["NS"],
"fares": [ {
"eurocents": 1400,
"Reduced": false,
"class": "Second"
} ,
{
"eurocents": 840,
"reduced": true,
"class": "Second"
} ,
{
"eurocents": 2380,
"reduced": false,
"class": "First"
} ,
{
"eurocents": 1430,
"reduced": true,
"class": "First"
}
],
"starZones": [],
"starValue": "",
"priceUnits": 86
} ]
}
Tariefeenheden trein

Het aantal tariefeenheden van de trein staan onder “PriceUnits” van de “FareLegs”.

Tram, bus, metro of veer

Hierbij een voorbeeld van een busreis bij het OV-reisadvies van Leeuwarden naar Harlingen met het volgende prijsadvies:

  • Het deel van de reis met Arriva bus 97 is:
    • € 5,30 zonder korting
    • € 3,49 met korting

Voorbeeld

"fareInfo": {
"complete": true,
"reducedPriceEuroCents": 349,
"fullPriceEuroCents": 530,
"fareLegs": [ {
"fromId": "leeuwarden/bushalte-station",
"toId": "harlingen/bushalte-station",
"routeDisplayName": "Leeuwarden - Harlingen",
"Operators": ["Arriva"],
"fares": [ {
"eurocents": 530,
"reduced": false,
"class": "None"
} ,
{
"eurocents": 349,
"reduced": true,
"class": "None"
}
],
"starZones": [],
"starValue": "",
} ]
}

“FareLegs” binnen 1 Journey kunnen opgeteld worden bij de volgende combinaties:

  • Combi: Trein + bus/metro of tram
  • Combi: bus/metro/tram + veerboot
  • Combi: Trein + veerboot
  • Combi: Trein + veerboot + bus/metro/tram
  • Combi: Veerboot + bus/metro/tram

Er kan ook gebruik worden gemaakt van onderstaande elementen, deze tellen alle losse elementen bij elkaar op en tonen het volledige en gereduceerde tarief:

  • <FullPriceEuroCents>603</FullPriceEuroCents>
  • <ReducedPriceEuroCents>398</ReducedPriceEuroCents>

Let op:

We willen u erop wijzen dat het presenteren van het totaal van de reductiebedragen in het geval van diverse modaliteiten uitleg aan de reiziger behoeft. Het recht op reductie in de trein kent andere voorwaarden dan het recht op korting in bus, tram en metro.

Geen Tarief beschikbaar

Het kan voorkomen dat er geen tarief beschikbaar is omdat er geen OV-chipkaart informatie aanwezig is (bijv. informatie over een veerboot). Dan komt dit als volgt in de <Fares> terug:

Voorbeeld

"fares": [{
"eurocents": null,
"reduced": false,
"class": "None"
},
{
"eurocents": null,
"reduced": true,
"class": "None"
}
]
OV-chipkaart wel/niet geldig

Voor het bepalen of op een FareLeg de OV-chipkaart geldig is wordt door de tariefberekening een veld NoChipFare teruggeven aan de 9292 planner. De 9292 planner geeft deze met dezelfde naam weer door aan de client. Dit is een boolean-veld. De waarde is true als er geen OV-chipkaart gebruikt kan worden en false als deze wel gebruikt kan worden.

Voorbeeld

"fareInfo": {
"complete": false,
"reducedPriceEuroCents": null,
"fullPriceEuroCents": null,
"fareLegs": [{
"fromId": "station-leeuwarden",
"toId": "station-harlingen-haven",
"routeDisplayName": "Leeuwarden - Harlingen",
"operators": ["Arriva"],
"fares": [{
"eurocents": 550,
"reduced": false,
"class": "Second"
},
{
"eurocents": 330,
"reduced": true,
"class": "Second"
},
{
"eurocents": 550,
"reduced": false,
"class": "First"
},
{
"eurocents": 330,
"reduced": true,
"class": "First"
}
],
"starZones": [],
"starValue": "",
"priceUnits": 27,
"noChipFare": false
},
{
"fromId": "harlingen/halte-veer-harlingen",
"toId": "vlieland/halte-veer-vlieland",
"routeDisplayName": "Harlingen - Vlieland",
"operators": ["Doeksen"],
"fares": [],
"starZones": [],
"starValue": "",
"noChipFare": true
}
]
}

Tarieven op Leg niveau

De volgende parameter is beschikbaar om het tarief in een Leg van het OV-reisadvies te tonen:

Parameter

Beschrijving (voorbeeld)

Fare FareInfoAndLegs

Tariefinformatie in de Leg bestaat uit de volgende componenten:

Component

Omschrijving/Opmerking

BaseFareEurocents Het basistarief (opstaptarief)
FareEurocents Tarief voor de Leg zonder basistarief
Class Klasse
Reduced Indicatie of het om een gereduceerd tarief gaat
MultipleLegFare Indicatie of dit tarief geldt voor een totaaltraject bestaande uit meerdere opeenvolgende Legs
MultipleLegNotice Uitleg over de prijs per totaaltraject

Hierbij een tarief voorbeeld dat u in een Leg kunt treffen:

Voorbeeld

"legFares": [{
"baseFareEurocents": 99,
"fareEurocents": 48,
"reduced": false,
"class": "None",
"multipleFareLeg": false,
"multipleLegNotice": null
},
{
"baseFareEurocents": 65,
"fareEurocents": 32,
"reduced": true,
"class": "None",
"multipleFareLeg": false,
"multipleLegNotice": null
}]

 

OV-reis opvragen met JourneyId

Door de PlannedJourneys endpoint te gebruiken geeft u de reiziger de mogelijkheid om een reeds geplande reis wederom op te vragen. Er wordt hiermee een geactualiseerd OV-reisadvies opgevraagd met alleen de betreffende reis. De betreffende reis is daarbij voorzien van de meest recente reisinformatie (bijv. rituitval, realtime data, bezettingsinformatie, verstoringsberichten, etc.).

Dit endpoint heeft 1 parameter:

Parameter

Discription (example)

JourneyId
De unieke id voor een reis

 

Let op:

  • De JourneyId kan gebruikt worden om de originele reis op te vragen zo lang de reis door de 9292 planner kan worden aangemaakt. Dit betekent dat JourneyId’s ook kunnen verlopen.
  • JourneyId’s aangemaakt in v3 zijn ook opvraagbaar in de nieuwe versie

Request:

  • https://<reisadvies-api-url>/v4/PlannedJourneys?JourneyId=C1kAAICqqqrq_3Tnq6s6qKqbm7vLzd0cHMAc_
    OABYIeLmJuAu4GbmQKoiYGDg0MoG8CBa7ghzgFwJhz_0IRrXN
    Ik3yp2AkK1-9zb0_He_rV1lX3el5vMY8qLZhhcUhzrDoRZW
    fs4WR7eI3OCQRPrDoRZWfs42UWTPF5qHzJpYh5gcGaVph8FhOBC
    sN7bsG18ScWOinJd-kMownblPDkHgwsnATmDmzzPotwPM8j9Gw
 

Fiets en scooter in het OV-reisadvies

Door gebruik te maken van het invoerveld ‘FirstMile’ (voortransport) of ‘LastMile’ (natransport) kan worden aangegeven dat voor het eerste en/of laatste deel van de reis met de (eigen of huur-) fiets, elektrische fiets of scooter moet worden gepland naar een geschikt trein-, bus-, metro- of tram-fietsoverstappunt.

Voor reizen met een eigen voertuig zijn de modaliteiten ‘PrivateBicycle’ (fiets), ‘PrivateElectricBicycle’ (elektrische fiets) en ‘PrivateMoped’ (scooter) beschikbaar en voor huurvoertuigen ‘PublicBicycle’, ‘PublicElectricBicycle’ en ‘PublicMoped’.

Indien er wordt gepland met een huurvoertuig, dat is het bij de FirstMile verplicht om aan te geven waar deze zal worden opgehaald/om welk voertuig het precies gaat. Het benodigde Id hiervoor komt uit de 9292 Locaties API. Op basis hiervan wordt een reisadvies gemaakt met extra transitie-legs naar en van de gewenste huurlocatie/-voertuig.

Onderstaand een overzicht van de parameters benodigd om fietsen of scooters in een reisadvies weer te geven:

Parameter

Omschrijving (voorbeeld)

FirstMile  Het type transport te gebruiken in de first mile (bijv. “PublicBicycle”)
LastMile  Het type transport te gebruiken in de last mile (bijv. “PublicMoped”)
FirstMileOptions.PickUpLocation  De gewenste ophaallocatie om te gebruiken

Let op:
• Er wordt bij het plannen geen rekening gehouden met het actuele aantal beschikbare deelvoertuigen.
• Niet alle vertrek- of aankomstlocaties beschikken over het gewenste huurvoertuig type.
• Om de reiziger een betere ervaring te geven is er de optie om beschikbare voertuigtypes op te vragen voor een specifieke locatie in de 9292 Locaties API. Door deze informatie te combineren met een reisverzoek kunt u ervoor zorgen dat de reiziger een geschikt reisadvies krijgt.

Request:

  • https://<reisadvies-api-url>/v4/Journeys?FromId=station-den-haag-hs&ToId=station-rotterdam-centraal&Firstmile=publicbicycle&FirstmileOptions.PickUpLocation=OV-Fiets-gv001

Plannen met inleverlocatie

Optioneel kan ook worden aangegeven dat het voertuig moet worden ingeleverd. De optionele parameter is als volgt:

Parameter

Omschrijving (voorbeeld)

FirstMileOptions.IncludeVehicleDropOff Geeft aan of het reisadvies een inleverlocatie moet bijvoegen voor het betreffende huurvoertuig

De 9292 Reisadvies API zoekt in dit geval een geschikte inleverlocatie voor het huurvoertuig. Wanneer een inleverlocatie wordt aangevraagd in de first mile van een reis, dan zal een geschikte inleverlocatie binnen 500m van een OV-overstappunt worden geselecteerd. Indien een inleverlocatie voor de last mile wordt aangevraagd, dan zal deze binnen 500m van de eindbestemming liggen.

Ook hier worden extra transitie-legs opgenomen naar en van de geselecteerde inleverlocatie.

Let op:

  • Sommige huurvoertuigen moeten worden ingeleverd op een specifieke locatie. Indien de huurder dit niet doet zal de huurperiode niet worden afgesloten en zal dit tot hogere kosten leiden dan verwacht.
  • Indien er geen verplichte inleverlocatie beschikbaar is binnen 500m van een overstappunt of de eindbestemming zal de Reisadvies API een foutmelding geven dat er geen geschikte inleverlocatie kan worden gevonden.
  • Maak gebruik van de 9292 Locaties API om te bepalen of het geselecteerde huurvoertuig moet worden ingeleverd op een specifieke locatie en onder welke omstandigheden (terugbrengen naar zelfde locatie, inleveren binnen zelfde regio, etc.).

Business rules voor plannen met de fiets

De standaard business regels voor plannen met de fiets zijn:

  • Fietssnelheid is 13,8 km per uur
  • De maximale fietsafstand die we hanteren, is 6,9 km (30 min)
  • Er wordt gerekend met 2 minuten stal- en looptijd naar de halte en 2 minuten loop- en ophaaltijd vanaf een halte
  • In het geval van huren wordt er gerekend met 4 minuten marge voor het ophalen/inleveren van het voertuig

Business rules voor plannen met de scooter of elektrische fiets

De standaard business regels voor plannen met de scooter zijn:

  • Deze voertuigen worden gegroepeerd op basis van hun maximum snelheid, 25 kilometer per uur (km/u) of 45km/u.
  • Indien beide snelheden beschikbaar zijn zal standaard 25km/u worden geselecteerd.
  • De 9292 Reisadvies API gebruikt de volgende regels voor 25km/u scooters en elektrische fietsen:
    - De standaard snelheid is 20 km per uur
    - De maximale afstand die we hanteren, is 10 km (30 min)
  • Voor 45km/u voertuigen gelden de volgende regels:
    - De standaard snelheid is 35km/u
    - De maximum afstand is 17,5km (30 min)
  • Er wordt gerekend met 2 minuten stal- en looptijd naar de halte en 2 minuten loop- en ophaaltijd vanaf een halte
  • Bij het huren wordt er gerekend met 4 minuten marge voor het ophalen/inleveren van het voertuig

 Plannen met huurlocatie in Last Mile

Voor Last Mile huurvoertuigen geldt dat een geschikte huur- en/of inleverlocatie pas door de reiziger kan worden geselecteerd als de planner het reisadvies heeft gegeven (per reis zou het OV-overstappunt kunnen verschillen). Volg hiervoor het volgende proces:

  1. Vraag een standaard reisadvies op waarbij in ieder geval het gewenste voertuigtype en optioneel de persoonlijke reisinstellingen zijn ingevuld door gebruiker te maken van respectievelijk de “LastMile” en “LastMileOptions” parameters.
  2. Selecteer de gewenste reis uit de lijst van reisadviezen gegeven door de API.
  3. Stuur een overzoek om de geselecteerde reis uit te breiden met de gewenste ophaal- en inleverlocatie(s) d.m.v het ‘LastMilePlannedJourneys’ endpoint.

Het "LastMilePlannedJourneys” endpoint gebruikt de volgende parameters:

Parameter

Omschrijving (voorbeeld)

JourneyId De unieke identificatie van de betreffende reis
PickUpLocation De gewenste huurlocatie
IncludeVehicleDropOff Geeft aan of het reisadvies een inleverlocatie moet bevatten voor het gehuurde voertuig

Het volgende is een voorbeeld verzoek, gevolgd door een gedeeltelijke response:

Request:

  • https://<Reisadvies API domain>/v4/LastMilePlannedJourneys? JourneyId=i3YAAICqqqrq_3QXsJurRaiKx2KuNwOzMAgP87hEqMddzVTC
    XAHMVA3U1B3AISDEA474k6JTihQJbsCcQaPHPzD4Ea8p0L2JjkBD84r92
    tb92h_qt6Ko-6I4NqwYn_bI7-fzFzP_dOabmVN2PN14ujGDgC7F5ehAw
    5Zt9jGUKeZMydmlHCnkZO0MAkzcsXIUyou10-PgQ6Bwib8g4GS3_
    OnnJ0jX6zD7cfDjfZwJBLQ2k_FLxhIlYqmwlMoopbHSiA8v1XO1P6idVF
    pKENDZRKClgBNNLWXr5w20_DcA&PickupLocation=HTM-Fiets-7955d46d-7f95-469e-b8b4-fcbb0b1a153f&IncludeVehicleDropOff=true

Voorbeeld

{

"legs": [
{
"id": "leg0.0",
"type": "Scheduled",
"modalityGroup": "Train",
"modalityDescription": "Intercity",
"departureTime": "2022-12-01T10:21:00.0000000Z",
"arrivalTime": "2022-12-01T10:41:00.0000000Z",
"durationInMinutes": 20,
"from": "station-rotterdam-centraal",
"to": "Den Haag HS",

},
{
"id": "leg0.1",
"type": "Continuous",
"modalityGroup": "Walking",
"modalityDescription": "Lopen als modaliteit",
"departureTime": "2022-12-01T10:41:00.0000000Z",
"arrivalTime": "2022-12-01T10:43:00.0000000Z",
"durationInMinutes": 2,
"from": "Den Haag HS",
"to": "@52.069679,4.322893",

},
{
"id": "leg0.2",
"type": "Continuous",
"modalityGroup": "Walking",
"modalityDescription": "Huren voertuig",
"departureTime": "2022-12-01T10:43:00.0000000Z",
"arrivalTime": "2022-12-01T10:47:00.0000000Z",
"durationInMinutes": 4,
"from": "@52.069679,4.322893",
"to": "@52.069679,4.322893",

},
{
"id": "leg0.3",
"type": "Continuous",
"modalityGroup": "PublicBicycle",
"modalityDescription": "Verhuurfiets als modaliteit",
"departureTime": "2022-12-01T10:47:00.0000000Z",
"arrivalTime": "2022-12-01T10:56:00.0000000Z",
"durationInMinutes": 9,
"from": "@52.069679,4.322893",
"to": "@52.077636,4.314671",

},
{
"id": "leg0.4",
"type": "Continuous",
"modalityGroup": "Walking",
"modalityDescription": "Inleveren voertuig",
"departureTime": "2022-12-01T10:56:00.0000000Z",
"arrivalTime": "2022-12-01T11:00:00.0000000Z",
"durationInMinutes": 4,
"from": "@52.077636,4.314671",
"to": "@52.077636,4.314671",

},
{
“id”: “leg0.5”,
"type": "Continuous",
"modalityGroup": "Walking",
"modalityDescription": "Lopen als modaliteit",
"departureTime": "2022-12-01T11:00:00.0000000Z",
"arrivalTime": "2022-12-01T11:05:00.0000000Z",
"durationInMinutes": 5,
"from": "@52.077636,4.314671",
"to": "den-haag/binnenhof",

}

}

Flex OV in het reisadvies

In de 9292 Reisadvies API ondersteunen we drie partijen’ Flex OV; de ‘HalteTaxi’, ‘WaterTaxi’ en ‘HubTaxi’. De eerste twee partijen betreffen Halte-Halte vervoer en worden hierdoor automatisch meegegeven in het reisadvies wanneer van toepassing. Halte-Halte Flex OV kan worden uitgesloten van het reisadvies door de “ExcludedTravelModes” parameter te vullen met “OnDemand”

De “HubTaxi” is een on-demand modaliteit die van halte naar adres rijdt (of vice versa). Deze modaliteit moet expliciet worden opgevraagd door “PublicTaxi” aan te geven in de “FirstMile” en/of “LastMile” parameters. Voor alle soorten Flex OV dient de reiziger een handeling te verrichten voordat ze gebruik kunnen maken van dit vervoer.

Let op:

  • De “FirstMileOptions” en ”LastMileOptions” parameters zijn niet van toepassing bij het opvragen van een “PublicTaxi”.
  • De 9292 Locaties API heeft een “OperatorDetails” endpoint dat kan worden gebruikt om het relevante HubTaxi telefoonnummer op te halen (HubTaxi wordt door verschillende vervoerders uitgevoerd met eigen telefoonnummers).


Minimalizeren van de looptijden in het OV-reisadvies

Met de ‘minder lopen’ optie geeft u de reiziger een passend OV-reisadvies waarin de hoeveelheid lopen in de first mile en/of de last mile wordt gelimiteerd.

De volgende parameter is beschikbaar om de hoeveelheid lopen in het OV-reisadvies te minimalizeren:

Parameter

Beschrijving (voorbeeld)

FirstMileOptions.LessWalking

true

LastMileOptions.LessWalking true

 

Persoonlijke instellingen in het OV-reisadvies

Door gebruik te maken van de ‘persoonlijke instellingen’ opties geeft u de reiziger een passend OV-reisadvies waarin hij/zij de snelheid en maximale tijdsduur kan instellen van de first mile en last mile.

De volgende parameters zijn beschikbaar voor de persoonlijke instellingen in het OV-reisadvies:

Parameter

Beschrijving (voorbeeld)

FirstMileOptionsUserSpeed

Reissnelheid in km/uur voor de first mile. Indien weggelaten wordt de standaard snelheid aangenomen van de gekozen first mile modaliteit

FirstMileOptionsUserMaxTravelTime

Maximale reistijd in minuten voor de first mile.

LastMileOptionsUserSpeed

Reissnelheid in km/uur voor de last mile. Indien weggelaten wordt de standaard snelheid aangenomen van de gekozen last mile modaliteit

LastMileOptionsUserMaxTravelTime

Maximale reistijd in minuten voor de last mile.

Business rules voor het plannen met persoonlijke instellingen

De business rules met betrekking tot reissnelheden instellingen zijn als volgt:

  • Voor het lopen is 4,2 km per uur de standaard snelheid
    • De 9292 Reisadvies API hanteert 2 km per uur als de ondergrens van wat een reiziger mag instellen
    • De bovengrens is 5 km per uur
  • Voor het fietsen is 13,8 km per uur de standaard snelheid
    • De ondergrens van wat een reiziger mag instellen is 10 km per uur
    • De bovengrens is 22 km per uur
  • Voor 25km/u scooters en elektrische fietsen is de standaard snelheid 20 km per uur
    • De ondergrens is 10 km per uur
    • De bovengrens is 22 km per uur
  • Voor 45km/u scooters en elektrische fietsen is de standaard snelheid 35 km per uur
    • De ondergrens is 15 km per uur
    • De bovengrens is 40 km per uur

 

De business rules met betrekking tot de reistijd instellingen zijn als volgt:

  • De 9292 Reisadvies API hanteert 20 minuten als de maximale looptijd
    • De ondergrens van het maximum dat ingesteld mag worden is 10 minuten
    • De bovengrens is 30 minuten
  • Voor het fietsen is standaard de maximale reistijd 30 minuten
    • De ondergrens is 15 minuten
    • De bovengrens is 45 minuten
  • Voor scooters en elektrische fietsen is standaard de maximale reistijd 30 minuten
    • De ondergrens is 15 minuten
    • De bovengrens is 45 minuten

Indien er geen geldige reismogelijkheden zijn gebaseerd op de opgegeven maximale reistijden zal de 9292 Reisadvies API zoeken naar alternatieven die niet voldoen aan de ingestelde persoonlijke instellingen.

Het is mogelijk om de persoonlijke instelling strikct te hanteren door de volgende parameter te gebruiken:

Parameter

Omschrijving (voorbeeld)

StrictTravel

true

 

Bezettingsinformatie in het OV-reisadvies

Door gebruik te maken van de optie ‘Bezettingsinformatie’ geeft u de reiziger een passend OV-reisadvies met daarin de drukte per gereisde traject (Leg) en u kunt een totaal drukte voorspelling meegeven over de gehele reis.

De volgende parameters zijn beschikbaar om bezettingsinformatie in het OV-reisadvies te krijgen:

Parameter

Beschrijving (voorbeeld)

ShowOccupancy

true

Classificatie en visualisatie van de bezetting

De bezetting wordt aangegeven op een schaal van 0 tot 5 conform de BISON specificatie “Concept koppelvlak bezetting”. De bezetting kan worden gevisualiseerd middels de bijbehorende kleur of het bijbehorende icoontje.

Zie onderstaande tabel.

Dit is een concept voorbeeld van hoe 9292 zelf de gegevens vertaalt in haar apps en website.

Drukte volgens BISON

Enumeratie

Kleur

Icoontje 9292

Opmerkingen

0

No information

 

Level 0 icon

Geen informatie ontvangen of bezetting onbekend.

1

Empty

 

Level 1 icon

Bij NS worden 1 en 2 samengevoegd naar 2

2

Many seats available

 

Level 2 icon

Bij NS <65% van zitplaatsen per bak bezet

3

Few seats available

 

Level 3 icon

Bij NS >65% en < 100%van zitplaatsen per bak bezet

4

Standing room only

 

Level 4 icon

Bij NS >100% van zitplaatsen per bak bezet

5

Full

 

Level 5 icon

Alleen relevant voor realtime gegevens.

Dit is toekomstige informatie en wordt nog niet aangeleverd.

Bij de icoontjes wordt rekening gehouden met onderscheid in de afbeelding, zodat dit ook te zien is bij kleurenblindheid.

Voorbeeld van de bezetting

Een reis van Waterlooplein in Amsterdam, naar de Stadsschouwburg in Utrecht.

  • Leg 1:     Tram - 3 haltes (druk-rustig-rustig) krijgt indicator druk
  • Leg 2:     Trein Amsterdam Centraal naar Utrecht Centraal - 2 haltes (gemiddeld-rustig) krijgt indicator gemiddeld
  • Leg 3:     Bus - paar haltes (rustig-rustig-gemiddeld-rustig-gemiddeld) krijgt indicator gemiddeld

De gehele reis krijgt indicator druk omdat 1 leg de indicator “druk” heeft. 

Er wordt dus geaggregeerd naar de drukste halte van het traject.

 

Routeinformatie in het OV-reisadvies

Het is mogelijk om uw reiziger een passend OV-reisadvies te geven met daarin routeinformatie per traject (Leg).

De volgende parameter is beschikbaar om routeinformatie in het OV-reisadvies te krijgen:

Parameter

Beschrijving (voorbeeld)

Route

true

De routeinformatie is te vinden onder de Route element van een Leg. Deze Route bestaat uit 3 elementen:

  1. De "Bounds"
    • Dit element bevat de volgende 4 coördinaten die de grenzen van de route aangeven: MaxLatitude (noordelijke grens), MaxLongitude (oostelijke grens), MinLatitude (zuidelijke grens) en MinLongitude (westelijke grens)
  2. De “Distance”
    • Dit element bevat de afstand in meters van de route. Dit element wordt alleen gevuld voor loop-, fiets-, en scooterlegs
  3. De “RouteString”
    • Dit element bevat een reeks aan coördinaten, één per (tussen)halte, die de te nemen route vertegenwoordigd. Deze reeks  wordt als “Well Known Text” (WKT) LineString getoond

Hierbij een voorbeeld van een routeinformatie:

Voorbeeld

"route": {
"routeString": "LINESTRING (4.66219 51.81394, 4.66257 51.81392, 4.66257 51.81392, 4.66264 51.81391,
4.66328 51.81389, 4.66373 51.81389, 4.66389 51.81392, 4.66392 51.81388, 4.66402 51.81373, 4.66411 51.8136,
4.66415 51.81354, 4.66418 51.81351, 4.66421 51.81348, 4.66433 51.81353, 4.66451 51.81336, 4.66504 51.81285,
4.66529 51.8126, 4.66574 51.8125, 4.66572 51.81245, 4.66608 51.81208, 4.66609 51.81199, 4.66602 51.81191,
4.66609 51.81192, 4.66614 51.81191, 4.66636 51.81188, 4.66652 51.81185, 4.66647 51.81175, 4.6664 51.81159,
4.66638 51.81151, 4.66664 51.81146, 4.6666 51.81137, 4.66668 51.81136, 4.6676 51.81122)",
"distance": 586,
"bounds": {
"MaxLatitude": 51.81395,
"MaxLongitude": 4.662163,
"MinLatitude": 51.81212,
"MinLongitude": 4.66043
}
}

Unimodaal OV-reisadvies

Door gebruik te maken van de optie om unimodaal te plannen geeft u de reiziger een passend OV-reisadvies bestaande uit een enkele reis met alleen lopen, een (elektrische) fietsrit of een scooterrit vanaf de vertrek locatie naar aankomstlocatie. De gewenste modaliteit wordt bepaald door de FirstMile parameter.

De volgende parameter is beschikbaar om een unimodaal OV-reisadvies te krijgen:

Parameter

Beschrijving (voorbeeld)

Unimodal

true

FirstMile

De modaliteit te gebruiken in de first mile (bijv. “PublicBicycle”)
FirstMileOptions.PickUpLocation De gewenste ophaallocatie om te gebruiken

Business rules voor het unimodaal plannen

De combinatie van de first mile en de afstand tussen vertrek- en aankomstlocatie dient aan een van de volgende criteria te voldoen:

First mile

Soort afstand

Max afstand tussen vertrek- en aankomstlocatie

Lopen

Looproute

 ≤ 1,4 km  (bij standaard snelheid en reisduur)

Fiets

Fietsroute

 ≤ 6,9 km  (bij standaard snelheid en reisduur)

Elektrische fiets 25 km/u

Fietsroute

 ≤ 10 km  (bij standaard snelheid en reisduur)

Elektrische fiets 45 km/u

Fietsroute  ≤ 17,5 km  (bij standaard snelheid en reisduur)

Scooter 25 km/u

Fietsroute

 ≤ 10 km  (bij standaard snelheid en reisduur)

Scooter 45 km/u

Scooterroute

 ≤ 17,5 km  (bij standaard snelheid en reisduur)

Als de opgevraagde reis niet aan bovenstaande criteria voldoet, zal de 9292 Reisadvies een foutmelding retourneren.

 

Reisadvies API Optionele Features

StarZones in het OV-reisadvies

Dit optioneel af te nemen onderdeel kan op verzoek worden toegevoegd aan de 9292 Reisadvies API. De sterwaarden en centrumzones worden gebruikt bij de zogenoemde sterabonnementen. Als u voor dit onderdeel kiest, dan zal de 9292 Reisadvies API berekenen welk sterabonnement nodig is voor het betreffende OV-reisadvies. Er wordt nog in enkele gevallen gebruik gemaakt van sterabonnementen en zodoende zal niet bij ieder OV-reisadvies de sterwaarde/centrumzone worden meegegeven. Zie onderstaand voorbeeld.

In dit voorbeeld is een OV-reisadvies opgevraagd van Station Koog Zaandijk naar Station Krommenie Assendelft. De modaliteit trein is in dit advies uitgeschakeld:

Request:

  • •https://<reisadvies-api-url>/v4/Journeys?FromId=station-koog-zaandijk&ToId=station-krommenie-assendelft&ExcludedTravelModes=train

Als er starzones aanwezig zijn in het OV-reisadvies dan ziet het er als volgt uit:

Voorbeeld

"starZones": [
"3722”,
“3732”,
“3733”,
“3742"
],
"starValue": "2",
"priceUnits": null

Als er geen Starzones aanwezig zijn dan wordt het volgende getoond:

Voorbeeld

"starZones": []

De sterwaarde kan zowel een numerieke als alfabetische waarde hebben. Er zijn zeven mogelijkheden als waarde: 1 t/m 6 en Netabonnement. Bij een waarde groter dan 6 komt het Netabonnement als waarde naar voren, omdat deze geldig is in het hele land op stad- en streekvervoer.

Meerdere abonnementen

Het kan voorkomen dat voor een reis meer dan 1 abonnement nodig is. In dat geval worden meerdere elementen <FareLeg> getoond waarbij geldt dat de eerste FareLeg de tarief informatie laat zien voor de totale reis. Vervolgens wordt per benodigd abonnement de bijbehorende <FareLeg> getoond. Dit is als volgt zichtbaar in de <Fares>:

Voorbeeld

"fareInfo": {
"complete": true,
"reducedPriceEuroCents": 1161,
"fullPriceEuroCents": 1759,
"fareLegs": [{
"fromId": "scherpenisse/bushalte-spuidamstraat",
"toId": "hellevoetsluis/bushalte-amnesty-internationallaan",
"routeDisplayName": "Scherpenisse - Hellevoetsluis",
“modalityGroups”: [
“Bus”,
“Subway”
],
"operators": [
"Connexxion”,
“Arriva”,
“RET”,
“EBS"
],
"fares": [{
"eurocents": 1759,
"reduced": false,
"class": "None"
},
{
"eurocents": 1161,
"reduced": true,
"class": "None"
}],
"starZones": [],
"starValue": "",
"priceUnits": null,
"noChipFare": false
},
{
"fromId": "scherpenisse/bushalte-spuidamstraat",
"toId": "halsteren/bushalte-nieuwe-molenweg",
"routeDisplayName": "Scherpenisse - Halsteren",
“modalityGroups”: [
“Bus”
],
"operators": [
"Connexxion"
],
"fares": [],
"starZones": [
"7233”,
“7243”,
“7248”,
“7259”,
“7738"
],
"starValue": "3",
"priceUnits": null,
"noChipFare": false
},
{
"fromId": "rotterdam/metrostation-zuidplein",
"toId": "hellevoetsluis/bushalte-amnesty-internationallaan",
"routeDisplayName": "Rotterdam - Hellevoetsluis",
"operators": [
"RET”,
“EBS"
],
"fares": [],
"starZones": [
"5246”,
“5247”,
“5336”,
“5337”,
“5358"
],
"starValue": "5",
"priceUnits": null,
"noChipFare": false
}]
}

 

CO2 in het OV-reisadvies

Dit optioneel af te nemen onderdeel kan op verzoek worden toegevoegd aan de 9292 Reisadvies API.
Door gebruik te maken van de optie CO2 in het OV-reisadvies, kunnen uw gebruikers per OV-reis vergelijken hoeveel CO2 zij besparen door met het Openbaar Vervoer te reizen.
De berekening van CO2 is gebaseerd op basis van CO2 emissie per kilometer en Well to Wheel (WTW) = de emissie van zowel de voorketen als de directe emissies samen.

De overzichten worden hieronder weergegeven voor de verschillende vervoermiddelen.

De CO2 waarden zoals hieronder vermeld staan zijn afkomstig van de website co2emissiefactoren.nl en is het initiatief van SKAO, Stimular, Connekt, Milieu Centraal en de Rijksoverheid en is tot stand gekomen in samenwerking met diverse stakeholders.


Eigen- en deelvoertuigen

Categorie

CO2 emissie per voertuig (g/km)

Fiets 0
Elektrische fiets 25 km/u 6
Elektrische fiets 45 km/u 6

Scooter 25 km/u

17

Scooter 45 km/u

32

Auto Klein

180

Auto Middenklasse

202

Auto Groot

236


Openbaar vervoer

Categorie

CO2 emissie per reiziger (g/km)

Tram

0

Bus

103

Metro

0

Trein

2

Veerboot

115

Taxi

202

Geraadpleegde bronnen:

Hierbij een voorbeeld van CO2 emissie (kg) in het OV-reisadvies van postcode 3221AL in Hellevoetsluis naar postcode 3078 PE in Rotterdam.

Request:

  • https://<reisadvies-api-url>/v4/Journeys?FromId=hellevoetsluis/3221al&ToId=rotterdam/3078pe

Response:

Voorbeeld

"cO2EmissionInfo": {
"journeyEmission": 2.0229999999999997,
"journeyDistance": 29.676351183943982,
"emissionsByModality": [{
"modalityName": "Bicycle",
"emission": 0
},
{
"modalityName": "Bus",
"emission": 3.057
},
{
"modalityName": "CarLarge",
"emission": 7.004
},
{
"modalityName": "CarMedium",
"emission": 5.995
},
{
"modalityName": "CarSmall",
"emission": 5.342
},
{
"modalityName": "ElectricBicycle25",
"emission": 0.178
},
{
"modalityName": "ElectricBicycle45",
"emission": 0.178
},
{
"modalityName": "Ferry",
"emission": 3.413
},
{
"modalityName": "Moped25",
"emission": 0.504
},
{
"modalityName": "Moped45",
"emission": 0.95
},
{
"modalityName": "Subway",
"emission": 0
},
{
"modalityName": "Taxi",
"emission": 5.995
},
{
"modalityName": "Train",
"emission": 0.059
},
{
"modalityName": "Tram",
"emission": 0
}
]
}

 Toelichting van de meest relevante elementen uit bovenstaande response:

Element

Beschrijving (voorbeeld)

JourneyDistance

Gemeten afstand van de reis in kilometers op basis van een rechte lijn tussen van, via en naar.

JourneyEmission

Totale CO2 emissie van de reis met het openbaar vervoer in kilogram.

 EmissionByModality

Lijst van CO2 emissies per modaliteit indien de volledige reis door deze modaliteit wordt afgelegd

 

Realtime in het OV-reisadvies

Dit optioneel af te nemen onderdeel kan op verzoek worden toegevoegd aan de 9292 Reisadvies API. Door gebruik te maken van de optie ‘Realtime OV-reisadviezen’ geeft u de reiziger een passend OV-reisadvies inclusief vertraging van de trein, bus, metro of tram. Waar wijzigingen in tijden optreden, kan de reis herpland worden en biedt 9292 alternatieven aan.

De volgende parameters zijn toegevoegd aan de 9292 Reisadvies API om realtime te tonen in het OV-reisadvies.

Parameters

Beschrijving (voorbeeld)

ArrivalRealtime

Actuele aankomsttijd

DepartureRealtime

Actuele vertrektijd

RealtimeState

None, Offset, Cancelled

RealTimeInfo.Cancellations

None of Cancellations

RealTimeInfo.Delays

None, InternalDelay, FatalDelay

RealTimeInfo.Detour

Normal

RealTimeInfo.LudMessage

text: “Dit is een alternatief reisadvies.”

Vertraging op een rit

In onderstaand voorbeeld tonen we hoe een vertraging op een rit wordt weergegeven. In dit voorbeeld is zowel de vertrektijd als de aankomsttijd gewijzigd ten opzichte van de oorspronkelijke vertrek- en aankomsttijd.

Oorspronkelijke vertrek en aankomsttijden zijn:

  • DepartureTime 2014-11-05T11:03:00.0000000Z
  • ArrivalTime 2014-11-05T11:27:00.0000000Z

Voorbeeld

"departureRealtime": "2022-11-05T11:32:00.0000000Z",
"arrivalRealtime": "2022-11-05T11:55:00.0000000Z",
"realtimeInfo": {
"ludMessages": [],
"detour": "Normal",
"cancellations": "None",
"delays": "InternalDelay
}

Realtime vertrek- en aankomsttijden op een halte

In een OV-reisadvies wordt voor elke halte de realtime vertrek- en aankomsttijd doorgegeven, ook op de tussenliggende haltes. In onderstaand voorbeeld op de halte Claudius Prinsenlaan in Breda is de bus eerder vertrokken dan de oorspronkelijke planning.

De bus zou moeten vertrekken om 10:05 uur maar vertrekt om 10:02 uur.

Voorbeeld

"calls": [{
"departureTime": "2022-11-17T10:05:00.0000000Z",
"arrival": "2022-11-17T10:05:00.0000000Z",
"arrivalRealtime": "2022-11-17T10:02:00.0000000Z",
"departureRealtime": "2022-11-17T10:02:00.0000000Z",
"realtimeState": "Offset",
"fareZones": [{
"zone": "7200",
"selected": true
}],
"location": {
"id": "breda/bushalte-claudius-prinsenlaan",
"stationAbbreviation": null,
"displayName": "ClaudiusPrinsenlaan",
"type": "Stop",
"typeDescription": "Bushalte",
"latitude": 51.587575,
"longitude": 4.784468
"placeId": "breda",
"placeName": "Breda",
"regionCode": "NB",
"regionName": "Noord-Brabant",
"showRegion": false,
"countryCode": "NL",
"countryName": "Nederland",
"showCountry": false,
"placeLatitude": 51.594976,
"placeLongitude": 4.779766
},

}]

Geplande rit wordt niet gereden

Als een geplande rit niet wordt gereden, dan zal er een cancel bericht worden verzonden vanuit de vervoerder. Dit is zichtbaar in onderstaand voorbeeld.

De sprinter van Amersfoort naar Zwolle rijdt niet. Voor elk station/halte die de rit aan doet, wordt in de RealtimeState een Cancelled ingevuld.

Dit OV-reisadvies gaat dus niet door. Het is van belang dit in de presentatie aan de reiziger uit te leggen.

Request:

  • •https://<reisadvies-api-url>/v4/Journeys?FromId=station-amersfoort&ToId=zwolle

Voorbeeld

"realtimeInfo": {
"ludMessages": [],
"detour": "Normal",
"cancellations": "Cancellations",
"celays": "None"
},

"call": [{
"platform": "2b",
"departureTime": "2022-11-04T19:43:00.0000000Z",
"arrivalTime": "2022-11-04T19:42:00.0000000Z",
"departureRealTime": null,
"arrivalRealTime": null,
"realtimeState": "Cancelled",
"fareZones": [{
"zone": "5042",
"selected”: true
}],
"location": {
"id": "station-amersfoort",
"stationAbbreviation": "amf",
"displayName": "Amersfoort",
"type": "Station",
"typeDescription": "Station",
"latitude": 52.153484,
"longitude": 5.373807,
"placeId": "amersfoort",
"placeName": "Amersfoort",
"RegionCode": "UT",
"RegionName": "Utrecht",
"ShowRegion": false,
"CountryCode": "NL",
"CountryName": "Nederland",
"ShowCountry": false,
"PlaceLatitude": 52.153484,
"PlaceLongitude": 5.373807
},

]

Aansluiting wordt niet gehaald

Het kan voorkomen dat een aansluiting niet gehaald wordt. Bijvoorbeeld als bij een overstap in het eerste deel van de reis sprake was van vertraging. In de RealtimeInfo wordt dan een FatalDelay getoond, de rest van de output wijzigt niet.

Dit OV-reisadvies gaat dus niet door. Het is van belang dit in de presentatie aan de reiziger uit te leggen.

Voorbeeld

"realtimeInfo": {
"ludMessages": [],
"detour": "Normal",
"cancellations": "None",
"delays": "FatalDelay"
}

Alternatief OV-reisadvies na vervallen rit

Bij een vervallen OV-reisadvies wordt er vaak een alternatief advies geboden. Het is van belang dit in de presentatie aan de reiziger uit te leggen.

Stel dat voor de reis van Kampen Zuid naar Amsterdam Bijlmer Arena de rit met de sprinter is vervallen. Er rijdt nu een Intercity vanaf Kampen Zuid naar Duivendrecht en vervolgens ga je met de Metro naar Amsterdam Bijlmer Arena.

De belangrijkste wijziging in de response is weergegeven in onderstaand voorbeeld:

Voorbeeld

"realtimeInfo": {
"ludMessages": [{
"text": "Dit is een alternatief reisadvies.",
"url": null
}],
"detour": "Normal",
"cancellations": "None",
"delays": "InternalDelay"
}

Extra rit

Wanneer NS een extra rit inlegt wordt dit getoond in de 9292 Reisadvies API.
In onderstaand voorbeeld wordt er een extra rit ingelegd tussen Harderwijk en Zwolle: een extra intercity met ritnummer 29600.
Deze adviezen noemen wij altijd een Alternatief reisadvies zoals je in de Ludmessage ziet staan. Het kan zijn dat er geen Platform of Platformchange is ingevuld zoals hier het geval is. Dat betekent dat 9292 deze informatie niet heeft binnengekregen of de informatie niet is verwerkt.

Voorbeeld


"departureTime": "2022-11-17T09:00:00.0000000Z",
"arrivalTime": "2022-11-17T09:27:00.0000000Z",
"arrivalRealTime": "2022-11-17T09:58:00.0000000Z",
"realtimeInfo": {
"ludMessages": [{
"text": "Dit is een alternatief reisadvies.",
"url": null
}],
"detour": "Normal",
"cancellations": "None",
"delays": "InternalDelay"
},
"legs": [{
"type": "Scheduled",
"modalityGroup": "Train",
"modalityDescription": "Intercity",
"departureTime": "2022-11-17T09:00:00.0000000Z",
"arrivalTime": "2022-11-17T09:27:00.0000000Z",
"arrivalRealTime": "2022-11-17T09:58:00.0000000Z",
"durationInMinutes": 58,
"operatorName": "NS",
"destination": "Zwolle",
"service": "29600",
"attributes": [],
"calls": [{
"departureTime": "2022-11-17T09:00:00.0000000Z",
"arrivalTime": null,
"realtimeState": "None",
"fareZones": [{
"zone": "4961",
"selected": true
}],
"location": {
"id": "station-harderwijk",
"stationAbbreviation": "hd",
"displayName": "Harderwijk",
"type": "Station",
"typeDescription": "Station",
"latitude": 52.337846,
"longitude": 5.620297,
"placeId": "harderwijk",
"placeName": "Harderwijk",
"regionCode": "GL",
"regionName": "Gelderland",
"showRegion": false,
"countryCode": "NL",
"countryName": "Nederland",
"showCountry": false,
"placeLatitude": 52.337675,
"placeLongitude": 5.620047
}
},
{
"arrival": "2022-11-17T09:27:00.0000000Z",
"arrivalRealTime": "2022-11-17T09:58:00.0000000Z",
"realtimeState": "Offset",
"fareZones": [{
"zone": "4680",
"selected": true
},
{
"zone": "4610",
"selected": false
},
{
"zone": "4601",
"selected": false
}],
"location": {
"id": "station-zwolle",
"stationAbbreviation": "zl",
"displayName": "Zwolle",
"type": "Station",
"typeDescription": "Station",
"latitude": 52.505185,
"longitude": 6.091078,
"placeId": "zwolle",
"placeName": "Zwolle",
"regionCode": "OV",
"RegionName": "Overijssel",
"ShowRegion": false,
"CountryCode": "NL",
"CountryName": "Nederland",
"ShowCountry": false,
"placeLatitude": 52.505185,
"placeLongitude": 6.091078
}
}]
}]

Extra stop

Wanneer een rit een extra stop bevat dan is dit als volgt zichtbaar in de 9292 Reisadvies API:

  • De Service wordt omgezet naar het 9292-formaat.
  • En het element LudMessages is ingevuld.

In het reisadvies is niet zichtbaar welk halte(s)/station(s) er extra worden aangedaan. Het is ook mogelijk dat voor deze haltes/stations het aankomst/vertrekperron niet is ingevuld.

De response van een rit met een extra stop ziet er als volgt uit:

Voorbeeld

"realtimeInfo": {
"ludMessages": [{
"text": "Dit is een alternatief reisadvies.",
"url": null
}],
"detour": "Normal",
"cancellations": "None",
"delays": "None"
},
"departureTime": "2022-11-18T13:24:00.0000000Z",
"arrivalTime": "2022-11-18T14:01:00.0000000Z",
"legs": [{
"type": "Scheduled",
"modalityGroup": "Train",
"modalityDescription": "Intercity",
...
}

 

OV Prijswijzer in het OV-reisadvies

Dit optioneel af te nemen onderdeel kan op verzoek worden toegevoegd aan de 9292 Reisadvies API. Door gebruik te maken van de optie ‘OV Prijswijzer’ geeft u de reiziger abonnement informatie over de trein, bus, metro of tram die past bij de opgegeven reis. Deze informatie is via de ProductAdvice endpoint op te vragen.

Voor informatie over de OV Prijswijzer verwijzen we u naar onze website. Daar vindt u ook met welke abonnementen de OV Prijswijzer rekent.

ProductAdvice request

Met de ProductAdvice endpoint van de 9292 Reisadvies API is het mogelijk om het OV Prijswijzer advies te tonen behorende bij een gegeven OV-reisadvies.
Het verzoek dient de volgende parameters te bevatten om een OV Prijswijzer advies op te vragen.

Parameter

Beschrijving (voorbeeld)

JourneyId

Unieke identificatie van een OV-reis

TravellerAge

Leeftijd (getal tussen de 4 en 100)

TravellerFrequencyPeriod

Periode (getal 1 of 2)

1 = week,

2 = maand

TravellerFrequency

Aantal dagen (getal tussen 1 en 31, afhankelijk van TravellerFrequencyPeriode)

Als TravellerFrequencyPeriod = 1, dan moet TravellerFrequency tussen 1 en 7 zijn.

Als TravellerFrequencyPeriod = 2 dan moet TravellerFrequency tussen de 1 en 31 zijn.

Hierbij een voorbeeld van een valide request, met de volgende gegevens:

Veld

Parameter

JourneyId

station-alkmaar~station-utrecht-centraal~~0~C0nHlCAAB$$HmH040~~~B~9~129~~3600215~3627006~

Leeftijd reiziger

24

Aantal dagen

3

Periode (week)

1

Request:

  • https://<reisadvies-api-url>/v4/ProductAdvice? JourneyId=
    station-alkmaar~station-utrecht-centraal~~0~C0nHlCAAB$$HmH040~~~B~9~129~~3600215~3627006~&
    TravellerAge=24&TravellerFrequency=3&TravellerFrequencyPeriod=1

ProductAdvice response

In onderstaand voorbeeld tonen we de XML- en JSON-gedeeltes waarin een OV Prijswijzer advies op een rit wordt weergegeven.

Voorbeeld

{
"rOSYearTotal": 358524,
"rOSMonthTotal": 29877,
"yearBasedProducts": [{
"productAdviceSubSet": [{
"productDetail": {
"productRoutes": [{
"destination": "Station Leiden Centraal",
"departure": "Station Amsterdam Centraal",
"transportType": "Train"
},
{
"destination": "Station Den Haag Centraal",
"departure": "Station Leiden Centraal",
"transportType": "Train"
}
],
"informationURL": "https://9292.nl/prijzen-en-abonnementen/trein/abonnementen/altijd-voordeel#",
"productName": "Altijd Voordeel Jaar",
"productPrice": 310819,
"productSaldoPrice": 358524,
"saldoPrice": 358524,
"starValue": null,
"centrumZones": null,
"additionalInformation": null,
"productCompanies": []
}
}]
}]
}

 

Toegankelijk plannen in het OV-reisadvies

Dit onderdeel wordt op verzoek toegevoegd aan de 9292 Reisadvies API. Door gebruik te maken van de optie ‘Toegankelijk Plannen & Haltetoegankelijkheid’ geeft u de reiziger een passend OV-reisadvies voor modaliteiten en haltes die geschikt zijn voor iemand met een motorische beperking. Daarnaast worden alle reisadviezen (wel of niet gepland met toegankelijkheid) voorzien van informatie met betrekking tot haltetoegankelijkheid.

De volgende parameters zijn beschikbaar om een toegankelijk OV-reisadvies te krijgen.

Parameter

Beschrijving (voorbeeld)

PlanWithAccessibility

true

Business rules voor een toegankelijk reisadvies

  • De loopsnelheid is 2,7 km/u.
  • Bij iedere overstaphalte wordt standaard gerekend met 10 minuten extra overstaptijd.
  • Er wordt gepland met toegankelijke haltes zoals aangegeven in het CHB-bestand en met toegankelijke voertuigen zoals aangegeven door de vervoerder in de dienstregeling.