Introduction
Par le Open Journey Planner (OJP) les CFF établissent une interface de planification distribuée de trajets. Il s’agit d’une interface « open » et standardisée selon des spécifications européennes. Elle permettra à différents systèmes d’échanger des informations entre eux afin de pouvoir planifier des trajets transfrontaliers ou utilisant divers moyens de transport, ou afin de pouvoir offrir de nouveaux services innovateurs. L’interface a été développée à partir du système allemand TRIAS.
A long terme, OJP va être le seul système mis à disposition par les CFF.
Description spécialisée
Glossaire
- OJP: désigne aussi bien le protocole que le système utilisé.
- StopPoint: un StopPoint est un arrêt requis du point de vue de l’horaire. Il peut s’agir d’une halte, d’une voie, d’un secteur, d’une bordure d’arrêt ou d’un élément dynamique. En général, il est trop spécifique pour la recherche.
- StopPlace: le StopPlace correspond à la halte. Les très grands complexes tels que la gare de Berne ou celle de Zurich comportent plusieurs StopPlaces.
- Trip: trajet
- Leg: tronçon d’un Trip.
- DatedJourney: convoi d’un moyen de transport à une date précise.
- Direction: toutes les lignes et tous les convois ont une direction. Il est important de noter que cet attribut est artificiel. Les opérateurs assignes ce valeur et c’est impossible de le déduire.
- Facility: une Facility est un élément disponible dans un «lieu» (p. ex. halte) ou sur un «service» (p. ex. véhicule).
- Mode: les Modes sont les moyens de transport possibles.
- ContinuousMode: Mode non lié à un horaire.
- IndividualModes: transports individuels.
- XXXRef: références. Dans la version finale, il s’agira d’identifiants génériques à l’échelon de la Suisse, mais ceux-ci sont encore en cours d’élaboration. Les éléments fournis ici sont donc susceptibles d’évoluer.
- PtMode: un PtMode est un Mode dans Public Transport.
- TransferModes: Mode impliquant une correspondance.
Notions importantes
Un Trip se compose de Legs. Voici les différents types de Legs:
- ContinuousLeg: Leg non lié à un horaire.
- TimedLeg: Leg lié à un horaire.
- TransferLeg: Leg pour un lieu où s’effectue une correspondance.
Restrictions importantes
- Actuellement, seuls les TP de Suisse sont pris en compte.
- Certains modes ne sont pas encore disponibles.
- Les informations en temps réel ne sont disponibles que lorsque nous avons reçu ces informations et pouvons les obtenir via CUS.
- Les informations relatives aux dérangements ne sont pas encore disponibles.
Explorateur de l’API
Explorateur de l’API
Accès à l’API
Comme pour toutes les API des CFF, un jeton est nécessaire. Pour l’obtenir, visiter le portail pour les dévélopeurs.
Tous les Services sont disponibles par POST au moyen de l’URL https://api.opentransportdata.swiss/ojp2020.
Deux en-têtes doivent être définis:
Content-Type: application/xml Authorization: Bearer <der Key>
La clé de travail actuelle est:
57c5dbbbf1fe4d000100001842c323fa9ff44fbba0b9b925f0c052d1
Fonctionnement d’Open Journey Planner
OJP fonctionne comme TRIAS (VDV 431).
L’interface TRIAS d’opentransportdata.swiss sera «augmentée» au moment du déploiement d’OJP. C’est-à-dire qu’elle sera capable de calculer des itinéraires.
Requests pertinentes:
- LocationInformationRequest: requête par «lieux»
- StopEventRequest: requête par indicateur de départ ou d’arrivée
- TripInfoRequest: détails sur un Trip
- TripRequest: demande effective d’itinéraire
D’autres API sont prévues à moyen terme (p. ex. FareRequest), ainsi que des améliorations: informations sur les dérangements, informations en lien avec la LHand.
Essentiellement au standard XML avec un comportement Request/Response, elles seront basées sur la norme européenne OJP. Comme pour toutes les normes du CEN, un profil sera développé spécifiquement pour la Suisse (précisant les éléments supportés et ceux non pris en charge).
Tous les accès auront lieu via un point d’accès. Les services sont définis dans l’element ServiceRequest. Ce n’est pas de REST classic.
<?xml version="1.0" encoding="UTF-8"?> <OJP xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.siri.org.uk/siri" version="1.0" xmlns:ojp="http://www.vdv.de/ojp" xsi:schemaLocation="http://www.siri.org.uk/siri ../ojp-xsd-v1.0/OJP.xsd"> <OJPRequest> <ServiceRequest> <RequestTimestamp>2020-01-09T08:00:00Z</RequestTimestamp> <RequestorRef>IRMA</RequestorRef> <ojp:OJPLocationInformationRequest> <!-- eigentlicher Request --> </ojp:OJPLocationInformationRequest> </ServiceRequest> </OJPRequest> </OJP>
En tant que RequestorRef, veuillez utiliser une indication explicite. Celle-ci doit comporter le suffixe «_test», «_int» ou «_prod» afin que nous sachions quel environnement est à l’origine de l’accès du côté du Requestor.
Plusieurs Requests dans un seul message
Il est possible d’émettre autant d’OJPXXXRequests que l’on souhaite au sein d’une même ServiceRequest. Ces requêtes ne doivent pas nécessairement être du même type.
Attention: les réponses ne sont pas fournies selon l’ordre des Requests, mais en fonction de la séquence dans l’élément XSD.
Il est par conséquent très important, pour de telles requêtes, que les MessageIdentifiers soient définis par Request afin de permettre l’extraction de la réponse.
Informations supplémentaires
-
- Description générale OJP
- CEN (planificateur de voyage multimodal): https://ec.europa.eu/transparency/regdoc/rep/3/2017/FR/C-2017-3574-F1-FR-MAIN-PART-1.PDF
- Page du CEN concernant l’OJP: http://www.transmodel-cen.eu/standards/ojp/
- Le document de norme OJP est protégée par des droits d’auteur et ne peut donc pas être mise à disposition.
- XSD concernant OJP sur Github: https://github.com/VDVde/OJP
- Github concernant TRIAS: https://github.com/VDVde/TRIAS