Data Dictionary

Field Name Name Type Description Fixed Values
header Feed Header FeedHeader() Metadata about a feed, included in feed messages.
entity Feed Entity FeedEntity() A definition (or update) of an entity in the transit feed. If the entity is not being deleted, exactly one of trip_update, vehicle, and alert fields should be populated. This field can be repeated as many times as needed.
header.gtfs_realtime_version GTFS Realtime Version STRING() Version of the feed specification. The current version is 2.0.
header.incrementality Incrementality ENUM()

Determines whether the current fetch is incremental. Options include:

-FULL_DATASET: this feed update will overwrite all preceding realtime information for the feed. Thus this update is expected to provide a full snapshot of all known realtime information.

-DIFFERENTIAL: currently, this mode is unsupported and behavior is unspecified for feeds that use this mode. There are discussions on the GTFS Realtime mailing list around fully specifying the behavior of DIFFERENTIAL mode and the documentation will be updated when those discussions are finalized.

FULL_DATASET, DIFFERENTIAL
header.timestamp Feed Header Timestamp int64() This timestamp identifies the moment when the content of this feed has been created (in server time). In POSIX time (i.e., number of seconds since January 1st 1970 00:00:00 UTC). To avoid time skew between systems producing and consuming realtime information it is strongly advised to derive timestamp from a time server. It is completely acceptable to use Stratum 3 or even lower strata servers since time differences up to a couple of seconds are tolerable.
entity.id Feed Entity ID STRING() Feed-unique identifier for this entity. The ids are used only to provide incrementality support. The actual entities referenced by the feed must be specified by explicit selectors (see EntitySelector below for more info).
entity.is_deleted Feed Entity Is Deleted BOOLEAN() Whether this entity is to be deleted. Should be provided only for feeds with Incrementality of DIFFERENTIAL - this field should NOT be provided for feeds with Incrementality of FULL_DATASET.
entity.trip_update Feed Entity Trip Update TripUpdate() Data about the realtime departure delays of a trip. At least one of the fields trip_update, vehicle, or alert must be provided - all these fields cannot be empty.
trip_update.trip Trip Update Trip TripDescriptor() The Trip that this message applies to. There can be at most one TripUpdate entity for each actual trip instance. If there is none, that means there is no prediction information available. It does not mean that the trip is progressing according to schedule.
trip_update.vehicle Trip Update Vehicle VehicleDescriptor() Additional information on the vehicle that is serving this trip.
trip_update.stop_time_update Stop Time Update StopTimeUpdate() Updates to StopTimes for the trip (both future, i.e., predictions, and in some cases, past ones, i.e., those that already happened). The updates must be sorted by stop_sequence, and apply for all the following stops of the trip up to the next specified stop_time_update. At least one stop_time_update must be provided for the trip unless the trip.schedule_relationship is CANCELED - if the trip is canceled, no stop_time_updates need to be provided. This field can be repeated as many times as needed.
trip_update.timestamp Trip Update Timestamp int64() Moment at which the vehicle's real-time progress was measured. In POSIX time (i.e., the number of seconds since January 1st 1970 00:00:00 UTC).
TripDescriptor.trip_id Trip Update Trip ID STRING()

The trip_id from the GTFS feed that this selector refers to. Whether trip_id is required depends on the type of trip:

- Non-frequency-based trips: The trip_id field alone is enough to uniquely identify these trips. Note that non-frequency-based trips aren't defined in GTFS frequencies.txt.

- Frequency-based trips: The trip_id, start_time, and start_date fields are all required. Frequency-based trips are defined in GTFS frequencies.txt.

- Schedule-based trips: The trip_id field can be omitted only if the trip can be uniquely identified by a combination of the provided route_id, direction_id, start_time, and start_date fields. Note that scheduled-based trips aren't defined in GTFS frequencies.txt.

TripDescriptor.route_id Trip Update Trip Route ID STRING() The route_id from the GTFS feed that this selector refers to. If trip_id is omitted, then route_id, direction_id, start_time, and schedule_relationship=SCHEDULED must all be set to identify a trip instance.
TripDescriptor.direction_id Trip Update Trip Direction ID UINT32()

The direction_id from the GTFS feed trips.txt file, which indicates the direction of travel. If trip_id is omitted, direction_id must be provided.

Caution: This field is still experimental and subject to change. It might be formally adopted in the future.

TripDescriptor.start_time Trip Update Trip Start Time STRING()

The initially scheduled start time of this trip instance. The field type Time defines the format of this field, for example 11:15:35 or 25:15:35. Whether the start_time field is required depends on the type of trip:

• The trip_id corresponds to a non-frequency-based trip: The start_time field needs to either be omitted or be equal to the value of departure_time in the GTFS feed's stop_times.txt file.

• The trip_id corresponds to a frequency-based trip: start_time is always required and must be specified for trip updates and vehicle positions. Frequency-based trips are defined in GTFS frequencies.txt.

◦ If the frequency-based trip corresponds to an exact_times=1 GTFS record: The start_time field must be some multiple, including zero, of headway_secs later than the frequencies.txt start_time for the corresponding time period.

◦ If the frequency-based trip corresponds to an exact_times=0 GTFS record: The start_time can be arbitrary, and it's initially expected to be the first departure of the trip. After it's established, the start_time of this frequency-based exact_times=0 trip is considered immutable, even if the first departure time changes. Any subsequent time changes can instead be reflected in a StopTimeUpdate message.

• The trip_id is omitted: start_time must be provided.

TripDescriptor.start_date Trip Update Trip Start Date STRING()

The start date of this trip instance in YYYYMMDD format. Whether start_date is required depends on the type of trip:

- Scheduled trips: start_date must be provided. This is to disambiguate trips that are so late that they collide with a scheduled trip on the next day. For example, suppose a train departs at 8:00 and 20:00 every day. If the train is 12 hours late, then there would be two distinct trips scheduled for the same time.

Note: This field is optional for scheduled trips in which such collisions are impossible. For example, this could happen if a service runs on an hourly schedule, and a vehicle that's one hour late isn't considered related to the schedule anymore.

- Frequency-based trips: start_date must be provided. Note that frequency-based trips are defined in the GTFS frequencies.txt file, while scheduled trips aren't.

- trip_id is omitted: start_date must be provided.

TripDescriptor.schedule_relationship Trip Update Trip Schedule Relationship ScheduleRelationship() The relation between this trip and the static schedule. If TripDescriptor is provided in an Alert EntitySelector, the schedule_relationship field is ignored by consumers when identifying the matching trip instance. SCHEDULED, ADDED, UNSCHEDULED, CANCELED, DUPLICATED, DELETED
stop_time_update.arrival.delay Departure Delay int32() The delay field (in seconds) can be positive (meaning that the vehicle is late) or negative (meaning that the vehicle is ahead of schedule). A delay of 0 means that the vehicle is exactly on time. Either delay or time must be provided within a StopTimeEvent - both fields cannot be empty.
StopTimeEvent.time Arrival Time int64() Event as absolute time. In POSIX time (i.e., number of seconds since January 1st 1970 00:00:00 UTC). Either delay or time must be provided within a StopTimeEvent - both fields cannot be empty.
StopTimeEvent.uncertainty Departure Uncertainty int32() If uncertainty is omitted, it is interpreted as unknown. To specify a completely certain prediction, set its uncertainty to 0.
stop_time_update.stop_sequence Stop Sequence UINT32() Must be the same as in stop_times.txt in the corresponding GTFS feed. Either stop_sequence or stop_id must be provided within a StopTimeUpdate - both fields cannot be empty. stop_sequence is required for trips that visit the same stop_id more than once (e.g., a loop) to disambiguate which stop the prediction is for.
stop_time_update.stop_id Stop ID STRING() Must be the same as in stops.txt in the corresponding GTFS feed. Either stop_sequence or stop_id must be provided within a StopTimeUpdate - both fields cannot be empty.
stop_time_update.arrival Arrival StopTimeEvent() If schedule_relationship is empty or SCHEDULED, either arrival or departure must be provided within a StopTimeUpdate - both fields cannot be empty. arrival and departure may both be empty when schedule_relationship is SKIPPED. If schedule_relationship is NO_DATA, arrival and departure must be empty.
stop_time_update.departure Departure StopTimeEvent() If schedule_relationship is empty or SCHEDULED, either arrival or departure must be provided within a StopTimeUpdate - both fields cannot be empty. arrival and departure may both be empty when schedule_relationship is SKIPPED. If schedule_relationship is NO_DATA, arrival and departure must be empty.
stop_time_update.schedule_relationship Schedule Relationship ENUM()

The relation between this StopTime and the static schedule. Options include:

-SCHEDULED: The vehicle is proceeding in accordance with its static schedule of stops, although not necessarily according to the times of the schedule. This is the default behavior. At least one of arrival and departure must be provided.

-SKIPPED: The stop is skipped, i.e., the vehicle will not stop at this stop. The arrival and departure fields are optional.

-NO_DATA: No data is given for this stop. It indicates that there is no realtime information available. When set NO_DATA is propagated through subsequent stops so this is the recommended way of specifying from which stop you do not have realtime information. When NO_DATA is set neither arrival nor departure should be supplied.

SCHEDULED, ADDED, UNSCHEDULED, CANCELED, DUPLICATED, DELETED

Additional Information

Field Value
Data last updated 16 November 2024
Metadata last updated 21 November 2024
Created 16 November 2024
Format API
License Creative Commons Attribution 4.0 International
Api urlhttps://data-exchange-api.vicroads.vic.gov.au/opendata/v1/gtfsr/metrotrain-tripupdates
Attributes[{"attribute_display_order_id": 1, "db_format": "FeedHeader()", "db_name": "header", "definition": "Metadata about a feed, included in feed messages.", "fixed_values": "", "id": "8157", "name": "Feed Header", "ref_number": "AT-8157"}, {"attribute_display_order_id": 2, "db_format": "FeedEntity()", "db_name": "entity", "definition": "A definition (or update) of an entity in the transit feed. If the entity is not being deleted, exactly one of trip_update, vehicle, and alert fields should be populated. This field can be repeated as many times as needed.", "fixed_values": "", "id": "8156", "name": "Feed Entity", "ref_number": "AT-8156"}, {"attribute_display_order_id": 3, "db_format": "STRING()", "db_name": "header.gtfs_realtime_version", "definition": "Version of the feed specification. The current version is 2.0.", "fixed_values": "", "id": "8172", "name": "GTFS Realtime Version", "ref_number": "AT-8172"}, {"attribute_display_order_id": 4, "db_format": "ENUM()", "db_name": "header.incrementality", "definition": "<p>Determines whether the current fetch is incremental. Options include:</p>\n<p>-FULL_DATASET: this feed update will overwrite all preceding realtime information for the feed. Thus this update is expected to provide a full snapshot of all known realtime information.</p>\n<p>-DIFFERENTIAL: currently, this mode is unsupported and behavior is unspecified for feeds that use this mode. There are discussions on the GTFS Realtime mailing list around fully specifying the behavior of DIFFERENTIAL mode and the documentation will be updated when those discussions are finalized.</p>", "fixed_values": "FULL_DATASET, DIFFERENTIAL", "id": "8154", "name": "Incrementality", "ref_number": "AT-8154"}, {"attribute_display_order_id": 5, "db_format": "int64()", "db_name": "header.timestamp", "definition": "This timestamp identifies the moment when the content of this feed has been created (in server time). In POSIX time (i.e., number of seconds since January 1st 1970 00:00:00 UTC). To avoid time skew between systems producing and consuming realtime information it is strongly advised to derive timestamp from a time server. It is completely acceptable to use Stratum 3 or even lower strata servers since time differences up to a couple of seconds are tolerable.", "fixed_values": "", "id": "8179", "name": "Feed Header Timestamp", "ref_number": "AT-8179"}, {"attribute_display_order_id": 6, "db_format": "STRING()", "db_name": "entity.id", "definition": "Feed-unique identifier for this entity. The ids are used only to provide incrementality support. The actual entities referenced by the feed must be specified by explicit selectors (see EntitySelector below for more info).", "fixed_values": "", "id": "8173", "name": "Feed Entity ID", "ref_number": "AT-8173"}, {"attribute_display_order_id": 7, "db_format": "BOOLEAN()", "db_name": "entity.is_deleted", "definition": "Whether this entity is to be deleted. Should be provided only for feeds with Incrementality of DIFFERENTIAL - this field should NOT be provided for feeds with Incrementality of FULL_DATASET.", "fixed_values": "", "id": "8152", "name": "Feed Entity Is Deleted", "ref_number": "AT-8152"}, {"attribute_display_order_id": 8, "db_format": "TripUpdate()", "db_name": "entity.trip_update", "definition": "Data about the realtime departure delays of a trip. At least one of the fields trip_update, vehicle, or alert must be provided - all these fields cannot be empty.", "fixed_values": "", "id": "8176", "name": "Feed Entity Trip Update", "ref_number": "AT-8176"}, {"attribute_display_order_id": 9, "db_format": "TripDescriptor()", "db_name": "trip_update.trip", "definition": "The Trip that this message applies to. There can be at most one TripUpdate entity for each actual trip instance. If there is none, that means there is no prediction information available. It does not mean that the trip is progressing according to schedule.", "fixed_values": "", "id": "8175", "name": "Trip Update Trip", "ref_number": "AT-8175"}, {"attribute_display_order_id": 10, "db_format": "VehicleDescriptor()", "db_name": "trip_update.vehicle", "definition": "Additional information on the vehicle that is serving this trip.", "fixed_values": "", "id": "8180", "name": "Trip Update Vehicle", "ref_number": "AT-8180"}, {"attribute_display_order_id": 11, "db_format": "StopTimeUpdate()", "db_name": "trip_update.stop_time_update", "definition": "Updates to StopTimes for the trip (both future, i.e., predictions, and in some cases, past ones, i.e., those that already happened). The updates must be sorted by stop_sequence, and apply for all the following stops of the trip up to the next specified stop_time_update. At least one stop_time_update must be provided for the trip unless the trip.schedule_relationship is CANCELED - if the trip is canceled, no stop_time_updates need to be provided. This field can be repeated as many times as needed.", "fixed_values": "", "id": "8168", "name": "Stop Time Update", "ref_number": "AT-8168"}, {"attribute_display_order_id": 12, "db_format": "int64()", "db_name": "trip_update.timestamp", "definition": "Moment at which the vehicle's real-time progress was measured. In POSIX time (i.e., the number of seconds since January 1st 1970 00:00:00 UTC).", "fixed_values": "", "id": "8178", "name": "Trip Update Timestamp", "ref_number": "AT-8178"}, {"attribute_display_order_id": 13, "db_format": "STRING()", "db_name": "TripDescriptor.trip_id", "definition": "<p>The trip_id from the GTFS feed that this selector refers to. Whether trip_id is required depends on the type of trip:</p>\n<p>- Non-frequency-based trips: The trip_id field alone is enough to uniquely identify these trips. Note that non-frequency-based trips aren't defined in GTFS frequencies.txt.</p>\n<p>- Frequency-based trips: The trip_id, start_time, and start_date fields are all required. Frequency-based trips are defined in GTFS frequencies.txt.</p>\n<p>- Schedule-based trips: The trip_id field can be omitted only if the trip can be uniquely identified by a combination of the provided route_id, direction_id, start_time, and start_date fields. Note that scheduled-based trips aren't defined in GTFS frequencies.txt.</p>", "fixed_values": "", "id": "8146", "name": "Trip Update Trip ID", "ref_number": "AT-8146"}, {"attribute_display_order_id": 14, "db_format": "STRING()", "db_name": "TripDescriptor.route_id", "definition": "The route_id from the GTFS feed that this selector refers to. If trip_id is omitted, then route_id, direction_id, start_time, and schedule_relationship=SCHEDULED must all be set to identify a trip instance.", "fixed_values": "", "id": "8147", "name": "Trip Update Trip Route ID", "ref_number": "AT-8147"}, {"attribute_display_order_id": 15, "db_format": "UINT32()", "db_name": "TripDescriptor.direction_id", "definition": "<p> The direction_id from the GTFS feed trips.txt file, which indicates the direction of travel. If trip_id is omitted, direction_id must be provided.</p>\n<p>Caution: This field is still experimental and subject to change. It might be formally adopted in the future.</p>", "fixed_values": "", "id": "8151", "name": "Trip Update Trip Direction ID", "ref_number": "AT-8151"}, {"attribute_display_order_id": 16, "db_format": "STRING()", "db_name": "TripDescriptor.start_time", "definition": "<p>The initially scheduled start time of this trip instance. The field type Time defines the format of this field, for example 11:15:35 or 25:15:35. Whether the start_time field is required depends on the type of trip:</p>\n<p>\u2022 The trip_id corresponds to a non-frequency-based trip: The start_time field needs to either be omitted or be equal to the value of departure_time in the GTFS feed's stop_times.txt file.</p>\n<p>\u2022 The trip_id corresponds to a frequency-based trip: start_time is always required and must be specified for trip updates and vehicle positions. Frequency-based trips are defined in GTFS frequencies.txt.</p>\n<p>\u25e6 If the frequency-based trip corresponds to an exact_times=1 GTFS record: The start_time field must be some multiple, including zero, of headway_secs later than the frequencies.txt start_time for the corresponding time period.</p>\n<p>\u25e6 If the frequency-based trip corresponds to an exact_times=0 GTFS record: The start_time can be arbitrary, and it's initially expected to be the first departure of the trip. After it's established, the start_time of this frequency-based exact_times=0 trip is considered immutable, even if the first departure time changes. Any subsequent time changes can instead be reflected in a StopTimeUpdate message.</p>\n<p>\u2022 The trip_id is omitted: start_time must be provided.</p>", "fixed_values": "", "id": "8148", "name": "Trip Update Trip Start Time", "ref_number": "AT-8148"}, {"attribute_display_order_id": 17, "db_format": "STRING()", "db_name": "TripDescriptor.start_date", "definition": "<p>The start date of this trip instance in YYYYMMDD format. Whether start_date is required depends on the type of trip:</p>\n<p>- Scheduled trips: start_date must be provided. This is to disambiguate trips that are so late that they collide with a scheduled trip on the next day. For example, suppose a train departs at 8:00 and 20:00 every day. If the train is 12 hours late, then there would be two distinct trips scheduled for the same time.</p>\n<p>Note: This field is optional for scheduled trips in which such collisions are impossible. For example, this could happen if a service runs on an hourly schedule, and a vehicle that's one hour late isn't considered related to the schedule anymore.</p>\n<p>- Frequency-based trips: start_date must be provided. Note that frequency-based trips are defined in the GTFS frequencies.txt file, while scheduled trips aren't.</p>\n<p>- trip_id is omitted: start_date must be provided.</p>", "fixed_values": "", "id": "8149", "name": "Trip Update Trip Start Date", "ref_number": "AT-8149"}, {"attribute_display_order_id": 18, "db_format": "ScheduleRelationship()", "db_name": "TripDescriptor.schedule_relationship", "definition": "The relation between this trip and the static schedule. If TripDescriptor is provided in an Alert EntitySelector, the schedule_relationship field is ignored by consumers when identifying the matching trip instance.", "fixed_values": "SCHEDULED, ADDED, UNSCHEDULED, CANCELED, DUPLICATED, DELETED", "id": "8165", "name": "Trip Update Trip Schedule Relationship", "ref_number": "AT-8165"}, {"attribute_display_order_id": 19, "db_format": "int32()", "db_name": "stop_time_update.arrival.delay", "definition": "The delay field (in seconds) can be positive (meaning that the vehicle is late) or negative (meaning that the vehicle is ahead of schedule). A delay of 0 means that the vehicle is exactly on time. Either delay or time must be provided within a StopTimeEvent - both fields cannot be empty.", "fixed_values": "", "id": "8163", "name": "Departure Delay", "ref_number": "AT-8163"}, {"attribute_display_order_id": 20, "db_format": "int64()", "db_name": "StopTimeEvent.time", "definition": "Event as absolute time. In POSIX time (i.e., number of seconds since January 1st 1970 00:00:00 UTC). Either delay or time must be provided within a StopTimeEvent - both fields cannot be empty.", "fixed_values": "", "id": "8150", "name": "Arrival Time", "ref_number": "AT-8150"}, {"attribute_display_order_id": 21, "db_format": "int32()", "db_name": "StopTimeEvent.uncertainty", "definition": "If uncertainty is omitted, it is interpreted as unknown. To specify a completely certain prediction, set its uncertainty to 0.", "fixed_values": "", "id": "8160", "name": "Departure Uncertainty", "ref_number": "AT-8160"}, {"attribute_display_order_id": 22, "db_format": "UINT32()", "db_name": "stop_time_update.stop_sequence", "definition": "Must be the same as in stop_times.txt in the corresponding GTFS feed. Either stop_sequence or stop_id must be provided within a StopTimeUpdate - both fields cannot be empty. stop_sequence is required for trips that visit the same stop_id more than once (e.g., a loop) to disambiguate which stop the prediction is for.", "fixed_values": "", "id": "8177", "name": "Stop Sequence", "ref_number": "AT-8177"}, {"attribute_display_order_id": 23, "db_format": "STRING()", "db_name": "stop_time_update.stop_id", "definition": "Must be the same as in stops.txt in the corresponding GTFS feed. Either stop_sequence or stop_id must be provided within a StopTimeUpdate - both fields cannot be empty.", "fixed_values": "", "id": "8170", "name": "Stop ID", "ref_number": "AT-8170"}, {"attribute_display_order_id": 24, "db_format": "StopTimeEvent()", "db_name": "stop_time_update.arrival", "definition": "If schedule_relationship is empty or SCHEDULED, either arrival or departure must be provided within a StopTimeUpdate - both fields cannot be empty. arrival and departure may both be empty when schedule_relationship is SKIPPED. If schedule_relationship is NO_DATA, arrival and departure must be empty.", "fixed_values": "", "id": "8167", "name": "Arrival", "ref_number": "AT-8167"}, {"attribute_display_order_id": 25, "db_format": "StopTimeEvent()", "db_name": "stop_time_update.departure", "definition": "If schedule_relationship is empty or SCHEDULED, either arrival or departure must be provided within a StopTimeUpdate - both fields cannot be empty. arrival and departure may both be empty when schedule_relationship is SKIPPED. If schedule_relationship is NO_DATA, arrival and departure must be empty.", "fixed_values": "", "id": "8166", "name": "Departure", "ref_number": "AT-8166"}, {"attribute_display_order_id": 26, "db_format": "ENUM()", "db_name": "stop_time_update.schedule_relationship", "definition": "<p>The relation between this StopTime and the static schedule. Options include:</p>\n<p>-SCHEDULED: The vehicle is proceeding in accordance with its static schedule of stops, although not necessarily according to the times of the schedule. This is the default behavior. At least one of arrival and departure must be provided.</p>\n<p>-SKIPPED: The stop is skipped, i.e., the vehicle will not stop at this stop. The arrival and departure fields are optional.</p>\n<p>-NO_DATA: No data is given for this stop. It indicates that there is no realtime information available. When set NO_DATA is propagated through subsequent stops so this is the recommended way of specifying from which stop you do not have realtime information. When NO_DATA is set neither arrival nor departure should be supplied.</p>", "fixed_values": "SCHEDULED, ADDED, UNSCHEDULED, CANCELED, DUPLICATED, DELETED", "id": "8153", "name": "Schedule Relationship", "ref_number": "AT-8153"}]
Datastore activeFalse
Datastore contains all records of source fileFalse
Filesize2,485
Has viewsFalse
HistoricalFalse
Idababbd82-d96d-4c66-a587-8d21d8e344d2
Last updated date1 day ago
Mimetypeapplication/json
Open dataset titleGTFS Realtime - Trip Updates - Metro Train
Package id5516be75-c5ea-4b9b-a82c-f7c1f1eec4bc
Position5
Publication date2 years ago
Stateactive
Filesize 2.4 KB
Release Date
Temporal Coverage Start
Temporal Coverage End
Data Quality Statement
Attribution Statement