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 fornecidos em determinado campo. Estes são os possíveis valores:

Consulte sempre as colunas Obrigatório e Descrição para saber quando um campo é obrigatório, necessário em determinadas 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 experimental 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

O 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 IDs 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 é a 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 timestamp de um servidor de horário. É completamente aceitável usar servidores Stratum 3 ou até mesmo de camadas mais baixas, já que diferenças de horário de alguns segundos podem ser toleradas.

enum Incrementality

Determina se a busca atual é incremental.

  • FULL_DATASET: esta atualização de feed 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 é aceito, e o comportamento não é especificado para feeds que o usam. 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, será preciso preencher trip_update, vehicle ou alert.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
id string Obrigatório Um Identificador exclusivo do feed para esta entidade. Os IDs são usados apenas para fornecer suporte a incrementabilidade. Use seletores explícitos para especificar as entidades reais indicadas pelo feed. Confira EntitySelector abaixo para mais informações.
is_deleted bool Opcional Um Define se esta entidade deve ou não ser excluída. Precisa ser indicado somente para feeds com Incrementality igual a DIFFERENTIAL. Este campo NÃO deve ser fornecido para 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. É preciso informar pelo menos um dos campos trip_update, vehicle ou alert. Não é possível deixar todos eles vazios.
vehicle VehiclePosition Obrigatório sob certas condições Um Dados em tempo real sobre a posição de um veículo. É preciso informar pelo menos um dos campos trip_update, vehicle ou alert. Não é possível deixar todos eles vazios.
alert Alert Obrigatório sob certas condições Um Dados sobre o alerta em tempo real. É preciso informar pelo menos um dos campos trip_update, vehicle ou alert. Não é possível deixar todos eles 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, uma 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, em casos em que isso não aconteça, esse tipo de evento pode ter valores de indefinição diferentes de 0. Se o nível de incerteza de uma atualização não for 0, significa que ela é uma previsão aproximada de uma viagem que ainda não foi 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 vai concluir que a viagem inteira está no passado. Também é possível indicar atualizações para paradas anteriores, embora isso não tenha 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 refere. 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á informações disponíveis sobre a previsão. Isso não significa que a viagem está prosseguindo de acordo com a programação.
vehicle VehicleDescriptor Opcional Um Outras informações 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 referem a todas as paradas subsequentes até a próxima stop_time_update especificada. Pelo menos uma stop_time_update precisa ser fornecida, a menos que trip.schedule_relationship seja CANCELED. Se a viagem for cancelada, não será necessário enviar stop_time_updates.
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 delay precisa ser especificado apenas quando é fornecida uma previsão em relação a uma programação existente na GTFS.
O valor delay (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 delay igual a 0 significa que o veículo está no horário.
As informações de atraso em StopTimeUpdates 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 delay especificado.
Recomendamos que os provedores de feed enviem um valor de TripUpdate.timestamp para indicar quando o valor de delay foi atualizado pela última vez. Dessa forma, é possível saber o momento da última atualização.
Atenção: este campo ainda é experimental e está sujeito a mudanças. 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 atual na GTFS.
  • É necessário informar time, independentemente de haver uma programação prevista. Se time e delay forem especificados, time terá precedência (embora normalmente, time, se fornecido para uma viagem programada, seja igual ao horário programado na GTFS + valor do atraso).

Indefinição se refere a horário e atraso. 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 campo delay (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 delay igual a 0 significa que o veículo está no horário. É preciso fornecer delay ou time 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). É preciso fornecer delay ou time 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. Consulte também a discussão geral sobre atualizações dos horários de parada na documentação do TripDescriptor e das 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 é obrigatório. A atualização é vinculada a uma parada específica com stop_sequence ou stop_id. Portanto, um desses campos precisa ser definido. Se o mesmo stop_id é visitado mais de uma vez, stop_sequence deve ser fornecida em todas as StopTimeUpdates do stop_id dessa viagem.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
stop_sequence uint32 Obrigatório sob certas condições Um Precisa ser o mesmo que no stop_times.txt do Feed GTFS correspondente. É preciso informar stop_sequence ou stop_id em uma 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 Precisa ser o mesmo que no stops.txt do Feed GTFS correspondente. É preciso informar stop_sequence ou stop_id em uma StopTimeUpdate. Não é possível deixar ambos os campos vazios.
arrival StopTimeEvent Obrigatório sob certas condições Um Se a schedule_relationship estiver vazia ou SCHEDULED, será necessário fornecer arrival ou departure em uma StopTimeUpdate. Não é possível deixar ambos os campos vazios. arrival e departure poderão ficar vazios quando schedule_relationship for SKIPPED. Se a schedule_relationship for NO_DATA, arrival e departure precisarão estar vazios.
departure StopTimeEvent Obrigatório sob certas condições Um Se a schedule_relationship estiver vazia ou SCHEDULED, será necessário fornecer arrival ou departure em uma StopTimeUpdate. Não é possível deixar ambos os campos vazios. arrival e departure poderão ficar vazios quando schedule_relationship for SKIPPED. Se a schedule_relationship for NO_DATA, arrival e departure precisarão estar vazios.
schedule_relationship ScheduleRelationship Opcional Um A relação padrão é 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. É preciso fornecer pelo menos arrival ou departure.
SKIPPED A parada é ignorada, isto é, o veículo não irá parar nela. 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, esta é 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 é necessário fornecer arrival nem 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. Poderá ser vazio ou parcial se não for possível identificar o veículo em determinada instância de uma viagem.
vehicle VehicleDescriptor Opcional Um Outras informações sobre o veículo que está fazendo esta viagem. Cada entrada deve ter um ID 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 (ou seja, a parada a que se refere) é determinado por current_status. Se o atributo current_status estiver ausente, IN_TRANSIT_TO será usado.
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. Será ignorado se current_stop_sequence estiver ausente.
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 à parada (geralmente, o símbolo do veículo pisca na exibição de uma parada).
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 mudanças. 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 embarques.
MANY_SEATS_AVAILABLE O veículo ou transporte tem um grande percentual de assentos disponíveis. O produtor determina se o percentual de assentos livres é considerado grande o suficiente para entrar nesta categoria.
FEW_SEATS_AVAILABLE O veículo ou transporte tem um pequeno percentual de assentos disponíveis. O produtor determina se o percentual de assentos livres é considerado pequeno o suficiente para entrar nesta categoria.
STANDING_ROOM_ONLY No momento, o veículo ou transporte pode acomodar apenas passageiros em pé.
CRUSHED_STANDING_ROOM_ONLY No momento, o veículo ou transporte pode acomodar apenas passageiros em pé com pouco espaço para eles.
FULL O veículo é considerado cheio, mas talvez o embarque de passageiros ainda seja possível.
NOT_ACCEPTING_PASSENGERS O veículo ou transporte não está recebendo mais passageiros. O veículo ou transporte geralmente aceita o embarque de passageiros.
NO_DATA_AVAILABLE O veículo ou transporte não tem dados de ocupação disponíveis no momento.
NOT_BOARDABLE Não é possível embarcar no veículo ou transporte, que nunca aceita passageiros. Útil para veículos ou transportes especiais (motor, veículo de manutenção etc.).

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 serão notificados sobre esse alerta. É necessário fornecer pelo menos um informed_entity.
cause Cause Opcional Um
effect Effect Opcional Um
url TranslatedString Opcional Um O URL que dá mais informações 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
WEATHER
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

Um intervalo de tempo. O intervalo é considerado ativo no tempo t se t é maior ou igual ao horário start e menor que o horário end.

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 um TimeRange for fornecido, será necessário indicar 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 um TimeRange for fornecido, será necessário indicar 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 a 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. Esse valor não deve ser deduzido da sequência de posições anteriores, que os clientes podem calcular com base em dados precedentes.
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.

Para especificar uma única instância de viagem, um trip_id normalmente funciona bem. No entanto, os seguintes casos exigem mais informações para fazer isso:

  • Se a viagem for definida no frequencies.txt, start_date e start_time são obrigatórios, além do trip_id.
  • Se a viagem durar mais de 24 horas ou atrasar entrando em conflito com uma viagem programada no dia seguinte, forneça start_date e trip_id.
  • Se o campo trip_id não puder ser indicado, será necessário fornecer os campos route_id, direction_id, start_date e start_time.

Em todos os casos, se route_id e trip_id forem preenchidos, o route_id precisará corresponder ao campo route_id atribuído à viagem determinada no arquivo trips.txt da GTFS.

O campo 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 pode especificar um trip_id. 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 informar o start_time.

Se o trip_id não for conhecido, os IDs de sequência da estação em TripUpdate não serão suficientes, e os campos stop_id também precisarão ser indicados. 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 frequência específica: o campo trip_id é suficiente para identificar essas viagens 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 frequencies.txt da GTFS.
Viagens com base em programação: o campo trip_id só poderá ser omitido se for possível identificar a viagem de maneira exclusiva por uma combinação dos 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 trip_id for omitido, será necessário fornecer 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 do Feed GTFS que indica a direção da viagem. Se trip_id for omitido, será necessário fornecer o direction_id.
Atenção: este campo ainda é experimental e está sujeito a mudanças. 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 de viagem:
O trip_id corresponde a uma viagem sem frequência definida: o campo start_time precisa ser omitido ou igual ao valor de departure_time no arquivo stop_times.txt do Feed GTFS.
O trip_id corresponde a uma viagem com base na frequência: o start_time é sempre obrigatório e precisa ser especificado para atualizações de viagem e posições de veículos. Esse tipo de viagem é definido no 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 vai precisar ser múltiplo de headway_secs, incluindo zero, depois do start_time do frequencies.txt pelo 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 expectativa inicial é que seja a primeira partida da viagem. Depois de estabelecido, o start_time dessa viagem de exact_times=0 com base em frequência será considerado imutável, mesmo que o horário da primeira partida mude. As mudanças de horário subsequentes serão refletidas em uma mensagem StopTimeUpdate.
O trip_id é omitido: o start_time precisa ser indicado.
start_date string Obrigatório sob certas condições Um A data de início desta instância de viagem no formato YYYYMMDD. A start_date é obrigatória dependendo do tipo de viagem:
| Viagens programadas: a start_date precisa ser fornecida. 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: a start_date precisa ser fornecida. Esse tipo de viagem é definido no arquivo frequencies.txt da GTFS, mas as programadas não.
Se o trip_id for omitido: a start_date terá que ser informada.
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 Alert, o campo schedule_relationship será ignorado pelos consumidores quando os usuários identificarem 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 da GTFS ou está próxima o suficiente da viagem programada para ser associada a ela.
ADDED Uma viagem extra que foi incluída em uma programação em execução. Por exemplo, para substituir um veículo quebrado ou responder a um aumento repentino de passageiros.
UNSCHEDULED Uma viagem em execução sem programação associada. Esse valor é usado para identificar viagens definidas no frequencies.txt da GTFS com exact_times = 0. Ele não pode ser usado para descrever viagens não definidas no frequencies.txt ou em viagens 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. Esse ID não deve ficar visível ao usuário final. Nesse caso, utilize 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

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 mais de um for fornecido, eles deverão ser interpretados como unidos pelo operador lógico AND. Além disso, a combinação de especificadores precisa ser equivalente às informações correspondentes no Feed GTFS. Ou seja, para ser usado em uma entidade na GTFS, um alerta precisa corresponder a todos os campos EntitySelector fornecidos. Por exemplo, um EntitySelector que inclui os campos route_id: "5" e route_type: "3" se refere somente ao ônibus route_id: "5". Ele não se refere a outros trajetos de route_type: "3". Se um produtor quiser usar um alerta em route_id: "5" e em route_type: "3", ele precisa fornecer dois campos EntitySelector diferentes, um fazendo referência a route_id: "5" e outro a route_type: "3".

É necessário fornecer pelo menos um especificador. Não é possível deixar todos os campos de EntitySelector vazios.

Campos

Nome do campo Tipo Obrigatório Cardinalidade Descrição
agency_id string Obrigatório sob certas condições Um O agency_id do Feed GTFS a que este seletor se refere.
route_id string Obrigatório sob certas condições Um O route_id da GTFS a que este seletor se refere. Se direction_id for fornecido, route_id também vai precisar ser.
route_type int32 Obrigatório sob certas condições Um O route_type da GTFS a que este seletor se refere.
direction_id uint32 Obrigatório sob certas condições Um O direction_id do arquivo trips.txt do Feed GTFS, usado para selecionar todas as viagens na rota de um trajeto, especificado por route_id. Quando direction_id é fornecido, também é necessário informar route_id.
trip TripDescriptor Obrigatório sob certas condições Um A instância de viagem da GTFS a que este seletor se refere. Esse TripDescriptor precisa ser resolvido para uma única instância de viagem nos dados da GTFS. Por exemplo, um produtor não pode fornecer apenas um trip_id para exact_times=0 viagens. Se o campo ScheduleRelationship for preenchido neste TripDescriptor, ele será ignorado pelos consumidores quando tentarem identificar a viagem da GTFS.
stop_id string Obrigatório sob certas condições Um O stop_id do Feed GTFS a que este seletor se refere.

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 é feita assim: se o idioma da IU corresponde ao código de idioma de uma tradução, é escolhida a primeira tradução associada. 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, ela é 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.