| // Copyright 2012 Google Inc., Stichting OpenGeo, avm99963 |
| // |
| // The content of this file is licensed under the Creative Commons Attribution |
| // 3.0 License. |
| // |
| // Protocol definition file for a GTFS feed. |
| |
| syntax = "proto3"; |
| |
| import "google/protobuf/any.proto"; |
| package gtfs; |
| |
| message FeedMessage { |
| // Metadata about this feed and feed message. |
| FeedHeader header = 1; |
| |
| // Contents of the feed. |
| repeated FeedEntity entity = 2; |
| } |
| |
| // Metadata about a feed, included in feed messages. |
| message FeedHeader { |
| // Version of the feed specification. |
| // The current version is 1.0. |
| string gtfs_version = 1; |
| |
| // The feed_publisher_name field contains the full name of the organization that publishes the feed. |
| string feed_publisher_name = 2; |
| |
| // The feed_publisher_url field contains the URL of the feed publishing organization's website. |
| string feed_publisher_url = 3; |
| |
| // The feed_lang field contains a IETF BCP 47 language code specifying the default language used for the text in this feed. |
| string feed_lang = 4; |
| |
| // The feed provides complete and reliable schedule information for service in the period from the beginning of the |
| // feed_start_date day to the end of the feed_end_date day in YYYYMMDD |
| string feed_start_date = 5; |
| string feed_end_date = 6; |
| |
| // The feed publisher can specify a string here that indicates the current version of their GTFS feed. |
| string feed_version = 7; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| // A definition (or update) of an entity in the transit feed. |
| message FeedEntity { |
| // The ids are used only to provide incrementality support. The id should be |
| // unique within a FeedMessage. Consequent FeedMessages may contain |
| // FeedEntities with the same id. In case of a DIFFERENTIAL update the new |
| // FeedEntity with some id will replace the old FeedEntity with the same id |
| // (or delete it - see is_deleted below). |
| // The actual GTFS entities (e.g. stations, routes, trips) referenced by the |
| // feed must be specified by explicit selectors (see EntitySelector below for |
| // more info). |
| string id = 1; |
| |
| // Whether this entity is to be deleted. Relevant only for incremental |
| // fetches. |
| bool is_deleted = 2; |
| |
| // Data about the entity itself. Exactly one of the following fields must be |
| // present (unless the entity is being deleted). |
| oneof element { |
| Agency agency = 3; |
| Stop stop = 4; |
| Route route = 5; |
| Trip trip = 6; |
| StopTime stop_time = 7; |
| Calendar calendar = 8; |
| CalendarDate calendar_date = 9; |
| FareAttribute fare_attribute = 10; |
| FareRule fare_rule = 11; |
| Shape shape = 12; |
| Frequency frequency = 13; |
| Transfer transfer = 14; |
| } |
| |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| // |
| // Entities used in the feed. |
| // |
| |
| message Agency { |
| // The agency_id field is an ID that uniquely identifies a transit agency. |
| string agency_id = 1; |
| |
| // The agency_name field contains the full name of the transit agency. |
| string agency_name = 2; |
| |
| // The agency_url field contains the URL of the transit agency. |
| string agency_url = 3; |
| |
| // The agency_timezone field contains the timezone where the transit agency is located. |
| string agency_timezone = 4; |
| |
| // The agency_lang field contains a two-letter ISO 639-1 code for the primary language used by this transit agency. |
| string agency_lang = 5; |
| |
| // The agency_phone field contains a single voice telephone number for the specified agency. |
| string agency_phone = 6; |
| |
| // The agency_fare_url specifies the URL of a web page that allows a rider to purchase tickets or other fare instruments for that agency online. |
| string agency_fare_url = 7; |
| |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message Stop { |
| // The stop_id field contains an ID that uniquely identifies a stop or station. |
| // Multiple routes may use the same stop. stop_id is dataset unique. |
| string stop_id = 1; |
| |
| // The stop_code field contains short text or a number that uniquely identifies the stop for passengers. |
| string stop_code = 2; |
| |
| // The stop_name field contains the name of a stop or station. |
| string stop_name = 3; |
| |
| // The stop_desc field contains a description of a stop. |
| string stop_desc = 4; |
| |
| // Degrees North, in the WGS-84 coordinate system. |
| float latitude = 5; |
| |
| // Degrees East, in the WGS-84 coordinate system. |
| float longitude = 6; |
| |
| string zone_id = 7; |
| string stop_url = 8; |
| enum LocationType { |
| // Stop (or Platform). A location where passengers board or disembark from a transit vehicle. Is called a platform when defined within a parent_station. |
| STOP = 0; |
| |
| // Station. A physical structure or area that contains one or more platform. |
| STATION = 1; |
| |
| // Entrance/Exit. A location where passengers can enter or exit a station from the street. If an entrance/exit belongs to multiple stations, it can be linked by pathways to both, but the data provider must pick one of them as parent. |
| ENTRANCE= 2; |
| |
| // Generic Node. A location within a station, not matching any other location_type, which can be used to link together pathways define in pathways.txt. |
| GENERIC_NODE = 3; |
| |
| // Boarding Area. A specific location on a platform, where passengers can board and/or alight vehicles. |
| BOARDING_AREA = 4; |
| } |
| LocationType location_type = 9; |
| |
| string parent_station = 10; |
| string agency_timezone = 11; |
| |
| enum WheelchairBoarding { |
| // no accessibility information for the stop |
| UNKNOWN = 0; |
| |
| // some vehicles at this stop can be boarded by a rider in a wheelchair |
| ACCESSIBLE = 1; |
| |
| // wheelchair boarding is not possible at this stop |
| NOT_ACCESSIBLE = 2; |
| } |
| // The exact status of the vehicle with respect to the current stop. |
| // Ignored if current_stop_sequence is missing. |
| WheelchairBoarding wheelchair_boarding = 12; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message Route { |
| // The route_id field contains an ID that uniquely identifies a route. |
| // The route_id is dataset unique. |
| string route_id = 1; |
| |
| // The agency_id field defines an agency for the specified route. |
| string agency_id = 2; |
| |
| // The route_short_name contains the short name of a route. |
| string route_short_name = 3; |
| |
| // The route_long_name contains the full name of a route. |
| string route_long_name = 4; |
| |
| // The route_desc field contains a description of a route. |
| string route_desc = 5; |
| |
| // The route_type field describes the type of transportation used on a route. |
| enum RouteType { |
| // Tram, Streetcar, Light rail. Any light rail or street level system within a metropolitan area. |
| TRAM = 0; |
| |
| // Subway, Metro. Any underground rail system within a metropolitan area. |
| SUBWAY = 1; |
| |
| // Rail. Used for intercity or long-distance travel. |
| RAIL = 2; |
| |
| // Bus. Used for short- and long-distance bus routes. |
| BUS = 3; |
| |
| // Ferry. Used for short- and long-distance boat service. |
| FERRY = 4; |
| |
| // Cable car. Used for street-level cable cars where the cable runs beneath the car. |
| CABLECAR = 5; |
| |
| // Gondola, Suspended cable car. Typically used for aerial cable cars where the car is suspended from the cable. |
| GONDOLA = 6; |
| |
| // Funicular. Any rail system designed for steep inclines. |
| FUNICULAR = 7; |
| } |
| RouteType route_type = 6; |
| |
| // The route_url field contains the URL of a web page about that particular route. |
| string route_url = 7; |
| |
| // In systems that have colors assigned to routes, the route_color field defines a color that corresponds to a route. |
| // The color must be provided as a six-character hexadecimal number, for example, 00FFFF. |
| string route_color = 8; |
| |
| // The route_text_color field can be used to specify a legible color to use for text drawn against a background of route_color. |
| string route_text_color = 9; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| |
| message Trip { |
| // The route_id field contains an ID that uniquely identifies a route. |
| string route_id = 1; |
| |
| // The service_id contains an ID that uniquely identifies a set of dates when service is available for one or more routes. |
| string service_id = 2; |
| |
| // The trip_id field contains an ID that identifies a trip. The trip_id is dataset unique. |
| string trip_id = 3; |
| |
| // The trip_headsign field contains the text that appears on a sign that identifies the trip's destination to passengers. |
| string trip_headsign = 4; |
| |
| // The trip_short_name field contains the text that appears in schedules and sign boards to identify the trip to passengers. |
| string trip_short_name = 5; |
| |
| // The direction_id field contains a binary value that indicates the direction of travel for a trip. |
| enum Direction { |
| OUTBOUND = 0; |
| |
| INBOUND = 1; |
| } |
| Direction direction_id = 6; |
| |
| // The block_id field identifies the block to which the trip belongs. |
| // A block consists of two or more sequential trips made using the same vehicle, |
| // where a passenger can transfer from one trip to the next just by staying in the vehicle. |
| string block_id = 7; |
| |
| // The shape_id field contains an ID that defines a shape for the trip. |
| string shape_id = 8; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message StopTime { |
| // The trip_id field contains an ID that identifies a trip. The trip_id is dataset unique. |
| string trip_id = 1; |
| |
| string arrival_time = 2; |
| string departure_time = 3; |
| |
| // TODO: Brian why not make this: |
| // int32 arrival_time_secs = 2; |
| // int32 departure_time_secs = 3; |
| |
| string stop_id = 4; |
| string stop_sequence = 5; |
| |
| string stop_headsign = 6; |
| |
| enum AvailabilityType { |
| // Tram, Streetcar, Light rail. Any light rail or street level system within a metropolitan area. |
| REGULAR = 0; |
| |
| // Subway, Metro. Any underground rail system within a metropolitan area. |
| NOT_AVAILABLE = 1; |
| |
| // Rail. Used for intercity or long-distance travel. |
| PHONE = 2; |
| |
| // Bus. Used for short- and long-distance bus routes. |
| DRIVER = 3; |
| } |
| AvailabilityType pickup_type = 7; |
| |
| AvailabilityType drop_off_type = 8; |
| |
| float shape_dist_traveled = 9; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message Calendar { |
| // The trip_id field contains an ID that identifies a trip. The trip_id is dataset unique. |
| string service_id = 1; |
| |
| enum CalendarDay { |
| NOT_AVAILABLE = 0; |
| AVAILABLE = 1; |
| } |
| CalendarDay monday = 2; |
| CalendarDay tuesday = 3; |
| CalendarDay wednesday = 4; |
| CalendarDay thursday = 5; |
| CalendarDay friday = 6; |
| CalendarDay saturday = 7; |
| CalendarDay sunday = 8; |
| |
| string start_date = 9; |
| string end_date = 10; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message CalendarDate { |
| // The trip_id field contains an ID that identifies a trip. The trip_id is dataset unique. |
| string service_id = 1; |
| |
| string date = 2; |
| |
| enum ExceptionType { |
| UNUSED_UNKNOWN = 0; |
| ADDED = 1; |
| REMOVED = 2; |
| } |
| ExceptionType exception_type = 3; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message FareAttribute { |
| string fare_id = 1; |
| float price = 2; |
| string currency_type = 3; |
| |
| enum PaymentMethod { |
| ONBOARD = 0; |
| PREBOARDING = 1; |
| } |
| PaymentMethod payment_method = 4; |
| |
| enum Transfers { |
| NO = 0; |
| ONCE = 1; |
| TWICE = 2; |
| UNLIMITED = 3; |
| } |
| Transfers transfers = 5; |
| |
| int32 transfer_duration = 6; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message FareRule { |
| string fare_id = 1; |
| string route_id = 2; |
| string origin_id = 3; |
| string destination_id = 4; |
| string contains_id = 5; |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message Shape { |
| string shape_id = 1; |
| float shape_pt_lat = 2; |
| float shape_pt_lon = 3; |
| int32 shape_pt_sequence = 4; |
| float shape_dist_traveled = 5; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message Frequency { |
| string trip_id = 1; |
| string start_time = 2; |
| string end_time = 3; |
| int32 headway_secs = 4; |
| enum ScheduleType { |
| NOT_EXACTLY = 0; |
| EXACTLY = 1; |
| } |
| ScheduleType exact_times = 5; |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |
| |
| message Transfer { |
| string from_stop_id = 1; |
| string to_stop_id = 2; |
| enum TransferType { |
| RECOMMENDED = 0; |
| TIMED = 1; |
| MINIMUM = 2; |
| NOT_POSSIBLE = 3; |
| } |
| TransferType transfer_type = 3; |
| |
| int32 min_transfer_time = 4; |
| |
| // The extensions namespace allows 3rd-party developers to extend the |
| // GTFS specification in order to add and evaluate new features and |
| // modifications to the spec. |
| google.protobuf.Any extension = 2000; |
| reserved 1000 to 1999; |
| } |