While poking around the GTFS-R feeds I’ve noticed that the Metro feed quite often shows per-carriage features that don’t exist - toilets, quiet carriages and luggage racks.
Curiously, while all of those features are potentially present in the new Mariyung sets they are never shown - in fact all of the associated metadata just doesn’t exist. I assume this is because the Mariyung trains share the /v2/gtfs/vehiclepos/sydneytrains/ feed and the feed itself doesn’t know how to present those fields?
Sydney Metro GTFS-R example
id: “0/2026-09-12T03:38:52Z/RS019”
vehicle {
trip {
trip_id: “M1-O-SYD_UP-CUD_UP-1-20260912-024706:X”
start_time: “12:47:06”
start_date: “20260912”
schedule_relationship: ADDED
route_id: “SMNW_M1”
direction_id: 0
}
position {
latitude: -33.7145195
longitude: 150.935776
bearing: 337.38
speed: 14
}
current_stop_sequence: 18
current_status: IN_TRANSIT_TO
timestamp: 1789184332
congestion_level: RUNNING_SMOOTHLY
stop_id: “2153403”
vehicle {
id: “RS019”
label: “RS019”
license_plate: “RS019”
[transit_realtime.tfnsw_vehicle_descriptor] {
air_conditioned: true
wheelchair_accessible: 1
vehicle_model: “Alstom Metropolis”
special_vehicle_attributes: 0
}
}
occupancy_status: MANY_SEATS_AVAILABLE
[transit_realtime.consist] {
name: “DTC1”
position_in_consist: 0
occupancy_status: MANY_SEATS_AVAILABLE
quiet_carriage: false
toilet: NONE
luggage_rack: false
}
[transit_realtime.consist] {
name: “MPC1”
position_in_consist: 0
occupancy_status: MANY_SEATS_AVAILABLE
quiet_carriage: true
toilet: NONE
luggage_rack: false
}
[transit_realtime.consist] {
name: “MC1”
position_in_consist: 0
occupancy_status: FEW_SEATS_AVAILABLE
quiet_carriage: false
toilet: NORMAL
luggage_rack: false
}
[transit_realtime.consist] {
name: “MC2”
position_in_consist: 0
occupancy_status: FEW_SEATS_AVAILABLE
quiet_carriage: false
toilet: NONE
luggage_rack: true
}
[transit_realtime.consist] {
name: “MPC2”
position_in_consist: 0
occupancy_status: FEW_SEATS_AVAILABLE
quiet_carriage: true <---- incorrect
toilet: NORMAL <---- incorrect
luggage_rack: true <---- incorrect
}
[transit_realtime.consist] {
name: “DTC2”
position_in_consist: 0
occupancy_status: MANY_SEATS_AVAILABLE
quiet_carriage: true
toilet: NONE
luggage_rack: true
}
}
Sydney Trains GTFS-R example (Mariyung)
id: “186”
vehicle {
trip {
trip_id: “W754.1399.147.130.D.6.91096162”
schedule_relationship: SCHEDULED
route_id: “BMT_2”
}
position {
latitude: -33.7096977
longitude: 150.316299 <---- No speed, bearing
}
timestamp: 1789184305
congestion_level: UNKNOWN_CONGESTION_LEVEL
stop_id: “Mountains.KT8 Loc”
vehicle {
id: “7829.9068.8722.1591.2399.1381”
label: "12:04 Lithgow Station to Blacktown Station "
[transit_realtime.tfnsw_vehicle_descriptor] {
vehicle_model: “D”
}
}
occupancy_status: MANY_SEATS_AVAILABLE
[transit_realtime.consist] {
position_in_consist: 1
occupancy_status: MANY_SEATS_AVAILABLE <---- No quiet carriage, toilet, luggage rack
}
[transit_realtime.consist] {
position_in_consist: 2
occupancy_status: MANY_SEATS_AVAILABLE
}
[transit_realtime.consist] {
position_in_consist: 3
occupancy_status: MANY_SEATS_AVAILABLE
}
[transit_realtime.consist] {
position_in_consist: 4
occupancy_status: MANY_SEATS_AVAILABLE
}
[transit_realtime.consist] {
position_in_consist: 5
occupancy_status: MANY_SEATS_AVAILABLE
}
[transit_realtime.consist] {
position_in_consist: 6
occupancy_status: MANY_SEATS_AVAILABLE
}
}
Best regards,
Andy