Referência da GTFS Realtime

Um Feed GTFS Realtime permite que as empresas de transporte público forneçam aos consumidores informações em tempo real sobre interrupções no serviço (estações fechadas, linhas fora de operação, atrasos significativos etc.), a localização de veículos e horários previstos de chegada.

A versão 2.0 da especificação de feeds é abordada e documentada neste site.

Definições de termos

Obrigatório

Nas versões 2.0 e posteriores da GTFS Realtime, a coluna Obrigatório descreve campos que precisam ser fornecidos por um produtor para que os dados de transporte público sejam válidos e façam sentido para um aplicativo consumidor.

Os seguintes valores são usados na coluna Obrigatório:

  • Obrigatório: este campo precisa ser fornecido por um produtor de Feed GTFS Realtime.
  • Obrigatório sob certas condições: este campo é obrigatório nas situações mencionadas em Descrição. Fora dessas condições, o campo é opcional.
  • Opcional: este campo é opcional e não precisa ser implementado pelos produtores. No entanto, se os dados estiverem disponíveis nos sistemas de localização automática de veículos (por exemplo, VehiclePosition timestamp), recomenda-se que os produtores especifiquem esses campos opcionais quando possível.

Não foram definidos requisitos semânticos na versão 1.0 da GTFS Realtime. Portanto, é possível que os feeds com gtfs_realtime_version igual a 1 não atendam a esses requisitos. Veja mais detalhes na proposta de requisitos semânticos.

Cardinalidade

A cardinalidade representa o número de elementos que podem ser especificados em determinado campo e pode ter os seguintes valores:

Consulte sempre as colunas Obrigatório e Descrição para ver quando um campo é obrigatório, obrigatório sob certas condições ou opcional. Consulte a cardinalidade do buffer de protocolo em gtfs-realtime.proto.

Tipos de dados do buffer de protocolo

Os seguintes tipos de dados do buffer de protocolo são usados para descrever elementos do feed:

  • message: tipo complexo
  • enum: lista de valores fixos

Campos experimentais

Os campos rotulados como experimentais estão sujeitos a alterações e ainda não foram formalmente incluídos na especificação. Um campo experimental pode ser formalmente incluso no futuro.

Índice de elementos

Elementos

message FeedMessage

Conteúdo de uma mensagem de feed. Cada mensagem no fluxo é recebida como uma resposta a uma solicitação GET HTTP adequada. Um feed em tempo real é sempre definido em relação a um Feed GTFS já existente. Todos os códigos de entidade são resolvidos em relação ao Feed GTFS.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
header FeedHeader Obrigatório Um Metadados sobre este feed e a mensagem de feed.
entity FeedEntity Obrigatório sob certas condições Muitos Conteúdo do feed. Este campo precisará ser fornecido se houver informações em tempo real disponíveis para o sistema de transporte público. Se este campo estiver vazio, os consumidores deverão presumir que não há informações em tempo real disponíveis para o sistema.

message FeedHeader

Metadados sobre um feed, incluídos em mensagens de feed.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
gtfs_realtime_version string Obrigatório Um Versão da especificação do feed. A versão atual é 2.0.
incrementality Incrementality Obrigatório Um
timestamp uint64 Obrigatório Um Este carimbo de data/hora identifica o momento em que o conteúdo deste feed foi criado (no horário do servidor). No horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). Para evitar o desvio de tempo entre sistemas que produzem e consomem informações em tempo real, é recomendável derivar o carimbo de data/hora de um servidor de horário. É completamente aceitável usar servidores Stratum 3 ou até mesmo de camadas mais baixas, já que podem ser toleradas as diferenças de horário de alguns segundos.

enum Incrementality

Determina se a busca atual é incremental.

  • FULL_DATASET: esta atualização substituirá todas as informações em tempo real anteriores do feed. Assim, ela deverá fornecer um resumo completo de todos os dados dinâmicos.
  • DIFFERENTIAL: no momento, este modo não é compatível, e o comportamento não é especificado para feeds que o utilizam. Há discussões disponíveis na lista de e-mails da GTFS Realtime sobre como especificar por completo o comportamento do modo DIFFERENTIAL. A documentação será atualizada quando esses tópicos forem finalizados.

Valores

Valor
FULL_DATASET
DIFFERENTIAL

message FeedEntity

Uma definição (ou atualização) de uma entidade no feed de transporte público. Se a entidade não estiver sendo excluída, exatamente um dos campos trip_update, vehicle e alert precisará ser preenchido.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
id string Obrigatório Um Identificador exclusivo do feed para esta entidade. Os códigos são usados apenas para fornecer suporte à incrementabilidade. É necessário usar seletores explícitos para especificar as entidades reais indicadas pelo feed (consulte EntitySelector abaixo para mais informações).
is_deleted bool Opcional Um Define se esta entidade deve ou não ser excluída. Deve ser fornecido apenas em feeds com Incrementality definida como DIFFERENTIAL. Este campo NÃO pode ser fornecido em feeds com Incrementality definida como FULL_DATASET.
trip_update TripUpdate Obrigatório sob certas condições Um Dados em tempo real sobre atrasos na partida de uma viagem. Pelo menos um dos campos trip_update, vehicle ou alert precisa ser fornecido. Não é possível deixar todos esses campos vazios.
vehicle VehiclePosition Obrigatório sob certas condições Um Dados em tempo real sobre a posição de um veículo. Pelo menos um dos campos trip_update, vehicle ou alert precisa ser fornecido. Não é possível deixar todos esses campos vazios.
alert Alert Obrigatório sob certas condições Um Dados em tempo real sobre o alerta. Pelo menos um dos campos trip_update, vehicle ou alert precisa ser fornecido. Não é possível deixar todos esses campos vazios.

message TripUpdate

Atualização em tempo real sobre o andamento de um veículo ao longo de uma viagem. Consulte também o tópico sobre entidades de atualizações de viagem.

Dependendo do valor de ScheduleRelationship, um elemento TripUpdate pode especificar:

  • uma viagem que continua ao longo da programação;
  • uma viagem que prossegue ao longo de um trajeto, mas não tem programação fixa;
  • uma viagem que foi adicionada à programação ou removida dela.

As atualizações podem ser para eventos de chegada/partida futuros, previstos ou passados. Na maioria dos casos, as informações sobre eventos passados são um valor medido. Portanto, recomenda-se que o valor da indefinição seja 0. Mas pode haver casos em que isso não aconteça, e por isso esse tipo de evento pode ter valores de indefinição diferentes de 0. Se a indefinição de uma atualização não for 0, isso significará que a atualização é uma previsão aproximada de uma viagem ainda não concluída, que a medição não é precisa ou que a atualização foi uma previsão para um evento passado que não foi confirmada após o evento ter ocorrido.

A atualização pode descrever uma viagem que já foi concluída. Para isso, basta fornecer detalhes sobre a última parada dela. Se a hora da chegada na última parada estiver no passado, o cliente concluirá que a viagem inteira está no passado. Também é possível indicar atualizações para paradas anteriores, embora isso não tenha qualquer efeito. Essa opção é mais relevante no caso de uma viagem que tenha sido concluída antes do horário previsto, mas que, de acordo com a programação, ainda está sendo realizada. Remover as atualizações dessa viagem pode fazer com que o cliente entenda que a viagem ainda está em curso. O provedor do feed pode limpar atualizações passadas, mas não é obrigado a isso. O caso acima é apenas um exemplo em que isso seria útil.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
trip TripDescriptor Obrigatório Um A viagem a que esta mensagem se aplica. Pode haver no máximo uma entidade TripUpdate para cada instância de viagem real. A ausência dessa entidade indica que não há qualquer informação sobre previsão disponível. Isso não significa que a viagem está prosseguindo de acordo com a programação.
vehicle VehicleDescriptor Opcional Um Informações adicionais sobre o veículo que está fazendo esta viagem.
stop_time_update StopTimeUpdate Obrigatório sob certas condições Muitos Atualizações de StopTimes da viagem. Tanto de viagens futuras (previsões) quanto, em alguns casos, de viagens passadas (já concluídas). As atualizações precisam ser classificadas por stop_sequence e se aplicam a todas as paradas seguintes da viagem, até o próximo stop_time_update especificado. É necessário fornecer pelo menos um stop_time_update para a viagem, a menos que trip.schedule_relationship seja CANCELED. Se a viagem for cancelada, não será necessário fornecer nenhum stop_time_update.
timestamp uint64 Opcional Um Momento em que o progresso em tempo real do veículo foi medido. No horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC).
delay int32 Opcional Um Desvio atual entre a programação e a viagem. O atraso precisa ser especificado apenas quando é fornecida uma previsão em relação a uma programação existente na GTFS.
O valor (em segundos) pode ser positivo, o que indica que o veículo está atrasado, ou negativo, o que indica que o veículo está adiantado. Um atraso igual a 0 significa que o veículo está no horário.
As informações em uma StopTimeUpdate têm precedência sobre os valores do atraso no nível da viagem, que só é propagado até a próxima parada com um valor StopTimeUpdate especificado.
Recomenda-se que os provedores de feed forneçam um valor de TripUpdate.timestamp para indicar quando o valor de atraso foi atualizado pela última vez. Dessa forma, será possível saber o momento da última atualização.
Atenção: este campo ainda éexperimental e está sujeito a alterações. Ele pode ser formalmente incluído no futuro.

message StopTimeEvent

Informações de tempo para um único evento previsto (chegada ou partida). Os horários consistem em atraso e/ou horário estimado e indefinição.

  • O campo delay precisa ser usado quando é fornecida uma previsão relativa a uma programação existente na GTFS.
  • Um valor para time precisa ser fornecido, haja ou não uma programação prevista. Se time e delay forem especificados, time terá precedência, embora normalmente seja igual ao horário programado na GTFS + o valor de delay, quando fornecido para uma viagem programada.

A indefinição se aplica a time e delay. Ela especifica aproximadamente o erro esperado em atraso real (no entanto, ainda não definimos seu significado estatístico preciso). A indefinição pode ter valor 0, por exemplo, no caso de trens conduzidos sob o controle automatizado de horário.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
delay int32 Obrigatório sob certas condições Um O atraso (em segundos) pode ser positivo, o que significa que o veículo está atrasado, ou negativo, o que significa que o veículo está adiantado. Um atraso igual a 0 significa que o veículo está no horário. Valores para delay ou time precisam ser fornecidos em um StopTimeEvent. Não é possível deixar ambos os campos vazios.
time int64 Obrigatório sob certas condições Um Evento como horário absoluto. No horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). Valores para delay ou time precisam ser fornecidos em um StopTimeEvent. Não é possível deixar ambos os campos vazios.
uncertainty int32 Opcional Um Se a indefinição é omitida, ela é interpretada como desconhecida. Para especificar uma previsão totalmente precisa, defina a indefinição como 0.

message StopTimeUpdate

Atualização em tempo real para eventos de chegada e/ou partida de uma parada específica em uma viagem. Veja mais informações sobre atualizações dos horários de parada nos tópicos sobre o TripDescriptor e as entidades de atualizações de viagem.

As atualizações podem ser fornecidas para eventos passados e futuros. O produtor pode remover eventos passados, mas não é obrigado a isso. A atualização está vinculada a uma parada específica por meio de stop_sequence ou stop_id, portanto, um desses campos precisa ser definido. Se o mesmo stop_id for visitado mais de uma vez em uma viagem, será necessário fornecer stop_sequence em todo StopTimeUpdate para esse stop_id nessa viagem.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
stop_sequence uint32 Obrigatório sob certas condições Um Precisa ser igual ao valor em stop_times.txt no Feed GTFS correspondente. É necessário especificar stop_sequence ou stop_id no StopTimeUpdate. Não é possível deixar ambos os campos vazios. stop_sequence é obrigatório em viagens que visitam o mesmo stop_id mais de uma vez (por exemplo, uma linha circular) para deixar claro a que parada a previsão se refere.
stop_id string Obrigatório sob certas condições Um Deve ser o mesmo que em stops.txt no Feed GTFS correspondente. É necessário especificar stop_sequence ou stop_id no StopTimeUpdate. Não é possível deixar ambos os campos vazios.
arrival StopTimeEvent Obrigatório sob certas condições Um Se schedule_relationship estiver vazio ou definido como SCHEDULED, será necessário fornecer um valor para arrival ou departure em uma StopTimeUpdate. Não é possível deixar ambos os campos vazios, a menos que schedule_relationship esteja definido como SKIPPED. Se schedule_relationship estiver definido como NO_DATA, arrival e departure precisam estar vazios.
departure StopTimeEvent Obrigatório sob certas condições Um Se schedule_relationship estiver vazio ou definido como SCHEDULED, será necessário fornecer um valor para arrival ou departure em uma StopTimeUpdate. Não é possível deixar ambos os campos vazios, a menos que schedule_relationship esteja definido como SKIPPED. Se schedule_relationship estiver definido como NO_DATA, arrival e departure precisam estar vazios.
schedule_relationship ScheduleRelationship Opcional Um A relação padrão é definida como SCHEDULED.

enum ScheduleRelationship

A relação entre este StopTime e a programação estática.

Valores

Valor Comentário
SCHEDULED O veículo prossegue de acordo com a programação estática de paradas, embora não necessariamente de acordo com os horários da programação. Este é o comportamento padrão. É necessário informar pelo menos arrival ou departure.
SKIPPED A parada é ignorada, isto é, o veículo não parará nesta parada. Os campos arrival e departure são opcionais.
NO_DATA Nenhum dado é fornecido para esta parada. Indica que nenhuma informação em tempo real está disponível. Quando definido, NO_DATA é propagado para as paradas subsequentes. Portanto, está é a maneira recomendada de especificar a partir de qual parada você não tem informações em tempo real. Quando NO_DATA é definido, não devem ser fornecidos arrival ou departure.

message VehiclePosition

Informações em tempo real sobre a posição de um veículo específico.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
trip TripDescriptor Opcional Um A viagem que este veículo está fazendo. Pode ser vazio ou parcial se o veículo não pode ser identificado em determinada instância de uma viagem.
vehicle VehicleDescriptor Opcional Um Informações adicionais sobre o veículo que está fazendo esta viagem. Cada entrada deve ter um código de veículo exclusivo.
position Position Opcional Um Posição atual deste veículo.
current_stop_sequence uint32 Opcional Um O índice de sequência da parada atual. O significado de current_stop_sequence (isto é, a parada a que se refere) é determinado por current_status. Se current_status não está definido, IN_TRANSIT_TO é atribuído.
stop_id string Opcional Um Identifica a parada atual. O valor precisa ser o mesmo que em stops.txt no Feed GTFS correspondente.
current_status VehicleStopStatus Opcional Um O status exato do veículo em relação à parada atual. Ignorado se current_stop_sequence não está definido.
timestamp uint64 Opcional Um Momento em que a posição do veículo foi medida. No horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC).
congestion_level CongestionLevel Opcional Um
occupancy_status OccupancyStatus Opcional Um Grau de ocupação do veículo.
Atenção: este campo ainda é experimental e está sujeito a alterações. Ele pode ser formalmente incluído no futuro.

enum VehicleStopStatus

Valores

Valor Comentário
INCOMING_AT O veículo está prestes a chegar na parada (na exibição de uma parada, o símbolo do veículo, em geral, pisca).
STOPPED_AT O veículo está na parada.
IN_TRANSIT_TO O veículo saiu da parada anterior e está em trânsito.

enum CongestionLevel

Nível de congestionamento que está afetando este veículo.

Valores

Valor
UNKNOWN_CONGESTION_LEVEL
RUNNING_SMOOTHLY
STOP_AND_GO
CONGESTION
SEVERE_CONGESTION

enum OccupancyStatus

O grau de ocupação do veículo.

Cuidado: este campo ainda é experimental e está sujeito a alterações. Ele pode ser formalmente incluído no futuro.

Valores

Valor Comentário
EMPTY O veículo é considerado razoavelmente vazio, com poucos ou nenhum passageiro a bordo, mas ainda aceita passageiros.
MANY_SEATS_AVAILABLE O veículo tem um grande percentual de assentos disponíveis. O percentual de assentos livres considerado grande o suficiente para entrar nesta categoria é determinado pelo produtor.
FEW_SEATS_AVAILABLE O veículo tem um pequeno percentual de assentos disponíveis. O percentual de assentos livres considerado pequeno o suficiente para entrar nesta categoria é determinado pelo produtor.
STANDING_ROOM_ONLY No momento, o veículo pode acomodar apenas passageiros em pé.
CRUSHED_STANDING_ROOM_ONLY No momento, o veículo pode acomodar apenas passageiros em pé com pouco espaço para eles.
FULL O veículo é considerado razoavelmente cheio, mas talvez ainda aceite o embarque de passageiros.
NOT_ACCEPTING_PASSENGERS O veículo não aceitar passageiros.

message Alert

Um alerta, indicando algum tipo de incidente na rede de transporte público.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
active_period TimeRange Opcional Muitos Horário em que o alerta deve ser mostrado ao usuário. Se não for definido, o alerta será mostrado, desde que apareça no feed. Se forem fornecidos vários intervalos, o alerta será mostrado durante todos eles.
informed_entity EntitySelector Obrigatório Muitos Entidades cujos usuários devemos notificar deste alerta. É necessário fornecer pelo menos um valor para informed_entity.
cause Cause Opcional Um
effect Effect Opcional Um
url TranslatedString Opcional Um O URL que fornece informações adicionais sobre o alerta.
header_text TranslatedString Obrigatório Um Cabeçalho do alerta. Esta string de texto simples será destacada, por exemplo, em negrito.
description_text TranslatedString Obrigatório Um Descrição do alerta. Esta string de texto simples será formatada como o corpo do alerta (ou mostrada em uma solicitação de "expansão" explícita do usuário). As informações da descrição devem complementar as informações do cabeçalho.

enum Cause

Causa deste alerta.

Valores

Valor
UNKNOWN_CAUSE
OTHER_CAUSE
TECHNICAL_PROBLEM
STRIKE
DEMONSTRATION
ACCIDENT
HOLIDAY
CLIMA
MAINTENANCE
CONSTRUCTION
POLICE_ACTIVITY
MEDICAL_EMERGENCY

enum Effect

O efeito deste problema sobre a entidade afetada.

Valores

Valor
NO_SERVICE
REDUCED_SERVICE
SIGNIFICANT_DELAYS
DETOUR
ADDITIONAL_SERVICE
MODIFIED_SERVICE
OTHER_EFFECT
UNKNOWN_EFFECT
STOP_MOVED

message TimeRange

Intervalo de tempo. O intervalo é considerado ativo no tempo t se t é maior ou igual ao horário de início e menor que o horário de término.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
start uint64 Obrigatório sob certas condições Um Horário de início, no horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). Se não definido, o intervalo começa na infinidade negativa. Se TimeRange for fornecido, será necessário fornecer um valor para start ou end. Não é possível deixar ambos os campos vazios.
end uint64 Obrigatório sob certas condições Um Horário de término, no horário POSIX (isto é, o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC). Se não definido, o intervalo termina na infinidade positiva. Se TimeRange for fornecido, será necessário fornecer um valor para start ou end. Não é possível deixar ambos os campos vazios.

message Position

A posição geográfica de um veículo.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
latitude float Obrigatório Um Graus ao norte no sistema de coordenadas WGS84.
longitude float Obrigatório Um Graus ao leste no sistema de coordenadas WGS84.
bearing float Opcional Um Direção, em graus, no sentido horário, a partir do norte verdadeiro, isto é, 0 é norte, e 90 é leste. Pode ser a direção da bússola ou a direção no sentido da próxima parada ou de um local intermediário. Não deve ser deduzido da sequência de posições anteriores, que os clientes podem calcular a partir de dados anteriores.
odometer double Opcional Um Valor do odômetro, em metros.
speed float Opcional Um Velocidade no momento, medida pelo veículo, em metros por segundo.

message TripDescriptor

Descritor que identifica uma instância única de uma viagem da GTFS.

Na maioria das vezes, é possível especificar uma instância única de viagem usando apenas o campo "trip_id". No entanto, os seguintes casos exigem informações adicionais para fazer isso:

  • Se a viagem estiver definida no arquivo frequencies.txt, além do "trip_id", será necessário usar também os campos "start_date" e "start_time".
  • Se a viagem durar mais de 24 horas ou atrasar entrando em conflito com uma viagem programada para o dia seguinte, você precisará fornecer "start_date" e "trip_id".
  • Se não for possível fornecer o campo "trip_id", informe "route_id", "route_id", "start_date" e "start_time".

Em todos os casos, se você incluir o "route_id" e o "trip_id", o "route_id" precisará corresponder ao campo "route_id" atribuído à viagem especificada no arquivo trip.txt da GTFS.

O "trip_id" não pode ser usado sozinho ou com outros campos TripDescriptor para identificar várias instâncias de viagem. Se o TripDescriptor não definir nenhuma instância de viagem ou determinar várias, será considerado um erro. A entidade com o TripDescriptor incorreto poderá ser descartada pelos consumidores.

Por exemplo, quando uma viagem é definida no frequencies.txt da GTFS com "exact_times=0", um TripDescriptor nunca poderá especificar o "trip_id" sozinho. Isso ocorre porque, ao resolver uma instância única de viagem que começa em um horário específico do dia, você também precisa fornecer o "start_time".

Se o "trip_id" não for conhecido, os IDs da sequência de estações em TripUpdate não serão suficientes, e também será necessário fornecer os campos "stop_id". Além disso, você precisa informar os horários absolutos de chegada e partida.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
trip_id string Obrigatório sob certas condições Um O "trip_id" do Feed GTFS a que este seletor se refere. O "trip_id" é obrigatório dependendo do tipo de viagem:
Viagens sem base em frequência: o campo "trip_id" sozinho é suficiente para identificá-las de forma exclusiva. Esse tipo de viagem não é definido no arquivo frequencies.txt da GTFS.
Viagens com base em frequência: os campos "trip_id", "start_time" e "start_date" são obrigatórios. Esse tipo de viagem é definido no arquivo frequencies.txt da GTFS.
Viagens com base em cronograma: o campo "trip_id" só poderá ser omitido se for possível identificar a viagem exclusivamente combinando os campos "route_id", "direction_id", "start_time" e "start_date". Esse tipo de viagem não é definido no arquivo frequencies.txt da GTFS.
route_id string Obrigatório sob certas condições Um O "route_id" do Feed GTFS a que este seletor se refere. Se o "trip_id" for omitido, será necessário definir "route_id", "direction_id", "start_time", e "schedule_relationship=SCHEDULED" para identificar uma instância de viagem.
direction_id uint32 Obrigatório sob certas condições Um O "direction_id" do arquivo trips.txt da GTFS, que indica a direção da viagem. Se o "trip_id" for omitido, será necessário fornecer o "direction_id".
Atenção: esse campo ainda é experimental e está sujeito a alterações. Ele poderá ser formalmente incluído no futuro.
start_time string Obrigatório sob certas condições Um O horário inicialmente programado para o início desta instância de viagem. O tipo de campo "Time" define o formato, por exemplo, 11:15:35 ou 25:15:35. O campo "start_time" é obrigatório dependendo do tipo da viagem:
O "trip_id" corresponde a uma viagem sem base em frequência: "start_time" precisa ser omitido ou ser igual ao valor do "departure_time" no arquivo stop_times.txt do Feed GTFS.
O "trip_id" corresponde a uma viagem com base em frequência: o "start_time" é sempre obrigatório e precisa ser especificado para as atualizações de viagem e posições de veículos. Esse tipo de viagem é definido no arquivo frequencies.txt da GTFS.
Se a viagem com base em frequência corresponder a um registro "exact_times=1" da GTFS: o campo "start_time" precisa ser algum múltiplo de "headway_secs" (incluindo "zero"), depois do "start_time" do arquivo frequencies.txt para o período correspondente.
Se a viagem com base em frequência corresponder a um registro "exact_times=0" da GTFS: o "start_time" poderá ser arbitrário e, a princípio, será a primeira partida da viagem. Depois de estabelecido, "o start_time" da viagem com base na frequência "exact_times=0" será considerado imutável, mesmo que o primeiro horário de partida seja alterado. As mudanças de horário subsequentes serão refletidas em uma mensagem StopTimeUpdate.
O "trip_id" foi omitido: é preciso fornecer o "start_time".
start_date string Obrigatório sob certas condições Um A data de início desta instância de viagem no formato AAAAMMDD. O "start_date" é obrigatório dependendo do tipo de viagem:
Viagens programadas: é preciso fornecer o "start_date". Isso serve para distinguir viagens que estão atrasadas e entrarão em conflito com alguma outra programada para o dia seguinte. Por exemplo, suponha que um trem parte às 8h e às 20h todos os dias. Se ele atrasar 12 horas, haverá duas viagens distintas programadas para o mesmo horário.
Observação: esse campo é opcional para viagens programadas em que não há possibilidade de haver conflitos. Por exemplo, se o serviço é oferecido a cada hora e um veículo atrasa uma hora, mas não influencia a programação.
Viagens com base em frequência: é preciso fornecer o "start_date". As viagens com base em frequência são definidas no arquivo frequencies.txt da GTFS, o que não acontece com aquelas que são programadas.
O "trip_id" foi omitido: é necessário fornecer o "start_date".
schedule_relationship ScheduleRelationship Opcional Um A relação entre esta viagem e a programação estática. Se o TripDescriptor for fornecido em um EntitySelector de alerta, o campo "schedule_relationship" será ignorado pelos consumidores ao identificar a instância de viagem correspondente.

enum ScheduleRelationship

A relação entre esta viagem e a programação estática. Se uma viagem é feita de acordo com uma programação temporária não refletida na GTFS, ela não deve ser marcada como SCHEDULED, e sim como ADDED.

Valores

Valor Comentário
SCHEDULED A viagem está prosseguindo de acordo com a programação GTFS ou está próxima o suficiente da viagem programada para ser associada a ela.
ADDED Uma viagem adicional que foi incluída em uma programação em execução. Por exemplo, para substituir um veículo quebrado ou para responder a uma carga súbita de passageiros.
UNSCHEDULED Uma viagem que está sendo feita sem nenhuma programação associada. Este valor é usado para identificar viagens definidas no arquivo frequencies.txt da GTFS com exact_times=0. Não deve ser usado para descrever viagens não definidas no arquivo frequencies.txt da GTFS ou viagens no arquivo frequencies.txt da GTFS com exact_times=1.
CANCELED Uma viagem que existia na programação, mas foi removida.

message VehicleDescriptor

Informações de identificação do veículo que está executando a viagem.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
id string Opcional Um Identificação do sistema interno do veículo. Deve ser exclusivo para cada veículo e é usado para rastreá-lo pelo sistema à medida que ele prossegue. Este código não deve ficar visível ao usuário final. Nesse caso, use o campo label.
label string Opcional Um Marcador que deve ser mostrado ao usuário para ajudar na identificação do veículo correto.
license_plate string Opcional Um A placa do veículo.

message EntitySelector

Um seletor de uma entidade em um Feed GTFS. Os valores dos campos devem corresponder aos campos adequados no Feed GTFS. É necessário fornecer pelo menos um especificador. Se forem fornecidos vários especificadores, a correspondência precisará ser aplicável a todos eles.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
agency_id string Obrigatório sob certas condições Um É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios.
route_id string Obrigatório sob certas condições Um É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios.
route_type int32 Obrigatório sob certas condições Um É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios.
trip TripDescriptor Obrigatório sob certas condições Um É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios.
stop_id string Obrigatório sob certas condições Um É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios.

message TranslatedString

Uma mensagem internacionalizada contendo versões por idioma de um snippet de texto ou um URL. Uma das strings de uma mensagem será selecionada. A resolução prossegue da seguinte maneira: se o idioma da IU corresponde ao código de idioma de uma tradução, é selecionada a primeira tradução correspondente. Se um idioma padrão de IU (por exemplo, inglês) equivale ao código de idioma de uma tradução, a primeira tradução correspondente é selecionada. Se uma tradução apresenta um código de idioma não especificado, essa tradução é selecionada.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
translation Translation Obrigatório Muitos Pelo menos uma tradução precisa ser fornecida.

message Translation

Uma string localizada mapeada para um idioma.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
text string Obrigatório Um Uma string UTF-8 contendo a mensagem.
language string Obrigatório sob certas condições Um Código de idioma BCP-47. Pode ser omitido se o idioma é desconhecido ou se não foi feita qualquer internacionalização para o feed. Só é possível usar uma tag de idioma não especificado para uma tradução. Se houver mais de uma tradução, será necessário informar o idioma.