Расширения

Расширения

Чтобы тестировать новые функции было удобнее, а разработчики могли добавлять дополнительную информацию в фид GTFS Realtime, используются расширения формата Protocol Buffers. С их помощью можно определять пространство имен в сообщении Protocol Buffers, в котором сторонние разработчики могут задавать дополнительные поля, не изменяя исходное определение.

Если разработчик заинтересован в расширении спецификации GTFS Realtime, ему необходимо отправить запрос по адресам из списка рассылки GTFS Realtime, поле чего мы выделим ему очередной доступный идентификатор расширения. Идентификатор выбирается из списка номеров, начинающихся с 1000, и вносится в реестр расширений, как показано ниже.

Назначенные подобным образом идентификаторы соответствуют идентификаторам тегов, которые используются в пространстве имен extension для определения каждого сообщения GTFS Realtime. Получив идентификатор, разработчик сможет использовать его для расширения таких сообщений. Даже если планируется расширить только одно сообщение, назначенный идентификатор расширения будет зарезервирован для ВСЕХ сообщений.

Разработчикам, расширяющим спецификацию, рекомендуется не добавлять к идентификатору расширения одно поле (например, string или int32), а задать определение нового сообщения, например MyTripDescriptorExtension, расширить им основное сообщение GTFS Realtime, а затем добавить туда все новые поля. Одно из преимуществ этого метода в том, что вы сможете управлять полями в сообщении расширения, не резервируя новый идентификатор из основного списка.

message MyTripDescriptorExtension {
  optional string some_string = 1;
  optional bool some_bool = 2;
  ...
}
extend transit_realtime.TripDescriptor {
  optional MyTripDescriptorExtension my_trip_descriptor = YOUR_EXTENSION_ID;
}

Реестр расширений

Идентификатор расширения Разработчик Контакт Дополнительные сведения
1000 OneBusAway Группа разработчиков https://github.com/OneBusAway/onebusaway/wiki/GTFS-Realtime-Resources
1001 Metropolitan Transportation Authority (Нью-Йорк) Группа разработчиков http://mta.info/developers/
1002 Google transit-realtime-partner-support@google.com Live Transit Updates для Google Карт
1003 OVapi gtfs-rt@ovapi.nl http://gtfs.ovapi.nl
1004 Metra Уильям Эшбог (William Ashbaugh) w.l.ashbaugh@gmail.com
1005 Metro-North Railroad Джон Ларсен (John Larsen)
1006 realCity Дэвид Варга (David Varga) http://realcity.io
1007 NSW TrainLink Грегори Николс (Gregory Nicholls) Групповое обсуждение
1008 SEPTA (Southeastern Pennsylvania Transportation Authority) Грегори Апессос (Gregory Apessos) https://github.com/septadev
1009 Swiftly mike@goswift.ly Групповое обсуждение
1010 IBI Group Ритеш Варадэ (Ritesh Warade) Предложение GitHub о новых временных метках в сервисных оповещениях