Extensões

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 Google 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