Extensions de billetterie dans Google Transports en commun

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Cette page définit le sous-ensemble de la spécification GTFS-Ticketing, qui est à l'état de proposition au moment de la rédaction de ce document. Cette page inclut également plusieurs restrictions Google supplémentaires.

Conditions requises

Le champ departure_time dans stop_times.txt est obligatoire.

Types de champs supplémentaires

Cette section décrit les types de champs supplémentaires, ainsi que ceux associés aux extensions de Google.

  • URI : Uniform Resource Identifier (URI ou identifiant de ressource uniforme) complet incluant le schéma. Tous les caractères spéciaux de l'URI doivent utiliser les caractères d'échappement appropriés. Pour savoir comment créer des valeurs d'URI complets, consultez RFC 3986 Uniform Resource Identifier (URI): Generic Syntax.

Ajouts ou extensions de fichiers

Nom de fichier État Définit
agency.txt Extension Ajoute agency.ticketing_deep_link_id
routes.txt Extension Ajoute routes.ticketing_deep_link_id
trips.txt Extension Ajoute trips.trip_ticketing_id et trips.ticketing_type
stop_times.txt Extension Ajoute stop_times.ticketing_type
ticketing_identifiers.txt Ajout
ticketing_deep_links.txt Ajout

Définitions des tables

agency.txt (fichier étendu)

Nom du champ Présence Détails
ticketing_deep_link_id Facultative (ID de ticketing_deep_links.txt) Définit le lien profond à utiliser pour cette agence. Peut être remplacé dans routes.txt.

routes.txt (fichier étendu)

Nom du champ Présence Détails
ticketing_deep_link_id Facultative (ID issu de ticketing_deep_links.txt) Définit le lien profond à utiliser pour cet itinéraire. Si ce champ est présent, il remplace celui de agency.txt.

trips.txt (fichier étendu)

Nom du champ Présence Détails
ticketing_trip_id Facultative

(ID) Identifiant à transmettre via le lien profond. N'a pas besoin d'être unique.

Utilise le trip_id en cas de besoin.

ticketing_type Facultative

(Enum) Définissez si la billetterie via un lien profond est disponible pour ce trajet :

  • 0 ou empty : est considéré comme :
    • disponible si un ticketing_deep_link_id est défini pour l'itinéraire ou l'agence ;
    • non disponible dans le cas contraire.
  • 1 : non disponible.

stop_times.txt (fichier étendu)

Nom du champ Présence Détails
ticketing_type Facultative

(Enum) Définissez si la billetterie via un lien profond est disponible pour ce trajet. Si ce champ est défini, remplace la valeur définie dans trip.ticketing_type.

  • Vide : valeur définie par trip.ticketing_type.
  • 0 : est considéré comme :
    • disponible si un ticketing_deep_link_id est défini pour l'itinéraire ou l'agence ;
    • non disponible dans le cas contraire.

ticketing_identifiers.txt (fichier ajouté)

Dans la plupart des cas de billetterie, chaque arrêt présente un identifiant pour la facturation. Différentes agences peuvent utiliser le même identifiant pour un arrêt donné. Lorsque plusieurs agences desservent le même arrêt, répétez ce mappage pour chacune d'elles.

Nom du champ Présence Détails
ticketing_stop_id Obligatoire (ID) Définit un ID de billetterie par défaut pour cet arrêt et cette agence.
stop_id Obligatoire (ID issu de stops.txt) Arrêt pour lequel le ticketing_stop_id par défaut est défini.
agency_id Obligatoire (ID issu de agency.txt) Agence de l'arrêt pour lequel le ticketing_stop_id par défaut est défini.

ticketing_deep_links.txt (fichier ajouté)

Nom du champ Présence Détails
ticketing_deep_link_id Obligatoire (ID) Définit un ID pour le lien profond.
web_url Facultative

(URL) URL de destination pour les liens profonds.

Les traductions peuvent être fournies via translations.txt pour rediriger les passagers vers des URL spécifiques à leurs paramètres régionaux.

android_intent_uri Facultative

(URI) URI à transmettre à une application Android native avec un intent android.intent.action.VIEW.

Si ce champ est vide, cela signifie qu'il n'existe aucun lien profond vers une application Android native.

Pour en savoir plus sur les liens profonds sur Android, consultez Créer des liens profonds vers le contenu d'une application.

Ce champ ne peut pas être traduit via translations.txt.

ios_universal_link_url Facultative

(URL) URL du lien universel à appeler sur iOS.

Si ce champ est vide, les liens profonds ne s'afficheront pas sur iOS.

Pour en savoir plus, consultez Liens universels sur iOS.

Ce champ ne peut pas être traduit via translations.txt.

Espaces réservés des champs dans l'appel d'API

Google appelle les URL précédentes avec les paramètres suivants :

Nom du champ Présence Détails
service_date Obligatoire

(Date, reproductible) Jour de service du trajet.

Ce champ est formaté comme un tableau JSON.

ticketing_trip_id Obligatoire

(ID issu de trips.txt, reproductible) Identifiant du trajet.

Ce champ est formaté comme un tableau JSON.

from_ticketing_stop_time_id Obligatoire

(Reproductible) Identifiant du stop_time auquel commence l'étape.

Pour un horaire d'arrêt donné, la valeur est :

  • Le ticketing_stop_id défini dans ticketing_identifiers.txt pour l'agency_id et le stop_id du stop_time.
  • Sinon, la stop_sequence est utilisée.

Ce champ est formaté comme un tableau JSON.

to_ticketing_stop_time_id Obligatoire

(Reproductible) Identifiant du stop_time auquel se termine l'étape.

Pour en savoir plus sur la dérivation de la valeur, consultez from_ticketing_stop_time_id.

Ce champ est formaté comme un tableau JSON.

boarding_time Obligatoire

(ISO 8601, reproductible) Horaire de départ (departure_time) du stop_time auquel commence l'étape.

La valeur de l'horaire de ce champ est conforme à la norme ISO 8601, avec la chaîne de format suivante :

YYYY-MM-DDThh:mm:ss±hh:mm

Tous les horaires ci-dessous sont identiques, même s'ils utilisent différents fuseaux :

  • À Londres, au Royaume-Uni : 2019-07-29T18:26:00+01:00
  • À New York, aux États-Unis : 2019-07-29T13:26:00-04:00
  • À Tokyo, au Japon : 2019-07-30T02:26:00+09:00

Ce champ est formaté comme un tableau JSON.

Exemples

Si les étapes sont les suivantes :

  • Date du service : 20190716 ; ID de billetterie ti1 pour le trajet entre l'ID 11 (horaire à l'arrêt de départ) et l'ID 12 (horaire à l'arrêt d'arrivée) ; embarquement à 14h UTC
  • Date du service : 20190716 ; ID de billetterie ti2 pour le trajet entre l'ID 21 (horaire à l'arrêt de départ) et l'ID 22 (horaire à l'arrêt d'arrivée) ; embarquement à 15h UTC

Et la web_url est : http://myawesomebookingwebsite.com

Les valeurs des paramètres sont les suivantes :

Nom du champ Détails
service_date ["20190716", "20190716"]
ticketing_trip_id ["ti1", "ti2"]
from_ticketing_stop_time_id ["11", "21"]
to_ticketing_stop_time_id ["12", "22"]
boarding_time ["2019-07-16T14:00:00+00:00", "2019-07-16T15:00:00+00:00"]

L'URI final (après l'encodage) est le suivant :

http://myawesomebookingwebsite.com?service_date=%5B%2220190716%22,%22%2019071622%5D &ticketing_trip_id=%5B%22ti1%22,%22ti2%22%5D&from_ticketing_stop_time_id=%5B%2211%22,%2221%22%5D &to_ticketing_stop_time_id=%5B%2212%22,%2222%22%5D&boarding_time=%5B%222019-07-16T14:00:00%2B00:00 %22,%222019-07-16T15:00:00%2B00:00%22%5D

Exemples de différentes valeurs ticketing_stop_id

Les arrêts peuvent avoir des ID différents pour la billetterie avec le champ ticketing_identifiers.txt. Les valeurs en gras se trouvent dans l'appel Web décrit après les fichiers.

stop.txt

stop_id,stop_name

si1,"Paris Gare-de-Lyon"

si2,"Lyon Part-Dieu"

routes.txt

route_id,route_long_name,ticketing_deep_link_id

ri1,"TGV inOui Paris-Lyon",tdl1

trips.txt

trip_id,service_id,route_id,trip_short_name, ticketing_trip_id

ti1,everyday,ri1,"TGV INOUI 6603",FR_SNCF_6603

ti2,everyday,ri1,"TGV INOUI 6681",FR_SNCF_6681

ti3,everyday,ri1,"TGV INOUI 6607",FR_SNCF_6607

stop_times.txt

trip_id,stop_sequence,stop_id,arrival_time, departure_time

ti1,1,si1,06:59:00,06:59:00

ti1,2,si2,08:56:00,08:56:00

ti2,1,si1,07:53:00,07:53:00

ti2,2,si2,10:00:00,10:00:00

ti3,1,si1,08:59:00,08:59:00

ti3,2,si2,10:56:00,10:56:00

ticketing_identifiers.txt

stop_id,agency_id,ticketing_stop_id

si1,agency1,4924

si2,agency1,4676

ticketing_deep_links.txt
ticketing_deep_link_id, web_url, android_intent_url, ios_universal_urltdl1, https://www.thetrainline.com/api/gtfs/web, https://www.thetrainline.com/api/gtfs/android, https://www.thetrainline.com/api/gtfs/ios

Si la demande est effectuée le 19 juillet 2019 et que les horaires GTFS utilisent le fuseau UTC+1, l'appel Web sera le suivant :

http://www.thetrainline.com/api/gtfs/web?service_date=%5B%2220190719%22%5D&ticketing_trip_id= %5B%22FR_SNCF_6603%22%5D&from_ticketing_stop_time_id=%5B%224924%22%5D&to_ticketing_stop_time_id= %5B%224676%22%5D&boarding_time=%5B%222019-07-19T07:59:00%2B00:00%22%5D