На этой странице представлена спецификация GTFS Ticketing, которая на момент создания документа рассматривается как предложение. Также, здесь приведены несколько дополнительных ограничений от Google.
Требования
Поле departure_time в файле stop_times.txt является обязательным.
Дополнительные типы полей
В этом разделе описаны дополнительные типы полей, а также поля с расширениями от Google. В некоторых полях требуются значения в форме URI.
- URI – унифицированный идентификатор ресурсов, включающий схему. Любые специальные символы в URI должны быть экранированы. Чтобы узнать, как правильно составить URI, прочитайте документ Унифицированный идентификатор ресурса: общий синтаксис (RFC 3986).
 
Расширения или добавления в файлах
Текстовые файлы со статусом Расширение – это существующие файлы, которые необходимо расширить. Вы должны добавить новые поля, определенные в таблице ниже.
Текстовые файлы со статусом Добавление – это новые файлы, представленные в расширениях Google Транспорта для продажи билетов. Вы должны создать эти файлы в соответствии с определениями полей, приведенными ниже. Обязательно добавьте эти файлы в свой фид.
| Название файла | Статус | Что определяет | 
|---|---|---|
agency.txt | 
    Расширение | Добавляет agency.ticketing_deep_link_id. | 
  
routes.txt | 
    Расширение | Добавляет routes.ticketing_deep_link_id. | 
  
trips.txt | 
    Расширение | Добавляет trips.ticketing_trip_id и trips.ticketing_type. | 
  
stop_times.txt | 
    Расширение | Добавляет stop_times.ticketing_type. | 
  
ticketing_identifiers.txt | 
    Добавление | Новый файл. См. определения полей. | 
ticketing_deep_links.txt | 
    Добавление | Новый файл. См. определения полей. | 
Определения полей
agency.txt (используется расширение)
| Название поля | Тип поля | Описание | 
|---|---|---|
ticketing_deep_link_id | 
    Необязательное | 
       Идентификатор из файла   | 
  
routes.txt (используется расширение)
| Название поля | Тип поля | Описание | 
|---|---|---|
ticketing_deep_link_id | 
    Необязательное | Идентификатор из файла ticketing_deep_links.txt. Определяет ссылку на контент, используемую для этого маршрута. Если присутствует, перезаписывает поле в файле agency.txt. | 
  
trips.txt (используется расширение)
| Название поля | Тип поля | Описание | 
|---|---|---|
ticketing_trip_id | 
    Необязательное | 
       Идентификатор, используемый в ссылке на контент. Не требуется, чтобы он был уникальным. Если значение   | 
  
ticketing_type | 
    Необязательное | 
       Перечисление, которое определяет, доступна ли для этого рейса продажа билетов по ссылке на контент. 
  | 
  
stop_times.txt (используется расширение)
| Название поля | Тип поля | Описание | 
|---|---|---|
ticketing_type | 
    Необязательное | 
       Перечисление, которое определяет, доступна ли для этого времени остановки продажа билетов по ссылке на контент. Если поле  
  | 
  
ticketing_identifiers.txt (используется добавление)
Самый распространенный вариант продажи билетов реализуется следующим образом: для каждой остановки задается идентификатор, используемый для обработки платежей. Если разные агентства используют одинаковый идентификатор для обозначения определенной остановки, то нужно повторить настройку этого параметра для каждого из таких агентств.
| Название поля | Тип поля | Описание | 
|---|---|---|
ticketing_stop_id | 
    Обязательное | Идентификатор. Определяет идентификатор продажи билетов по умолчанию, используемый для определенной остановки в конкретном агентстве. | 
stop_id | 
    Обязательное | Идентификатор из файла stops.txt. Обозначает остановку, для которой задан параметр ticketing_stop_id по умолчанию. | 
  
agency_id | 
    Обязательное | Идентификатор из файла agency.txt. Обозначает агентство, использующее остановку, для которой задан параметр ticketing_stop_id по умолчанию. | 
  
ticketing_deep_links.txt (используется добавление)
| Название поля | Тип поля | Описание | 
|---|---|---|
ticketing_deep_link_id | 
    Обязательное | Идентификатор. Определяет идентификатор для ссылки на контент. | 
web_url | 
    Необязательное | 
       URL, который используется для перехода по ссылке на контент. Содержимое этого поля нельзя перевести с помощью файла   | 
  
android_intent_uri | 
    Необязательное | 
       Идентификатор URI, используемый для приложений Android с действием  Пустое поле означает отсутствие ссылки на контент приложения для Android. Подробнее о том, как создавать ссылки на контент приложения для Android… Содержимое этого поля нельзя перевести с помощью файла   | 
  
ios_universal_link_url | 
    Необязательное | 
       URL универсальной ссылки для iOS. Если значение не указано, ссылки на контент не показываются на платформе iOS. Подробнее об iOS Universal Links… Содержимое этого поля нельзя перевести с помощью файла   | 
  
Теги полей для вызова API
Google вызывает URL, определенные в файле ticketing_deep_links.txt, со следующими параметрами:
| Название поля | Описание | 
|---|---|
service_date | 
    
       День обслуживания рейса (дата, повторяющиеся данные). В этом поле задается дата отправления от первой остановки. Формат этого поля соответствует массиву JSON.  | 
  
ticketing_trip_id | 
    
       Идентификатор рейса из файла  Формат этого поля соответствует массиву JSON.  | 
  
from_ticketing_stop_time_id | 
    
       Идентификатор времени остановки ( Значение времени остановки задается следующим образом: 
 Формат этого поля соответствует массиву JSON.  | 
  
 | 
    
       Идентификатор времени остановки ( Значение для этого параметра определяется так же, как и для поля  Формат этого поля соответствует массиву JSON.  | 
  
boarding_time | 
    
       Время отправления ( В этом поле указываются дата и время посадки пассажира в транспортное средство. Значение времени для этого поля соответствует стандарту ISO 8601. Используется следующий формат: 
 Ниже указано одно и то же время для разных часовых поясов: 
 Формат этого поля соответствует массиву JSON.  | 
  
arrival_time | 
    Время прибытия (arrival_time) для параметра stop_time в конце отрезка пути (ISO 8601, повторяющиеся данные). Значение времени для этого поля соответствует стандарту ISO 8601. Используется следующий формат: 
 Ниже указано одно и то же время для разных часовых поясов: 
 Формат этого поля соответствует массиву JSON.  | 
  
Примеры
Исходные данные по отрезкам маршрута:
- Дата обслуживания – 
20190716, идентификатор рейса –ti1, идентификатор времени остановки в начале отрезка маршрута –11, идентификатор времени остановки в конце отрезка маршрута –12. Пассажир садится в транспортное средство в 14:00 (UTC) и прибывает в 14:50 (UTC). - Дата обслуживания – 
20190716, идентификатор рейса –ti2, идентификатор времени остановки в начале отрезка маршрута –21, идентификатор времени остановки в конце отрезка маршрута –22. Пассажир садится в транспортное средство в 15:00 (UTC) и прибывает в 15:50 (UTC). 
Сайт бронирования (web_url): https://examplepetstore.com.
Значения параметров:
| Название поля | Описание | 
|---|---|
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"]; | 
  
arrival_time | 
    ["2019-07-16T14:50:00+00:00", "2019-07-16T15:50:00+00:00"] | 
  
Конечный URI (после кодирования):
https://examplepetstore.com?service_date=%5B%2220190716%22,%2220190716%22%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&arrival_time=%5B%222019-07-16T14:50:00%2B00:00 %22,%222019-07-16T15:50:00%2B00:00%22%5D
Примеры разных значений параметра ticketing_stop_id
У остановок могут быть разные идентификаторы при использовании полей из файла ticketing_identifiers.txt. Ниже жирным шрифтом выделены примеры таких значений.
stop.txt | 
  
|---|
| 
         
 
 
  | 
  
routes.txt | 
  
|---|
| 
       
 
  | 
  
trips.txt | 
  
|---|
| 
       
 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 | 
  
|---|
| 
       
 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 | 
  
|---|
| 
       
 si1,agency1,4924 si2,agency1,4676  | 
  
ticketing_deep_links.txt | 
  
|---|
| 
       
 tdl1, https://examplepetstore.com/api/gtfs/web, https://examplepetstore.com/api/gtfs/android, https://examplepetstore.com/api/gtfs/ios  | 
  
Если запрос выполнен 19 июля 2019 г., а время для GTFS указывается в формате UTC+1, то финальный URL будет иметь следующий вид:
https://examplepetstore.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-19T05:59:00%2B00:00%22%5&arrival_time=%5B%222019-07-19T07:56:00%2B00:00%22%5D
Рекомендации
При внедрении расширений Google Транспорта для продажи билетов следуйте приведенным ниже рекомендациям.
| Рекомендации | |
|---|---|
| По возможности используйте одинаковые ссылки на контент для всех агентств и маршрутов. | 
         Если в фиде статических данных для нескольких агентств или маршрутов используются одинаковые URL ссылок на контент, то в поле   | 
    
Согласуйте значения ticketing_type. | 
      
         В файле   | 
    
Сопоставьте значения ticketing_stop_id для родительских и дочерних остановок. | 
      Выполните сопоставление для всех родительских и дочерних остановок, включенных в продажу билетов. В файле ticketing_identifiers.txt значения ticketing_stop_id не передаются между родительскими и их дочерними остановками. | 
    
Сопоставьте значения ticketing_stop_id для всех агентств, использующих эту остановку в фиде. | 
      
         Если несколько агентств с продажей билетов используют в фиде статических данных одну и ту же остановку, то сопоставление должно быть выполнено для всех этих агентств. Подробная информация приведена в разделе Определения полей (  | 
    
| Если требуется ссылка на контент приложения для Android, используйте Android App Links. | 
         Если партнер хочет, чтобы по ссылке на контент открывалось приложение для Android, настройте ее с помощью Android App Links.  | 
    
| Если требуется ссылка на контент приложения для iOS, используйте iOS Universal Links. | Если партнер хочет, чтобы по ссылке на контент открывалось приложение для iOS, настройте ее с помощью iOS Universal Links. |