(TRIAS TripInfoRequest)
Attention : sera supprimé fin 2024. Commencez à migrer vers OJP 2.0 à partir de la mi-2024.
TripInfoRequest est un open service (API). Il s’agit d’un type de prévision relative au trajet (un autre type étant TripRequest). Il correspond au service « TripInfoRequest » de VDV431.
Description technique
Une requête TripInfoRequest demande une JourneyRef valide. Elle ne peut pas être dérivée simplement en consultant l’horaire (aperçu de l’horaire). La solution la plus simple est l’utlisation d’un autre API (TripRequest oder Ankunfts- und Abfahrtsanzeiger) pour obtenir JourneyRef.
Concepts importants
- Halte : Les jeux de données suivants seront d’utilité : DiDok
- Trajet / voyage : Un trajet comprend le transport suivant un certain itinéraire et une certaine liaison selon l’horaire, à une certaine heure, utilisant un certain moyen de transport, dans une certaine direction.
- Horaire : L’horaire, dans le contexte des transports publics (ainsi que du transport des marchandises sur rail), détermine l’itinéraire d’un moyen de transport. Il définit en plus les numéros des trains, les jours de service, la route, les heures d’arrivée, de départ et de passage pour toutes les haltes, ainsi que les vitesses permises dans les différents secteurs.
- Pronostic : Un pronostic est une prévision des heures d’arrivée et de départ en tenant compte de la position actuelle du moyen de transport ainsi que des conflits résultant d’un retard et les décisons prévues qui en suivent dans les prochaines x minutes et leurs effets. Pour des prévisions plus loins dans le futur, une méthode plus simple est appliquée.
- Moyen de transport : Soit portant la signification « type de véhicule » (train, bateau, tram, bus) ou la signification « système de transport » (transports publics, etc.).
- DateTime dans Response : Il’s agit de l’« heure Zoulou » dans tous les cas (c.-à.-d. UTC). Pour obtenir l’heure locale suisse, il faut ajouter deux heures en été, une heure en hiver.
Détails techniques
API Explorer
Autorisation et Open Services
Afin de pouvoir accéder l’API vous avez besoin d’une clé API. Elle peut être obtenue par le portail développeurs.
La clé doit être incluse comme “Authorization” dans le header HTTP.
L’URL pour y accéder
API: https://api.opentransportdata.swiss/trias2020
Clé d’essai : 57c5dbbbf1fe4d000100001842c323fa9ff44fbba0b9b925f0c052d1
En spécifiant le header contenant l’autorisation et Content-Type= „text/XML“ ou „application/XML“
Exemple d’une requête
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<? xml version="1.0" encoding="utf-8"?> <Trias version = "1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ServiceRequest> <siri:RequestTimestamp>2020-09-30T19:53:23.659Z</siri:RequestTimestamp> <siri:RequestorRef>API-Explorer</siri:RequestorRef> <RequestPayload> <TripInfoRequest> <JourneyRef>odp:80045:Y:H:j17:3928</JourneyRef> <OperatingDayRef>2020-09-30</OperatingDayRef> <Params> <IncludeCalls>true</IncludeCalls> <IncludeService>true</IncludeService> </Params> </TripInfoRequest> </RequestPayload> </ServiceRequest> </Trias> |
La requête est transmise comme body.
Explication détaillée de la requête
Les éléments principaux de la requête :
nom | obligatoire? | description | exemple |
JourneyRef | oui(*) | JourneyRef doit être obtenu ou dérivé en utilisant d’autre sources. | odp:01012::H:j16:30441 |
OperatingDayRef | non | Jour de service. Sans indication, le jour actuel est pris en compte. | 2020-04-02T |
Params | non | Les autres paramètres de la requête | … voir la tabelle suivante |
(*) VDV431 connait des requêtes pour VehicleRef et TimeOfOperation. L’usage est déconseillé car VehicleRef n’est pas utilisée dans notre système.
Params – les autres paramètres de la requête :
nom | obligatoire? | description | exemple |
UseTimetabledDataOnly | non | Détermine si le résultat contient des informations concernant les jours de service. Valeur par défaut : false. | false |
IncludeCalls | non | Détermine si le résultat contient les haltes du trajet. Valeur par défaut : true.
Le système ne tient pas compte de ce paramètre, il le traite comme true. |
– |
IncludePosition | non | Détermine si le résultat contient la position actuelle du véhicule. Valeur par défaut (selon VDV431) : true.
Cette fonctionnalité n’est pas implémentée dans le système. |
– |
IncludeService | non | Détermine si le résultat contient des informations concernant les services liés au moyen de transport. Valeur par défaut : true. | true |
Extension | non | Aucune extension implémentée | – |
Explication d’une réponse
Voici la structure d’une réponse :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
<? xml version="1.0" encoding="UTF-8"?> <trias:Trias xmlns:siri="http://www.siri.org.uk/siri" xmlns:trias="http://www.vdv.de/trias" xmlns:acsb="http://www.ifopt.org.uk/acsb" xmlns:ifopt="http://www.ifopt.org.uk/ifopt" xmlns:datex2="http://datex2.eu/schema/1_0/1_0" version="1.1"> <trias:ServiceDelivery> <siri:ResponseTimestamp>2020-09-30T20:25:44Z</siri:ResponseTimestamp> <siri:ProducerRef>EFAController10.4.10.25-OJP-EFA01-P</siri:ProducerRef> <siri:Status>true</siri:Status> <trias:Language>de</trias:Language> <trias:CalcTime>18</trias:CalcTime> <trias:DeliveryPayload> <trias:TripInfoResponse> <trias:TripInfoResult> <trias:OnwardCall> <trias:StopPointRef>8507000</trias:StopPointRef> <trias:StopPointName> <trias:Text>Bern</trias:Text> <trias:Language>de</trias:Language> </trias:StopPointName> <trias:ServiceDeparture> <trias:TimetabledTime>2020-10-14T07:22:00Z</trias:TimetabledTime> <trias:EstimatedTime>2020-10-14T07:22:00Z</trias:EstimatedTime> </trias:ServiceDeparture> <trias:StopSeqNumber>1</trias:StopSeqNumber> </trias:OnwardCall> <!-- weitere Calls --> <trias:Service> <trias:OperatingDayRef>2020-10-14</trias:OperatingDayRef> <trias:JourneyRef>ojp:91008:E:H:j20:17:8093</trias:JourneyRef> <trias:LineRef>ojp:91008:E:H</trias:LineRef> <trias:DirectionRef>outward</trias:DirectionRef> <trias:Mode> <trias:PtMode>rail</trias:PtMode> <trias:RailSubmode>local</trias:RailSubmode> <trias:Name> <trias:Text>S 8093</trias:Text> <trias:Language>de</trias:Language> </trias:Name> </trias:Mode> <trias:PublishedLineName> <trias:Text>8</trias:Text> <trias:Language>de</trias:Language> </trias:PublishedLineName> <trias:OperatorRef>ojp:88</trias:OperatorRef> <trias:OriginStopPointRef>8507000</trias:OriginStopPointRef> <trias:OriginText> <trias:Text>Bern</trias:Text> <trias:Language>de</trias:Language> </trias:OriginText> <trias:DestinationStopPointRef>8508059</trias:DestinationStopPointRef> <trias:DestinationText> <trias:Text>Solothurn</trias:Text> <trias:Language>de</trias:Language> </trias:DestinationText> </trias:Service> </trias:TripInfoResult> </trias:TripInfoResponse> </trias:DeliveryPayload> </trias:ServiceDelivery> </trias:Trias> |
Les éléments principaux de la réponse se trouvent dans TripInfoResultStructure :
nom | obligatoire? | description | exemple |
PreviousCall | non / plusieurs | Les haltes déjà desservies, y inclus la halte actuelle si applicable. | structure séparée … voir la tabelle suivante |
CurrentPosition | non | La position actuelle du véhicule.
Cette fonctionnalité n’est pas implémentée. |
– |
OnwardCall | non / plusieurs | Les futures haltes du trajet. | structure séparée … voir la tabelle suivante |
Service | non | Des informations concernant le moyen de transport. | structure séparée … voir la tabelle suivante |
OperatingDays | non | Les jours de service.
Cette fonctionnalité n’est pas implémentée. |
– |
OperatingDaysDescription | non | Les jours de service, lisible par machine. P. ex., « lundi à vendredi » ou « jours fériés ».
Cette fonctionnalité n’est pas implémentée. |
– |
PreviousCall et OnwardCall ont la structure suivante :
nom | obligatoire? | description | exemple | ||
StopPointRef | oui | Un code référant une halte. | 857000 | ||
StopPointName | oui | Le nom d’une halte comme utilisé pour les informations passagers.
Attention : Language est toujours DE. |
|
||
PlannedBay | non | Désignation de la halte ou borne où on monte ou descend du véhicule. Selon l’état actuel de la planification.
|
|
||
EstimatedBay | non | Désignation de la halte ou borne ou on monte ou descend du véhicule. Selon l’état actuel du pronostic. |
|
||
ServiceArrival | non | Heures d’arrivée |
|
||
TimetabledTime | oui | L’heure d’arrivée selon l’horaire
Heure « Zoulou » |
2020-04-02T11:20:00Z | ||
RecordedAtTime | non | L’heure d’arrivée comme enregistrée.
Cette fonctionnalité n’est pas implémentée |
– | ||
EstimatedTime | non | L’heure d’arrivée selon pronostic.
Dépend de la disponibilité des données temps réel nécessaires. Pour les étapes dans le passée il s’agit soit du dernier pronostic ou des données réelles. Couramment, les données temps réel sont effacées immédiatement après le départ. |
2020-04-02T11:20:00Z | ||
ServiceDeparture | non | Heures de départ | Comme ServiceArrival, mais pour des départs | ||
StopSequenceNumber | oui | Le numéro de séquence de la halte. | 4 | ||
DemandStop | non | Arrêt sur demande. Une halte qui est seulement desservie si demandée d’avance. Booléen. | Ne pas disponible | ||
UnplannedStop | non | Un arrêt non-planifié. Booléen |
|
||
NotServicedStop | non | Une halte (selon l’horaire) qui n’a pas été desservie. Ceci peut se produire en cas d’une liaison supprimée. |
|
||
SituationFullRef | non, plusieurs | Une référence à un message sur une perturbation. Le message peut être inclus dans ResponseContext, ou il peut être transmis par une voie différente. . | Ne pas implémenté |
Service
Une description de la structure peut être trouvée ici : Service (VDV 431)
Erreurs et problèmes
La réponse contient un ErrorMessage en cas de problème lors de l’exécution de la requête :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<? xml version="1.0" encoding="UTF-8"?> <trias:Trias xmlns:siri="http://www.siri.org.uk/siri" xmlns:trias="http://www.vdv.de/trias" xmlns:acsb="http://www.ifopt.org.uk/acsb" xmlns:ifopt="http://www.ifopt.org.uk/ifopt" xmlns:datex2="http://datex2.eu/schema/1_0/1_0" version="1.1"> <trias:ServiceDelivery> <siri:ResponseTimestamp>2020-09-30T20:01:37Z</siri:ResponseTimestamp> <siri:ProducerRef>EFAController10.4.10.25-OJP-EFA01-P</siri:ProducerRef> <siri:Status>true</siri:Status> <trias:Language>de</trias:Language> <trias:CalcTime>15</trias:CalcTime> <trias:DeliveryPayload> <trias:TripInfoResponse> <trias:ErrorMessage> <trias:Code>-1</trias:Code> <trias:Text> <trias:Text>TRIPINFO_NOJOURNEYFOUND</trias:Text> <trias:Language>de</trias:Language> </trias:Text> </trias:ErrorMessage> </trias:TripInfoResponse> </trias:DeliveryPayload> </trias:ServiceDelivery> </trias:Trias> |
Remarques
Important à savoir, surtout pour des développeurs extérieurs :
- On utilise l’« heure Zoulou » dans tous les cas (c.-à.-d. UTC).
- Les haltes sont répertoriées dans DiDok et la liste des gares.
- JourneyRef n’est pas une structure triviale. Il peut être plus facile de l’obtenir en apellant d’autres services.
Pour en savoir plus
- Informations générales concernant l’autorisation et les clés API : Developer Dashboard
- Documentation TRIAS : https://www.vdv.de/ip-kom-oev.aspx
- Le service TRIAS (PDF) : https://www.vdv.de/431-2sds-v1.1.pdfx
- XSD: https://www.vdv.de/trias-xsd-v1.1.zipx?forced=true