Расширения
Чтобы тестировать новые функции было удобнее, а разработчики могли добавлять дополнительную информацию в фид 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 | 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 о новых временных метках в сервисных оповещениях |