{"help": "https://data.gov.au/data/en/api/3/action/help_show?name=package_show", "success": true, "result": {"archived": false, "author": "Department of Transport and Planning", "author_email": null, "contact_point": "unknown", "creator_user_id": "c2fbbe4a-4ba0-4945-808b-67454605a4cf", "duplicate_score": 2, "geospatial_topic": [], "id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "isopen": false, "license_id": "cc-by", "license_title": "Creative Commons Attribution 3.0 Australia", "license_url": "http://creativecommons.org/licenses/by/3.0/au/", "maintainer": null, "maintainer_email": null, "metadata_created": "2025-06-25T19:30:58.453995", "metadata_modified": "2025-10-24T04:12:21.095902", "name": "gtfs-realtime", "notes": "GTFS Realtime feeds have been provided by the Victoria Department of Transport and Planning\nto provide realtime updates about Public Transport services. It contains feeds about:\n\nTrip Updates\u00a0- delays, cancellations, changed routes\nService Alerts\u00a0- stop moved, unforeseen events affecting a station, route or the entire network\nVehicle Positions\u00a0- information about the vehicles including location and congestion level\n\nPlease note these feeds are provided in the Protocol Buffer format and are not human readable.\nFor more information refer to this GTFS Realtime page (https://gtfs.org/realtime/) which is maintained by MobilityData (https://mobilitydata.org/) and facilitates the GTFS and GTFS-R specification.\nSummary of Changes:\nTwo new V/Line real-time open data feeds have been released so passengers can make decisions about their journeys using the right information at the right time, no matter their app of choice: \nGTFS-R - Trip Updates - vLine: gives a predicted arrival or departure time for stops along a public transport route. Trip updates can also provide for more complex scenarios where trips are cancelled or added to the schedule or even re-routed.\u00a0\nGTFS-R - Vehicle Positions - vLine: provides automatically generated information on the location of a vehicle, such as from a GPS device on board\nWhy are these changes being made?\nThese changes are being made to:\n\nCreate consistent and accurate real-time transport information for open data users.\nImprove trip planning and data usability by better aligning static and real-time datasets.\n\nNOTE:\u00a0\n\nThe API Key is to be used in the request header. Header name is 'KeyID'.\nAPI endpoint rate limit - Metro Train (24 calls per 60 seconds), Tram (24 calls per 60 seconds), Bus (24 calls per 60 seconds)\nData Refresh rate - (Metro Train - Near real-time), (Tram - Every 60 seconds), (Bus - Near real-time)\n", "num_resources": 9, "num_tags": 6, "organization": {"id": "d732c854-36e9-4bbc-a80f-80b53a832c0b", "name": "department-of-transport-and-planning-victoria-government", "title": "Department of Transport and Planning ", "type": "organization", "description": "Victoria\u2019s Department of Transport and Planning (DTP) brings together key transport, planning, land, precinct and policy functions within a single department to create thriving places and connected communities.\r\nTogether with our key agencies we are responsible for planning, building, operating, and maintaining Victoria\u2019s transport and planning system for use by all.", "image_url": "", "created": "2025-06-26T02:40:34.168294", "is_organization": true, "approval_status": "approved", "state": "active"}, "original_harvest_source": {"site_url": "https://discover.data.vic.gov.au", "href": "https://discover.data.vic.gov.au/dataset/gtfs-realtime", "title": "Victoria Government"}, "original_name": "gtfs-realtime", "owner_org": "d732c854-36e9-4bbc-a80f-80b53a832c0b", "private": false, "promotion_level": "0", "remote_last_updated": "2025-10-07 12:30:32.804330", "spatial": "Victoria", "state": "active", "temporal_coverage_from": "2025-05-30 00:00:00", "title": "GTFS Realtime", "type": "dataset", "unpublished": false, "url": null, "version": null, "extras": [{"key": "harvest_object_id", "value": "4a243c73-3c23-4bd9-b928-5df49a3e93c7"}, {"key": "harvest_source_id", "value": "472e756b-f6f5-44d2-ba46-5438c201e026"}, {"key": "harvest_source_title", "value": "Victoria Government"}], "resources": [{"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/metro/trip-updates", "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\": \"\", \"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\": \"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\": 8, \"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\": 9, \"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\": 10, \"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\": 11, \"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\": 12, \"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\": 13, \"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\": 14, \"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\": 15, \"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\": 16, \"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\": 17, \"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\": 18, \"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\": 19, \"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\": 20, \"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\": 21, \"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\": 22, \"db_format\": \"ENUM()\", \"db_name\": \"stop_time_update.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\": \"8153\", \"name\": \"Schedule Relationship\", \"ref_number\": \"AT-8153\"}]", "cache_last_updated": null, "cache_url": null, "created": "2025-08-04T00:21:49.444369", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "GTFS Realtime Metro Train Trip Update data feed provides real time arrival, departure and delay information of a trip for metropolitan train services in Melbourne, Victoria. The feed doesn\u2019t include train replacement buses, service deviations (skipping stops or changing routes) and platform information.\r\nNote: This API endpoint has a rate limit of 20-27 calls per minute (depending on the data size) and caching time of 30 seconds.", "edc_sync": true, "filesize": 2502, "format": "API", "hash": "", "historical": false, "id": "0010d606-47bf-4abb-a04f-63add63a4d23", "last_modified": "2025-08-04T00:21:49.363939", "last_updated_date": "2025-08-04T00:00:00", "metadata_modified": "2025-10-24T04:12:02.294354", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Trip Updates - Metro Train", "open_dataset_title": "GTFS Realtime - Trip Updates - Metro Train", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 0, "publication_date": "2022-06-01T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/0010d606-47bf-4abb-a04f-63add63a4d23/download/gtfsr_metro_train_trip_updates.openapi.json", "url_type": null, "zip_extract": false}, {"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/metro/vehicle-positions/", "attributes": "[{\"attribute_display_order_id\": 1, \"db_format\": \"FeedHeader()\", \"db_name\": \"header\", \"definition\": \"Metadata about a feed, included in feed messages.\", \"fixed_values\": \"\", \"id\": \"8189\", \"name\": \"Feed Header\", \"ref_number\": \"AT-8189\"}, {\"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\": \"8188\", \"name\": \"Feed Entity\", \"ref_number\": \"AT-8188\"}, {\"attribute_display_order_id\": 3, \"db_format\": \"\", \"db_name\": \"header.gtfs_realtime_version\", \"definition\": \"Version of the feed specification. The current version is 2.0.\", \"fixed_values\": \"\", \"id\": \"8199\", \"name\": \"GTFS Realtime Version\", \"ref_number\": \"AT-8199\"}, {\"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\": \"8184\", \"name\": \"Incrementality\", \"ref_number\": \"AT-8184\"}, {\"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\": \"8209\", \"name\": \"Feed Header Timestamp\", \"ref_number\": \"AT-8209\"}, {\"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\": \"8201\", \"name\": \"Feed Entity ID\", \"ref_number\": \"AT-8201\"}, {\"attribute_display_order_id\": 7, \"db_format\": \"VehiclePosition()\", \"db_name\": \"entity.vehicle\", \"definition\": \"Data about the realtime position of a vehicle. At least one of the fields trip_update, vehicle, or alert must be provided - all these fields cannot be empty.\", \"fixed_values\": \"\", \"id\": \"8212\", \"name\": \"Feed Entity Vehicle Position\", \"ref_number\": \"AT-8212\"}, {\"attribute_display_order_id\": 8, \"db_format\": \"Position()\", \"db_name\": \"vehicle.position\", \"definition\": \"Current position of this vehicle.\", \"fixed_values\": \"\", \"id\": \"8195\", \"name\": \"Position\", \"ref_number\": \"AT-8195\"}, {\"attribute_display_order_id\": 9, \"db_format\": \"TripDescriptor()\", \"db_name\": \"vehicle.trip\", \"definition\": \"The Trip that this vehicle is serving. Can be empty or partial if the vehicle can not be identified with a given trip instance.\", \"fixed_values\": \"\", \"id\": \"8206\", \"name\": \"Vehicle Trip\", \"ref_number\": \"AT-8206\"}, {\"attribute_display_order_id\": 10, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.stop_id\", \"definition\": \"Identifies the current stop. The value must be the same as in stops.txt in the corresponding GTFS feed.\", \"fixed_values\": \"\", \"id\": \"8200\", \"name\": \"Stop ID\", \"ref_number\": \"AT-8200\"}, {\"attribute_display_order_id\": 11, \"db_format\": \"int64()\", \"db_name\": \"vehicle.timestamp\", \"definition\": \"Moment at which the vehicle's position was measured. In POSIX time (i.e., number of seconds since January 1st 1970 00:00:00 UTC).\", \"fixed_values\": \"\", \"id\": \"8210\", \"name\": \"Timestamp\", \"ref_number\": \"AT-8210\"}, {\"attribute_display_order_id\": 12, \"db_format\": \"FLOAT()\", \"db_name\": \"vehicle.position.latitude\", \"definition\": \"Degrees North, in the WGS-84 coordinate system.\", \"fixed_values\": \"\", \"id\": \"8192\", \"name\": \"Position Latitude\", \"ref_number\": \"AT-8192\"}, {\"attribute_display_order_id\": 13, \"db_format\": \"FLOAT()\", \"db_name\": \"vehicle.position.longitude\", \"definition\": \"Degrees East, in the WGS-84 coordinate system.\", \"fixed_values\": \"\", \"id\": \"8191\", \"name\": \"Position Longitude\", \"ref_number\": \"AT-8191\"}, {\"attribute_display_order_id\": 14, \"db_format\": \"FLOAT()\", \"db_name\": \"vehicle.position.bearing\", \"definition\": \"Bearing, in degrees, clockwise from True North, i.e., 0 is North and 90 is East. This can be the compass bearing, or the direction towards the next stop or intermediate location. This should not be deduced from the sequence of previous positions, which clients can compute from previous data.\", \"fixed_values\": \"\", \"id\": \"8193\", \"name\": \"Position Bearing\", \"ref_number\": \"AT-8193\"}, {\"attribute_display_order_id\": 15, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.trip.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\": \"8202\", \"name\": \"Vehicle Trip ID\", \"ref_number\": \"AT-8202\"}, {\"attribute_display_order_id\": 16, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.trip.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\": \"8203\", \"name\": \"Vehicle Trip Route ID\", \"ref_number\": \"AT-8203\"}, {\"attribute_display_order_id\": 17, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.trip.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\": \"8204\", \"name\": \"Vehicle Trip Start Time\", \"ref_number\": \"AT-8204\"}, {\"attribute_display_order_id\": 18, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.trip.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\": \"8205\", \"name\": \"Vehicle Trip Start Date\", \"ref_number\": \"AT-8205\"}, {\"attribute_display_order_id\": 19, \"db_format\": \"ENUM()\", \"db_name\": \"vehicle.trip.schedule_relationship\", \"definition\": \"<p>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 they identify the matching trip instance. Options include:</p>\\n<p>-SCHEDULED: Trip that is running in accordance with its GTFS schedule, or is close enough to the scheduled trip to be associated with it.</p>\\n<p>-ADDED:  An extra trip that was added in addition to a running schedule, for example, to replace a broken vehicle or to respond to sudden passenger load.</p>\\n<p>-UNSCHEDULED: A trip that is running with no schedule associated to it - this value is used to identify trips defined in GTFS frequencies.txt with exact_times = 0. It should not be used to describe trips not defined in GTFS frequencies.txt, or trips in GTFS frequencies.txt with exact_times = 1.</p>\\n<p>-CANCELED: A trip that existed in the schedule but was removed.</p>\", \"fixed_values\": \"SCHEDULED, ADDED, UNSCHEDULED, CANCELED, DUPLICATED, DELETED\", \"id\": \"8185\", \"name\": \"Trip Update Trip Schedule Relationship\", \"ref_number\": \"AT-8185\"}, {\"attribute_display_order_id\": 20, \"db_format\": \"()\", \"db_name\": \"vehicle.vehicle.id\", \"definition\": \"Internal system identification of the vehicle. Should be unique per vehicle, and is used for tracking the vehicle as it proceeds through the system. This id should not be made visible to the end-user; for that purpose use the label field.\", \"fixed_values\": \"\", \"id\": \"8196\", \"name\": \"Vehicle Position Vehicle ID\", \"ref_number\": \"AT-8196\"}, {\"attribute_display_order_id\": 21, \"db_format\": \"()\", \"db_name\": \"vehicle.vehicle.license_plate\", \"definition\": \"The license plate of the vehicle.\", \"fixed_values\": \"\", \"id\": \"8198\", \"name\": \"Vehicle Position Vehicle License Plate\", \"ref_number\": \"AT-8198\"}]", "cache_last_updated": null, "cache_url": null, "created": "2025-08-04T00:34:08.606774", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "<p>GTFS Realtime Metro Train Vehicle Position data feed provides live location and occupancy information for metro train services in Melbourne, Victoria.&nbsp;<span style=\"text-align: var(--bs-body-text-align);\">Note: This API endpoint has a rate limit of 20-27 calls per minute (depending on the data size) and caching time of 30 seconds.</span></p>", "edc_sync": true, "filesize": 2372, "format": "API", "hash": "", "historical": false, "id": "e2158e21-e6cb-4611-919f-90117b36a610", "last_modified": "2025-08-04T00:34:08.559680", "last_updated_date": "2025-08-04T00:00:00", "metadata_modified": "2025-10-24T04:12:02.294486", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Vehicle Positions - Metro Train", "open_dataset_title": "GTFS Realtime -  Vehicle Position - Metro Train", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 1, "publication_date": "2022-06-01T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/e2158e21-e6cb-4611-919f-90117b36a610/download/gtfsr_metro_train_vehicle_positions.openapi.json", "url_type": null, "zip_extract": false}, {"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/metro/service-alerts/", "attributes": "[{\"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\": \"7986\", \"name\": \"Feed Entity\", \"ref_number\": \"AT-7986\"}, {\"attribute_display_order_id\": 1, \"db_format\": \"FeedHeader()\", \"db_name\": \"header\", \"definition\": \"Metadata about a feed, included in feed messages.\", \"fixed_values\": \"\", \"id\": \"7975\", \"name\": \"Feed Header\", \"ref_number\": \"AT-7975\"}, {\"attribute_display_order_id\": 2, \"db_format\": \"STRING()\", \"db_name\": \"header. gtfs_realtime_version\", \"definition\": \"Version of the feed specification. The current version is 2.0.\", \"fixed_values\": \"\", \"id\": \"7987\", \"name\": \"GTFS Realtime Version\", \"ref_number\": \"AT-7987\"}, {\"attribute_display_order_id\": 3, \"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\": \"7988\", \"name\": \"Incrementality\", \"ref_number\": \"AT-7988\"}, {\"attribute_display_order_id\": 4, \"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\": \"7989\", \"name\": \"Feed Header Timestamp\", \"ref_number\": \"AT-7989\"}, {\"attribute_display_order_id\": 5, \"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\": \"7990\", \"name\": \"Feed Entity ID\", \"ref_number\": \"AT-7990\"}, {\"attribute_display_order_id\": 6, \"db_format\": \"Alert()\", \"db_name\": \"entity. alert\", \"definition\": \"An alert, indicating some sort of incident in the public transit network.\", \"fixed_values\": \"\", \"id\": \"7992\", \"name\": \"Feed Entity Alert\", \"ref_number\": \"AT-7992\"}, {\"attribute_display_order_id\": 7, \"db_format\": \"TIMERANGE()\", \"db_name\": \"alert. active_period\", \"definition\": \"Time when the alert should be shown to the user. If missing, the alert will be shown as long as it appears in the feed. If multiple ranges are given, the alert will be shown during all of them. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"7993\", \"name\": \"Alert Active Period\", \"ref_number\": \"AT-7993\"}, {\"attribute_display_order_id\": 8, \"db_format\": \"int64()\", \"db_name\": \"alert. active_period. start\", \"definition\": \"Start time, in POSIX time (i.e., number of seconds since January 1st 1970 00:00:00 UTC). If missing, the interval starts at minus infinity. If a TimeRange is provided, either start or end must be provided - both fields cannot be empty.\", \"fixed_values\": \"\", \"id\": \"7994\", \"name\": \"Alert Active Period Start\", \"ref_number\": \"AT-7994\"}, {\"attribute_display_order_id\": 9, \"db_format\": \"int64()\", \"db_name\": \"alert. active_period. end\", \"definition\": \"End time, in POSIX time (i.e., number of seconds since January 1st 1970 00:00:00 UTC). If missing, the interval ends at plus infinity. If a TimeRange is provided, either start or end must be provided - both fields cannot be empty.\", \"fixed_values\": \"\", \"id\": \"7995\", \"name\": \"Alert Active Period End\", \"ref_number\": \"AT-7995\"}, {\"attribute_display_order_id\": 10, \"db_format\": \"EntitySelector()\", \"db_name\": \"alert. informed_entity\", \"definition\": \"Entities whose users we should notify of this alert. At least one informed_entity must be provided. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"7996\", \"name\": \"Alert Informed Entity\", \"ref_number\": \"AT-7996\"}, {\"attribute_display_order_id\": 11, \"db_format\": \"STRING()\", \"db_name\": \"alert. informed_entity. agency_id\", \"definition\": \"The agency_id from the GTFS feed that this selector refers to.\", \"fixed_values\": \"\", \"id\": \"7997\", \"name\": \"Alert Informed Entity Agency ID\", \"ref_number\": \"AT-7997\"}, {\"attribute_display_order_id\": 12, \"db_format\": \"STRING()\", \"db_name\": \"alert. informed_entity. route_id\", \"definition\": \"The route_id from the GTFS that this selector refers to. If direction_id is provided, route_id must also be provided.\", \"fixed_values\": \"\", \"id\": \"7998\", \"name\": \"Alert Informed Entity Route ID\", \"ref_number\": \"AT-7998\"}, {\"attribute_display_order_id\": 13, \"db_format\": \"STRING()\", \"db_name\": \"alert. informed_entity. stop_id\", \"definition\": \"The stop_id from the GTFS feed that this selector refers to.\", \"fixed_values\": \"\", \"id\": \"7977\", \"name\": \"Alert Informed Entity Stop ID\", \"ref_number\": \"AT-7977\"}, {\"attribute_display_order_id\": 14, \"db_format\": \"UINT32()\", \"db_name\": \"alert. informed_entity. direction_id\", \"definition\": \"The direction_id from the GTFS feed trips.txt file, used to select all trips in one direction for a route, specified by route_id. If direction_id is provided, route_id must also be provided.\", \"fixed_values\": \"\", \"id\": \"8000\", \"name\": \"Alert Informed Entity Direction ID\", \"ref_number\": \"AT-8000\"}, {\"attribute_display_order_id\": 15, \"db_format\": \"ENUM()\", \"db_name\": \"alert. cause\", \"definition\": \"<p>Cause of this alert. Options include:</p>\\n<p>-UNKNOWN_CAUSE</p>\\n<p>-OTHER_CAUSE</p>\\n<p>-TECHNICAL_PROBLEM</p>\\n<p>-STRIKE</p>\\n<p>-DEMONSTRATION</p>\\n<p>-ACCIDENT</p>\\n<p>-HOLIDAY</p>\\n<p>-WEATHER</p>\\n<p>-MAINTENANCE</p>\\n<p>-CONSTRUCTION</p>\\n<p>-POLICE_ACTIVITY</p>\\n<p>-MEDICAL_EMERGENCY</p>\", \"fixed_values\": \"UNKNOWN_CAUSE, OTHER_CAUSE, TECHNICAL_PROBLEM, STRIKE, DEMONSTRATION, ACCIDENT, HOLIDAY, WEATHER, MAINTENANCE, CONSTRUCTION, POLICE_ACTIVITY, MEDICAL_EMERGENCY\", \"id\": \"8008\", \"name\": \"Alert Cause\", \"ref_number\": \"AT-8008\"}, {\"attribute_display_order_id\": 16, \"db_format\": \"ENUM()\", \"db_name\": \"alert. effect\", \"definition\": \"<p>The effect of this problem on the affected entity. Options include:</p>\\n<p>-NO_SERVICE</p>\\n<p>-REDUCED_SERVICE</p>\\n<p>-SIGNIFICANT_DELAYS</p>\\n<p>-DETOUR</p>\\n<p>-ADDITIONAL_SERVICE</p>\\n<p>-MODIFIED_SERVICE</p>\\n<p>-OTHER_EFFECT</p>\\n<p>-UNKNOWN_EFFECT</p>\\n<p>-STOP_MOVED</p>\", \"fixed_values\": \"NO_SERVICE, REDUCED_SERVICE, SIGNIFICANT_DELAYS, DETOUR, ADDITIONAL_SERVICE, MODIFIED_SERVICE, OTHER_EFFECT, UNKNOWN_EFFECT, STOP_MOVED, NO_EFFECT, ACCESSIBILITY_ISSUE\", \"id\": \"7978\", \"name\": \"Alert Effect\", \"ref_number\": \"AT-7978\"}, {\"attribute_display_order_id\": 17, \"db_format\": \"TranslatedString()\", \"db_name\": \"alert. url\", \"definition\": \"The URL which provides additional information about the alert.\", \"fixed_values\": \"\", \"id\": \"7979\", \"name\": \"Alert URL\", \"ref_number\": \"AT-7979\"}, {\"attribute_display_order_id\": 18, \"db_format\": \"Translation()\", \"db_name\": \"alert. url. translation\", \"definition\": \"A localized string mapped to a language. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"8009\", \"name\": \"Alert URL Translation\", \"ref_number\": \"AT-8009\"}, {\"attribute_display_order_id\": 19, \"db_format\": \"STRING()\", \"db_name\": \"alert. url. translation. text\", \"definition\": \"A UTF-8 string containing the message.\", \"fixed_values\": \"\", \"id\": \"7980\", \"name\": \"Alert URL Translation Text\", \"ref_number\": \"AT-7980\"}, {\"attribute_display_order_id\": 20, \"db_format\": \"STRING()\", \"db_name\": \"alert. url. translation. language\", \"definition\": \"BCP-47 language code. Can be omitted if the language is unknown or if no internationalization is done at all for the feed. At most one translation is allowed to have an unspecified language tag - if there is more than one translation, the language must be provided.\", \"fixed_values\": \"\", \"id\": \"8010\", \"name\": \"Alert URL Translation Language\", \"ref_number\": \"AT-8010\"}, {\"attribute_display_order_id\": 21, \"db_format\": \"TranslatedString()\", \"db_name\": \"alert. header_text\", \"definition\": \"Header for the alert. This plain-text string will be highlighted, for example in boldface.\", \"fixed_values\": \"\", \"id\": \"8011\", \"name\": \"Alert Header Text\", \"ref_number\": \"AT-8011\"}, {\"attribute_display_order_id\": 22, \"db_format\": \"Translation()\", \"db_name\": \"alert. header_text. translation\", \"definition\": \"A localized string mapped to a language. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"8012\", \"name\": \"Alert Header Text Translation\", \"ref_number\": \"AT-8012\"}, {\"attribute_display_order_id\": 23, \"db_format\": \"STRING()\", \"db_name\": \"alert. header_text. translation. text\", \"definition\": \"A UTF-8 string containing the message.\", \"fixed_values\": \"\", \"id\": \"7981\", \"name\": \"Alert Header Text Translation Text\", \"ref_number\": \"AT-7981\"}, {\"attribute_display_order_id\": 24, \"db_format\": \"STRING()\", \"db_name\": \"alert. header_text. translation. language\", \"definition\": \"BCP-47 language code. Can be omitted if the language is unknown or if no internationalization is done at all for the feed. At most one translation is allowed to have an unspecified language tag - if there is more than one translation, the language must be provided.\", \"fixed_values\": \"\", \"id\": \"8013\", \"name\": \"Alert Header Text Translation Language\", \"ref_number\": \"AT-8013\"}, {\"attribute_display_order_id\": 25, \"db_format\": \"TranslatedString()\", \"db_name\": \"alert. description_text\", \"definition\": \"Description for the alert. This plain-text string will be formatted as the body of the alert (or shown on an explicit \\\"expand\\\" request by the user). The information in the description should add to the information of the header.\", \"fixed_values\": \"\", \"id\": \"7982\", \"name\": \"Alert Description Text\", \"ref_number\": \"AT-7982\"}, {\"attribute_display_order_id\": 26, \"db_format\": \"Translation()\", \"db_name\": \"alert. header_text. translation\", \"definition\": \"A localized string mapped to a language. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"7983\", \"name\": \"Alert Description Text Translation\", \"ref_number\": \"AT-7983\"}, {\"attribute_display_order_id\": 27, \"db_format\": \"STRING()\", \"db_name\": \"alert. header_text. translation. text\", \"definition\": \"A UTF-8 string containing the message.\", \"fixed_values\": \"\", \"id\": \"7984\", \"name\": \"Alert Description Text Translation Text\", \"ref_number\": \"AT-7984\"}, {\"attribute_display_order_id\": 28, \"db_format\": \"STRING()\", \"db_name\": \"alert. header_text. translation. language\", \"definition\": \"BCP-47 language code. Can be omitted if the language is unknown or if no internationalization is done at all for the feed. At most one translation is allowed to have an unspecified language tag - if there is more than one translation, the language must be provided.\", \"fixed_values\": \"\", \"id\": \"8014\", \"name\": \"Alert Description Text Translation Language\", \"ref_number\": \"AT-8014\"}, {\"attribute_display_order_id\": 29, \"db_format\": \"TripDescriptor()\", \"db_name\": \"alert. informed_entity. trip\", \"definition\": \"The trip instance from the GTFS that this selector refers to. This TripDescriptor must resolve to a single trip instance in the GTFS data (e.g., a producer cannot provide only a trip_id for exact_times=0 trips). If the ScheduleRelationship field is populated within this TripDescriptor it will be ignored by consumers when attempting to identify the GTFS trip.\", \"fixed_values\": \"\", \"id\": \"8001\", \"name\": \"Alert Informed Entity Trip\", \"ref_number\": \"AT-8001\"}, {\"attribute_display_order_id\": 30, \"db_format\": \"STRING()\", \"db_name\": \"alert. informed_entity. trip. 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\": \"8002\", \"name\": \"Alert Informed Entity Trip ID\", \"ref_number\": \"AT-8002\"}, {\"attribute_display_order_id\": 31, \"db_format\": \"STRING()\", \"db_name\": \"alert. informed_entity. trip. 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\": \"8005\", \"name\": \"Alert Informed Entity Trip Start Time\", \"ref_number\": \"AT-8005\"}, {\"attribute_display_order_id\": 32, \"db_format\": \"STRING()\", \"db_name\": \"alert. informed_entity. trip. 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\": \"8006\", \"name\": \"Alert Informed Entity Trip Start Date\", \"ref_number\": \"AT-8006\"}, {\"attribute_display_order_id\": 33, \"db_format\": \"STRING()\", \"db_name\": \"alert. informed_entity. trip. 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\": \"8003\", \"name\": \"Alert Informed Entity Trip Route ID\", \"ref_number\": \"AT-8003\"}, {\"attribute_display_order_id\": 34, \"db_format\": \"UINT32()\", \"db_name\": \"alert. informed_entity. trip. 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\": \"8004\", \"name\": \"Alert Informed Entity Trip Direction ID\", \"ref_number\": \"AT-8004\"}]", "cache_last_updated": null, "cache_url": null, "created": "2025-08-04T00:39:37.830433", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "<p>GTFS Realtime Metro Train Service Alerts data feed provides real time information about planned and unplanned disruptions affecting metropolitan\r\ntrain services including cancellations or unforeseen events affecting a\r\nstation, route or the entire network in Melbourne, Victoria.&nbsp;<span style=\"font-weight: var(--bs-body-font-weight); text-align: var(--bs-body-text-align);\">Note: This API endpoint has a rate limit of 24 calls per minute and caching time of 30 seconds.</span></p>", "edc_sync": true, "filesize": 2515, "format": "API", "hash": "", "historical": false, "id": "2a90e184-ac14-468a-92ff-9618cb43fb77", "last_modified": "2025-08-04T00:39:37.785214", "last_updated_date": "2025-08-04T00:00:00", "metadata_modified": "2025-10-24T04:12:02.294571", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Service Alerts - Metro Train", "open_dataset_title": "GTFS Realtime - Service Alerts - Metro Train", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 2, "publication_date": "2022-06-01T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/2a90e184-ac14-468a-92ff-9618cb43fb77/download/gtfsr_metro_train_service_alerts.openapi.json", "url_type": null, "zip_extract": false}, {"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/tram/trip-updates/", "attributes": "[{\"attribute_display_order_id\": 1, \"db_format\": \"FeedHeader()\", \"db_name\": \"header\", \"definition\": \"Metadata about a feed, included in feed messages.\", \"fixed_values\": \"\", \"id\": \"1312\", \"name\": \"Feed Header\", \"ref_number\": \"AT-1312\"}, {\"attribute_display_order_id\": 2, \"db_format\": \"STRING()\", \"db_name\": \"header.gtfs_realtime_version\", \"definition\": \"Version of the feed specification. The current version is 2.0.\", \"fixed_values\": \"\", \"id\": \"1314\", \"name\": \"GTFS Realtime Version\", \"ref_number\": \"AT-1314\"}, {\"attribute_display_order_id\": 3, \"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\": \"1315\", \"name\": \"Incrementality\", \"ref_number\": \"AT-1315\"}, {\"attribute_display_order_id\": 4, \"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\": \"1316\", \"name\": \"Feed Header Timestamp\", \"ref_number\": \"AT-1316\"}, {\"attribute_display_order_id\": 5, \"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\": \"1313\", \"name\": \"Feed Entity\", \"ref_number\": \"AT-1313\"}, {\"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\": \"1317\", \"name\": \"Feed Entity ID\", \"ref_number\": \"AT-1317\"}, {\"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\": \"1318\", \"name\": \"Feed Entity Is Deleted\", \"ref_number\": \"AT-1318\"}, {\"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\": \"1319\", \"name\": \"Feed Entity Trip Update\", \"ref_number\": \"AT-1319\"}, {\"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\": \"1320\", \"name\": \"Trip Update Trip\", \"ref_number\": \"AT-1320\"}, {\"attribute_display_order_id\": 10, \"db_format\": \"STRING()\", \"db_name\": \"trip_update.trip.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\": \"1321\", \"name\": \"Trip Update Trip ID\", \"ref_number\": \"AT-1321\"}, {\"attribute_display_order_id\": 11, \"db_format\": \"STRING()\", \"db_name\": \"trip_update.trip.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\": \"1322\", \"name\": \"Trip Update Trip Route ID\", \"ref_number\": \"AT-1322\"}, {\"attribute_display_order_id\": 12, \"db_format\": \"STRING()\", \"db_name\": \"trip_update.trip.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\": \"1324\", \"name\": \"Trip Update Trip Start Time\", \"ref_number\": \"AT-1324\"}, {\"attribute_display_order_id\": 13, \"db_format\": \"STRING()\", \"db_name\": \"trip_update.trip.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\": \"1325\", \"name\": \"Trip Update Trip Start Date\", \"ref_number\": \"AT-1325\"}, {\"attribute_display_order_id\": 14, \"db_format\": \"ENUM()\", \"db_name\": \"trip_update.trip.schedule_relationship\", \"definition\": \"<p>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 they identify the matching trip instance. Options include:</p>\\n<p>-SCHEDULED: Trip that is running in accordance with its GTFS schedule, or is close enough to the scheduled trip to be associated with it.</p>\\n<p>-ADDED:  An extra trip that was added in addition to a running schedule, for example, to replace a broken vehicle or to respond to sudden passenger load.</p>\\n<p>-UNSCHEDULED: A trip that is running with no schedule associated to it - this value is used to identify trips defined in GTFS frequencies.txt with exact_times = 0. It should not be used to describe trips not defined in GTFS frequencies.txt, or trips in GTFS frequencies.txt with exact_times = 1.</p>\\n<p>-CANCELED: A trip that existed in the schedule but was removed.</p>\", \"fixed_values\": \"SCHEDULED, ADDED, UNSCHEDULED, CANCELED, DUPLICATED, DELETED\", \"id\": \"1326\", \"name\": \"Trip Update Trip Schedule Relationship\", \"ref_number\": \"AT-1326\"}, {\"attribute_display_order_id\": 15, \"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\": \"1331\", \"name\": \"Stop Time Update\", \"ref_number\": \"AT-1331\"}, {\"attribute_display_order_id\": 16, \"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\": \"1332\", \"name\": \"Stop Sequence\", \"ref_number\": \"AT-1332\"}, {\"attribute_display_order_id\": 17, \"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\": \"1333\", \"name\": \"Stop ID\", \"ref_number\": \"AT-1333\"}, {\"attribute_display_order_id\": 18, \"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\": \"1338\", \"name\": \"Departure\", \"ref_number\": \"AT-1338\"}, {\"attribute_display_order_id\": 19, \"db_format\": \"int64()\", \"db_name\": \"stop_time_update.arrival.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\": \"1340\", \"name\": \"Departure Time\", \"ref_number\": \"AT-1340\"}, {\"attribute_display_order_id\": 21, \"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\": \"1334\", \"name\": \"Arrival\", \"ref_number\": \"AT-1334\"}, {\"attribute_display_order_id\": 22, \"db_format\": \"int64()\", \"db_name\": \"stop_time_update.arrival.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\": \"1336\", \"name\": \"Arrival Time\", \"ref_number\": \"AT-1336\"}]", "cache_last_updated": null, "cache_url": null, "created": "2025-08-04T00:51:39.806575", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "<p>GTFS Realtime Yarra Trams Trip Update data feed provides real time arrival, departure and delay information of a trip for tram services in Melbourne, Victoria.&nbsp;<span style=\"text-align: var(--bs-body-text-align);\">Note: This API endpoint has a rate limit of 20-27 calls per minute (depending on the data size) and caching time of 30 seconds.</span></p>", "edc_sync": true, "filesize": 2303, "format": "API", "hash": "", "historical": false, "id": "1ae333b0-b822-4137-9060-7b0f9843bf4e", "last_modified": "2025-08-04T00:51:39.769505", "last_updated_date": "2025-08-05T00:00:00", "metadata_modified": "2025-10-24T04:12:02.294649", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Trip Updates - Yarra Trams", "open_dataset_title": "GTFS Realtime - Trip Updates - Yarra Trams", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 3, "publication_date": "2023-08-03T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/1ae333b0-b822-4137-9060-7b0f9843bf4e/download/gtfsr_yarra_trams_trip_updates.openapi.json", "url_type": null, "zip_extract": false}, {"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/tram/service-alerts/", "attributes": "[{\"attribute_display_order_id\": 1, \"db_format\": \"FeedHeader()\", \"db_name\": \"header\", \"definition\": \"Metadata about a feed, included in feed messages.\", \"fixed_values\": \"\", \"id\": \"1378\", \"name\": \"Feed Header\", \"ref_number\": \"AT-1378\"}, {\"attribute_display_order_id\": 2, \"db_format\": \"STRING()\", \"db_name\": \"header.gtfs_realtime_version\", \"definition\": \"Version of the feed specification. The current version is 2.0.\", \"fixed_values\": \"\", \"id\": \"1380\", \"name\": \"GTFS Realtime Version\", \"ref_number\": \"AT-1380\"}, {\"attribute_display_order_id\": 3, \"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\": \"1381\", \"name\": \"Incrementality\", \"ref_number\": \"AT-1381\"}, {\"attribute_display_order_id\": 4, \"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\": \"1382\", \"name\": \"Feed Header Timestamp\", \"ref_number\": \"AT-1382\"}, {\"attribute_display_order_id\": 5, \"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\": \"1379\", \"name\": \"Feed Entity\", \"ref_number\": \"AT-1379\"}, {\"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\": \"1383\", \"name\": \"Feed Entity ID\", \"ref_number\": \"AT-1383\"}, {\"attribute_display_order_id\": 7, \"db_format\": \"Alert()\", \"db_name\": \"entity.alert\", \"definition\": \"An alert, indicating some sort of incident in the public transit network.\", \"fixed_values\": \"\", \"id\": \"1385\", \"name\": \"Feed Entity Alert\", \"ref_number\": \"AT-1385\"}, {\"attribute_display_order_id\": 8, \"db_format\": \"EntitySelector()\", \"db_name\": \"alert.informed_entity\", \"definition\": \"Entities whose users we should notify of this alert. At least one informed_entity must be provided. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"1389\", \"name\": \"Alert Informed Entity\", \"ref_number\": \"AT-1389\"}, {\"attribute_display_order_id\": 9, \"db_format\": \"STRING()\", \"db_name\": \"alert.informed_entity.route_id\", \"definition\": \"The route_id from the GTFS that this selector refers to. If direction_id is provided, route_id must also be provided.\", \"fixed_values\": \"\", \"id\": \"1391\", \"name\": \"Alert Informed Entity Route ID\", \"ref_number\": \"AT-1391\"}, {\"attribute_display_order_id\": 10, \"db_format\": \"TranslatedString()\", \"db_name\": \"alert.url\", \"definition\": \"The URL which provides additional information about the alert.\", \"fixed_values\": \"\", \"id\": \"1404\", \"name\": \"Alert URL\", \"ref_number\": \"AT-1404\"}, {\"attribute_display_order_id\": 11, \"db_format\": \"Translation()\", \"db_name\": \"alert.url.translation\", \"definition\": \"A localized string mapped to a language. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"1405\", \"name\": \"Alert URL Translation\", \"ref_number\": \"AT-1405\"}, {\"attribute_display_order_id\": 12, \"db_format\": \"STRING()\", \"db_name\": \"alert.url.translation.text\", \"definition\": \"A UTF-8 string containing the message.\", \"fixed_values\": \"\", \"id\": \"1406\", \"name\": \"Alert URL Translation Text\", \"ref_number\": \"AT-1406\"}, {\"attribute_display_order_id\": 13, \"db_format\": \"STRING()\", \"db_name\": \"alert.url.translation.language\", \"definition\": \"BCP-47 language code. Can be omitted if the language is unknown or if no internationalization is done at all for the feed. At most one translation is allowed to have an unspecified language tag - if there is more than one translation, the language must be provided.\", \"fixed_values\": \"\", \"id\": \"1407\", \"name\": \"Alert URL Translation Language\", \"ref_number\": \"AT-1407\"}, {\"attribute_display_order_id\": 14, \"db_format\": \"TranslatedString()\", \"db_name\": \"alert.header_text\", \"definition\": \"Header for the alert. This plain-text string will be highlighted, for example in boldface.\", \"fixed_values\": \"\", \"id\": \"1408\", \"name\": \"Alert Header Text\", \"ref_number\": \"AT-1408\"}, {\"attribute_display_order_id\": 15, \"db_format\": \"Translation()\", \"db_name\": \"alert.header_text.translation\", \"definition\": \"A localized string mapped to a language. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"1409\", \"name\": \"Alert Header Text Translation\", \"ref_number\": \"AT-1409\"}, {\"attribute_display_order_id\": 16, \"db_format\": \"STRING()\", \"db_name\": \"alert.header_text.translation.language\", \"definition\": \"BCP-47 language code. Can be omitted if the language is unknown or if no internationalization is done at all for the feed. At most one translation is allowed to have an unspecified language tag - if there is more than one translation, the language must be provided.\", \"fixed_values\": \"\", \"id\": \"1411\", \"name\": \"Alert Header Text Translation Language\", \"ref_number\": \"AT-1411\"}, {\"attribute_display_order_id\": 17, \"db_format\": \"TranslatedString()\", \"db_name\": \"alert.description_text\", \"definition\": \"Description for the alert. This plain-text string will be formatted as the body of the alert (or shown on an explicit \\\"expand\\\" request by the user). The information in the description should add to the information of the header.\", \"fixed_values\": \"\", \"id\": \"1412\", \"name\": \"Alert Description Text\", \"ref_number\": \"AT-1412\"}, {\"attribute_display_order_id\": 18, \"db_format\": \"Translation()\", \"db_name\": \"alert.header_text.translation\", \"definition\": \"A localized string mapped to a language. This field can be repeated as many times as needed.\", \"fixed_values\": \"\", \"id\": \"1413\", \"name\": \"Alert Description Text Translation\", \"ref_number\": \"AT-1413\"}, {\"attribute_display_order_id\": 19, \"db_format\": \"STRING()\", \"db_name\": \"alert.header_text.translation.text\", \"definition\": \"A UTF-8 string containing the message.\", \"fixed_values\": \"\", \"id\": \"1414\", \"name\": \"Alert Description Text Translation Text\", \"ref_number\": \"AT-1414\"}, {\"attribute_display_order_id\": 20, \"db_format\": \"STRING()\", \"db_name\": \"alert.header_text.translation.language\", \"definition\": \"BCP-47 language code. Can be omitted if the language is unknown or if no internationalization is done at all for the feed. At most one translation is allowed to have an unspecified language tag - if there is more than one translation, the language must be provided.\", \"fixed_values\": \"\", \"id\": \"1415\", \"name\": \"Alert Description Text Translation Language\", \"ref_number\": \"AT-1415\"}]", "cache_last_updated": null, "cache_url": null, "created": "2025-08-04T00:54:52.082640", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "<p>GTFS Realtime Yarra Trams Service Alerts data feed provides real time information about disruptions affecting tram services including cancellations or unforeseen events affecting a stop, route or the entire network in Melbourne, Victoria.&nbsp;<span style=\"text-align: var(--bs-body-text-align);\">Note: This API endpoint has a rate limit of 20-27 calls per minute (depending on the data size) and caching time of 30 seconds.</span></p><p><br></p>", "edc_sync": true, "filesize": 2390, "format": "API", "hash": "", "historical": false, "id": "c1affc17-233b-4124-9e43-457267595d65", "last_modified": "2025-08-04T00:54:52.041574", "last_updated_date": "2025-08-05T00:00:00", "metadata_modified": "2025-10-24T04:12:02.294725", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Service Alerts - Yarra Trams", "open_dataset_title": "GTFS Realtime - Service Alerts - Yarra Trams", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 4, "publication_date": "2023-08-03T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/c1affc17-233b-4124-9e43-457267595d65/download/gtfsr_yarra_trams_service_alerts.openapi.json", "url_type": null, "zip_extract": false}, {"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/tram/vehicle-positions/", "attributes": "[{\"attribute_display_order_id\": 1, \"db_format\": \"FeedHeader()\", \"db_name\": \"header\", \"definition\": \"Metadata about a feed, included in feed messages.\", \"fixed_values\": \"\", \"id\": \"1346\", \"name\": \"Feed Header\", \"ref_number\": \"AT-1346\"}, {\"attribute_display_order_id\": 2, \"db_format\": \"STRING()\", \"db_name\": \"header.gtfs_realtime_version\", \"definition\": \"Version of the feed specification. The current version is 2.0.\", \"fixed_values\": \"\", \"id\": \"1348\", \"name\": \"GTFS Realtime Version\", \"ref_number\": \"AT-1348\"}, {\"attribute_display_order_id\": 3, \"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\": \"1349\", \"name\": \"Incrementality\", \"ref_number\": \"AT-1349\"}, {\"attribute_display_order_id\": 4, \"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\": \"1350\", \"name\": \"Feed Header Timestamp\", \"ref_number\": \"AT-1350\"}, {\"attribute_display_order_id\": 5, \"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\": \"1347\", \"name\": \"Feed Entity\", \"ref_number\": \"AT-1347\"}, {\"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\": \"1351\", \"name\": \"Feed Entity ID\", \"ref_number\": \"AT-1351\"}, {\"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\": \"1352\", \"name\": \"Feed Entity Is Deleted\", \"ref_number\": \"AT-1352\"}, {\"attribute_display_order_id\": 8, \"db_format\": \"VehiclePosition()\", \"db_name\": \"entity.vehicle\", \"definition\": \"Data about the realtime position of a vehicle. At least one of the fields trip_update, vehicle, or alert must be provided - all these fields cannot be empty.\", \"fixed_values\": \"\", \"id\": \"1353\", \"name\": \"Feed Entity Vehicle Position\", \"ref_number\": \"AT-1353\"}, {\"attribute_display_order_id\": 9, \"db_format\": \"TripDescriptor()\", \"db_name\": \"vehicle.trip\", \"definition\": \"The Trip that this vehicle is serving. Can be empty or partial if the vehicle can not be identified with a given trip instance.\", \"fixed_values\": \"\", \"id\": \"1354\", \"name\": \"Vehicle Trip\", \"ref_number\": \"AT-1354\"}, {\"attribute_display_order_id\": 10, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.trip.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\": \"1355\", \"name\": \"Vehicle Trip ID\", \"ref_number\": \"AT-1355\"}, {\"attribute_display_order_id\": 11, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.trip.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\": \"1356\", \"name\": \"Vehicle Trip Route ID\", \"ref_number\": \"AT-1356\"}, {\"attribute_display_order_id\": 12, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.trip.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\": \"1358\", \"name\": \"Vehicle Trip Start Time\", \"ref_number\": \"AT-1358\"}, {\"attribute_display_order_id\": 13, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.trip.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\": \"1359\", \"name\": \"Vehicle Trip Start Date\", \"ref_number\": \"AT-1359\"}, {\"attribute_display_order_id\": 14, \"db_format\": \"ENUM()\", \"db_name\": \"vehicle.trip.schedule_relationship\", \"definition\": \"<p>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 they identify the matching trip instance. Options include:</p>\\n<p>-SCHEDULED: Trip that is running in accordance with its GTFS schedule, or is close enough to the scheduled trip to be associated with it.</p>\\n<p>-ADDED:  An extra trip that was added in addition to a running schedule, for example, to replace a broken vehicle or to respond to sudden passenger load.</p>\\n<p>-UNSCHEDULED: A trip that is running with no schedule associated to it - this value is used to identify trips defined in GTFS frequencies.txt with exact_times = 0. It should not be used to describe trips not defined in GTFS frequencies.txt, or trips in GTFS frequencies.txt with exact_times = 1.</p>\\n<p>-CANCELED: A trip that existed in the schedule but was removed.</p>\", \"fixed_values\": \"SCHEDULED, ADDED, UNSCHEDULED, CANCELED, DUPLICATED, DELETED\", \"id\": \"1360\", \"name\": \"Trip Update Trip Schedule Relationship\", \"ref_number\": \"AT-1360\"}, {\"attribute_display_order_id\": 15, \"db_format\": \"VehicleDescriptor()\", \"db_name\": \"vehicle.vehicle\", \"definition\": \"Additional information on the vehicle that is serving this trip. Each entry should have a unique vehicle ID.\", \"fixed_values\": \"\", \"id\": \"1361\", \"name\": \"Vehicle Position Vehicle\", \"ref_number\": \"AT-1361\"}, {\"attribute_display_order_id\": 16, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.vehicle.id\", \"definition\": \"Internal system identification of the vehicle. Should be unique per vehicle, and is used for tracking the vehicle as it proceeds through the system. This id should not be made visible to the end-user; for that purpose use the label field.\", \"fixed_values\": \"\", \"id\": \"1362\", \"name\": \"Vehicle Position Vehicle ID\", \"ref_number\": \"AT-1362\"}, {\"attribute_display_order_id\": 17, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.vehicle.label\", \"definition\": \"User visible label, i.e., something that must be shown to the passenger to help identify the correct vehicle.\", \"fixed_values\": \"\", \"id\": \"1363\", \"name\": \"Vehicle Position Vehicle Label\", \"ref_number\": \"AT-1363\"}, {\"attribute_display_order_id\": 18, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.vehicle.license_plate\", \"definition\": \"The license plate of the vehicle.\", \"fixed_values\": \"\", \"id\": \"1364\", \"name\": \"Vehicle Position Vehicle License Plate\", \"ref_number\": \"AT-1364\"}, {\"attribute_display_order_id\": 19, \"db_format\": \"Position()\", \"db_name\": \"vehicle.position\", \"definition\": \"Current position of this vehicle.\", \"fixed_values\": \"\", \"id\": \"1365\", \"name\": \"Position\", \"ref_number\": \"AT-1365\"}, {\"attribute_display_order_id\": 20, \"db_format\": \"FLOAT()\", \"db_name\": \"vehicle.position.latitude\", \"definition\": \"Degrees North, in the WGS-84 coordinate system.\", \"fixed_values\": \"\", \"id\": \"1366\", \"name\": \"Position Latitude\", \"ref_number\": \"AT-1366\"}, {\"attribute_display_order_id\": 21, \"db_format\": \"FLOAT()\", \"db_name\": \"vehicle.position.longitude\", \"definition\": \"Degrees East, in the WGS-84 coordinate system.\", \"fixed_values\": \"\", \"id\": \"1367\", \"name\": \"Position Longitude\", \"ref_number\": \"AT-1367\"}, {\"attribute_display_order_id\": 22, \"db_format\": \"STRING()\", \"db_name\": \"vehicle.stop_id\", \"definition\": \"Identifies the current stop. The value must be the same as in stops.txt in the corresponding GTFS feed.\", \"fixed_values\": \"\", \"id\": \"1372\", \"name\": \"Stop ID\", \"ref_number\": \"AT-1372\"}, {\"attribute_display_order_id\": 23, \"db_format\": \"ENUM()\", \"db_name\": \"vehicle.current_status\", \"definition\": \"<p>The exact status of the vehicle with respect to the current stop. Ignored if current_stop_sequence is missing. Options include:</p>\\n<p>-INCOMING_AT: The vehicle is just about to arrive at the stop (on a stop display, the vehicle symbol typically flashes).</p>\\n<p>-STOPPED_AT: The vehicle is standing at the stop.</p>\\n<p>-IN_TRANSIT_TO: The vehicle has departed the previous stop and is in transit.</p>\", \"fixed_values\": \"INCOMING_AT, STOPPED_AT, IN_TRANSIT_TO\", \"id\": \"1373\", \"name\": \"Current Status\", \"ref_number\": \"AT-1373\"}, {\"attribute_display_order_id\": 24, \"db_format\": \"int64()\", \"db_name\": \"vehicle.timestamp\", \"definition\": \"Moment at which the vehicle's position was measured. In POSIX time (i.e., number of seconds since January 1st 1970 00:00:00 UTC).\", \"fixed_values\": \"\", \"id\": \"1374\", \"name\": \"Timestamp\", \"ref_number\": \"AT-1374\"}]", "cache_last_updated": null, "cache_url": null, "created": "2025-08-04T00:54:54.897378", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "<p><span style=\"text-align: var(--bs-body-text-align);\">GTFS Realtime Yarra Trams Vehicle Position data feed provides live location information for tram services in Melbourne, Victoria.&nbsp;</span><span style=\"text-align: var(--bs-body-text-align);\">Note: This API endpoint has a rate limit of 20-27 calls per minute (depending on the data size) and caching time of 30 seconds.</span><br></p>", "edc_sync": true, "filesize": 2343, "format": "API", "hash": "", "historical": false, "id": "a42c2344-38da-4c52-805b-36004dea3cac", "last_modified": "2025-08-04T00:54:54.850816", "last_updated_date": "2025-08-05T00:00:00", "metadata_modified": "2025-10-24T04:12:02.294807", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Vehicle Positions - Yarra Trams", "open_dataset_title": "GTFS Realtime - Vehicle Positions - Yarra Trams", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 5, "publication_date": "2023-08-05T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/a42c2344-38da-4c52-805b-36004dea3cac/download/gtfsr_yarra_trams_vehicle_positions.openapi.json", "url_type": null, "zip_extract": false}, {"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/bus/trip-updates/", "attributes": "[{\"attribute_display_order_id\": 1, \"db_format\": \"FeedHeader()\", \"db_name\": \"header\", \"definition\": \"Metadata about a feed, included in feed messages.\", \"fixed_values\": \"\", \"id\": \"7947\", \"name\": \"Feed Header\", \"ref_number\": \"AT-7947\"}, {\"attribute_display_order_id\": 2, \"db_format\": \"STRING()\", \"db_name\": \"header.gtfs_realtime_version\", \"definition\": \"Version of the feed specification. The current version is 2.0.\", \"fixed_values\": \"\", \"id\": \"7944\", \"name\": \"GTFS Realtime Version\", \"ref_number\": \"AT-7944\"}, {\"attribute_display_order_id\": 3, \"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\": \"7949\", \"name\": \"Incrementality\", \"ref_number\": \"AT-7949\"}, {\"attribute_display_order_id\": 4, \"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\": \"7950\", \"name\": \"Feed Header Timestamp\", \"ref_number\": \"AT-7950\"}, {\"attribute_display_order_id\": 5, \"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\": \"7948\", \"name\": \"Feed Entity\", \"ref_number\": \"AT-7948\"}, {\"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\": \"7952\", \"name\": \"Feed Entity ID\", \"ref_number\": \"AT-7952\"}, {\"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\": \"7953\", \"name\": \"Feed Entity Is Deleted\", \"ref_number\": \"AT-7953\"}, {\"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\": \"7954\", \"name\": \"Feed Entity Trip Update\", \"ref_number\": \"AT-7954\"}, {\"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\": \"7955\", \"name\": \"Trip Update Trip\", \"ref_number\": \"AT-7955\"}, {\"attribute_display_order_id\": 10, \"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\": \"7958\", \"name\": \"Trip Update Trip ID\", \"ref_number\": \"AT-7958\"}, {\"attribute_display_order_id\": 11, \"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\": \"7959\", \"name\": \"Trip Update Trip Route ID\", \"ref_number\": \"AT-7959\"}, {\"attribute_display_order_id\": 12, \"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\": \"7960\", \"name\": \"Trip Update Trip Start Time\", \"ref_number\": \"AT-7960\"}, {\"attribute_display_order_id\": 13, \"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\": \"7961\", \"name\": \"Trip Update Trip Start Date\", \"ref_number\": \"AT-7961\"}, {\"attribute_display_order_id\": 14, \"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\": \"7969\", \"name\": \"Trip Update Trip Schedule Relationship\", \"ref_number\": \"AT-7969\"}, {\"attribute_display_order_id\": 15, \"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\": \"7956\", \"name\": \"Stop Time Update\", \"ref_number\": \"AT-7956\"}, {\"attribute_display_order_id\": 16, \"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\": \"7963\", \"name\": \"Stop Sequence\", \"ref_number\": \"AT-7963\"}, {\"attribute_display_order_id\": 17, \"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\": \"7964\", \"name\": \"Stop ID\", \"ref_number\": \"AT-7964\"}, {\"attribute_display_order_id\": 18, \"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\": \"7966\", \"name\": \"Departure\", \"ref_number\": \"AT-7966\"}, {\"attribute_display_order_id\": 19, \"db_format\": \"int64()\", \"db_name\": \"stop_time_update.departure.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\": \"7972\", \"name\": \"Departure Time\", \"ref_number\": \"AT-7972\"}, {\"attribute_display_order_id\": 20, \"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\": \"7974\", \"name\": \"Schedule Relationship\", \"ref_number\": \"AT-7974\"}, {\"attribute_display_order_id\": 21, \"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\": \"7962\", \"name\": \"Arrival Time\", \"ref_number\": \"AT-7962\"}, {\"attribute_display_order_id\": 21, \"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\": \"7965\", \"name\": \"Arrival\", \"ref_number\": \"AT-7965\"}]", "cache_last_updated": null, "cache_url": null, "created": "2025-08-04T01:16:20.180569", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "<p>GTFS Realtime Trip Update feed for Metro Bus provides real-time\r\narrival, departure and delay information of a trip for metro buses in\r\nMelbourne, Victoria. The feed doesn\u2019t include train replacement buses, service\r\ndeviations (skipping stops or changing routes), platform information or\r\ncancellations.&nbsp;<span style=\"font-weight: var(--bs-body-font-weight); text-align: var(--bs-body-text-align);\">Note: This API endpoint has a rate limit of 20-27 calls per minute (depending on the data size) and caching time of 30 seconds.</span></p>", "edc_sync": true, "filesize": 2215, "format": "API", "hash": "", "historical": false, "id": "c2cbf93f-5d29-4f91-86a9-95811291996d", "last_modified": "2025-08-04T01:16:20.117916", "last_updated_date": "2025-09-23T00:00:00", "metadata_modified": "2025-10-24T04:12:02.294882", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Trip Updates - Metro Bus", "open_dataset_title": "GTFS Realtime - Trip Updates - Metro Bus", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 6, "publication_date": "2022-06-01T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/c2cbf93f-5d29-4f91-86a9-95811291996d/download/gtfsr_metro_bus_trip_updates.openapi.json", "url_type": null, "zip_extract": false}, {"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/vline/trip-updates", "cache_last_updated": null, "cache_url": null, "created": "2025-10-07T02:31:55.744915", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "GTFS Realtime V/Line Train Trip Update data feed provides real time arrival, departure and delay information of a trip for regional passenger train services in Victoria. The feed doesn\u2019t include train replacement buses, service deviations (skipping stops or changing routes) and platform information. \r\nNote: This API endpoint has a rate limit of 20-27 calls per minute (depending on the data size) and caching time of 30 seconds.", "edc_sync": false, "filesize": 1379, "format": "API", "hash": "", "historical": false, "id": "73a44a7e-ae3c-4ed3-bfbb-0891379b109b", "last_modified": "2025-10-07T03:14:16.352554", "last_updated_date": "2025-10-07T00:00:00", "metadata_modified": "2025-10-24T04:12:02.296039", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Trip Updates - V/Line (Regional Train)", "open_dataset_title": "GTFS Realtime - Trip Updates - V/Line (Regional Train)", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 7, "publication_date": "2025-10-07T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/73a44a7e-ae3c-4ed3-bfbb-0891379b109b/download/gtfsr_vline_train_trip_updates.openapi.json", "url_type": null, "zip_extract": false}, {"api_url": "https://api.opendata.transport.vic.gov.au/opendata/public-transport/gtfs/realtime/v1/vline/vehicle-positions", "cache_last_updated": null, "cache_url": null, "created": "2025-10-07T03:16:05.107188", "datastore_active": false, "datastore_contains_all_records_of_source_file": false, "description": "GTFS Realtime V/Line Train Vehicle Position data feed provides live location information for regional passenger train services in Victoria.\r\nNote: This API endpoint has a rate limit of 20-27 calls per minute (depending on the data size) and caching time of 30 seconds", "edc_sync": false, "filesize": 1387, "format": "API", "hash": "", "historical": false, "id": "b701e9c7-ff39-4d7e-b63c-37c340678160", "last_modified": "2025-10-07T03:22:27.361038", "last_updated_date": "2025-10-07T00:00:00", "metadata_modified": "2025-10-24T04:12:02.297263", "mimetype": "application/json", "mimetype_inner": null, "name": "GTFS Realtime - Vehicle Positions - V/Line (Regional Train)", "open_dataset_title": "GTFS Realtime - Vehicle Positions - V/Line (Regional Train)", "package_id": "53d596e8-7d96-4ef9-85ec-870ace4442fe", "position": 8, "publication_date": "2025-10-07T00:00:00", "resource_type": null, "size": null, "source": "", "state": "active", "url": "https://opendata.transport.vic.gov.au/dataset/2d9a7228-5b81-40d3-8075-ae7a3da42198/resource/b701e9c7-ff39-4d7e-b63c-37c340678160/download/gtfsr_vline_train_vehicle_positions.openapi.json", "url_type": null, "zip_extract": false}], "tags": [{"display_name": "gtfs realtime", "id": "ad5b5fbb-4205-4eea-bf2e-7283c95d06a6", "name": "gtfs realtime", "state": "active", "vocabulary_id": null}, {"display_name": "gtfs-r", "id": "7b0e72f7-5de2-4fd2-a361-e43e3d0672e0", "name": "gtfs-r", "state": "active", "vocabulary_id": null}, {"display_name": "public transport", "id": "aef2e4db-82ad-4768-9417-4d62cb69d612", "name": "public transport", "state": "active", "vocabulary_id": null}, {"display_name": "service alerts", "id": "77257eeb-c28a-431c-9797-340153beaf15", "name": "service alerts", "state": "active", "vocabulary_id": null}, {"display_name": "trip update", "id": "adbf0174-0df5-43a5-80e0-6371b4848249", "name": "trip update", "state": "active", "vocabulary_id": null}, {"display_name": "vehicle position", "id": "f255fb58-e4ec-45a3-bb61-bc9f51cf53e2", "name": "vehicle position", "state": "active", "vocabulary_id": null}], "groups": [], "relationships_as_subject": [], "relationships_as_object": []}}