Extensões
Para facilitar os testes de novos recursos e permitir que desenvolvedores incluam informações em um feed GTFS Realtime, vamos aproveitar o recurso de extensões dos buffers de protocolo. As extensões nos permitem definir um namespace em uma mensagem do buffer de protocolo, em que desenvolvedores terceirizados podem definir campos adicionais sem a necessidade de modificar a definição original do protótipo.
Quando quer ampliar a especificação GTFS Realtime, um desenvolvedor precisa entrar em contato com a lista de e-mails dela. Vamos atribuir a ele o próximo ID de extensão disponível, selecionado de forma incremental em uma lista de números a partir de 1.000, conforme documentado na seção "Registro de extensões" abaixo.
Esses IDs de extensão atribuídos correspondem aos IDs de tags disponíveis no namespace extension
para cada definição de mensagem da GTFS Realtime. Depois de receber um ID de extensão, o desenvolvedor passa a usar essa informação para estender mensagens relacionadas. Mesmo que pretenda apenas estender uma única mensagem, o ID de extensão atribuído vai ser reservado para TODAS as mensagens.
Quando um desenvolvedor estende a especificação, em vez de adicionar um único campo como string
ou int32
com os respectivos IDs, o modelo preferido é definir uma nova mensagem, como MyTripDescriptorExtension
, que estenda a mensagem da GTFS Realtime subjacente e incluir todos os seus novos campos. Isso permite gerenciar os campos na mensagem da sua extensão da forma que quiser, sem precisar reservar um novo ID de extensão na lista primária.
message MyTripDescriptorExtension {
optional string some_string = 1;
optional bool some_bool = 2;
...
}
extend transit_realtime.TripDescriptor {
optional MyTripDescriptorExtension my_trip_descriptor = YOUR_EXTENSION_ID;
}
Registro de extensões
ID da extensão | Desenvolvedor | Contato | Detalhes |
---|---|---|---|
1000 | OneBusAway | onebusaway-developers | https://github.com/OneBusAway/onebusaway/wiki/GTFS-Realtime-Resources |
1001 | New York City MTA | mtadeveloperresources | http://mta.info/developers/ |
1002 | transit-realtime-partner-support@google.com | Atualizações de transporte público do Google Maps em tempo real | |
1003 | OVapi | gtfs-rt at 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 | Discussão em grupo |
1008 | SEPTA - Southeastern Pennsylvania Transportation Authority | Gregory Apessos | https://github.com/septadev |
1009 | Swiftly | mike@goswift.ly | Discussão em grupo |
1010 | IBI Group | Ritesh Warade | Proposta do GitHub para novos carimbos de data/hora em alertas de serviço |