Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
b279149
Add fare containers to reference.md
omar-kabbani Aug 4, 2022
a1eb24e
Update documentation
omar-kabbani Aug 5, 2022
7a978bb
Update primary key of fare_products.txt
isabelle-dr Nov 1, 2022
58dd6bb
improve definitions
isabelle-dr Nov 10, 2022
c946316
fare_container_type
isabelle-dr Nov 10, 2022
ee8c670
add digital card option
isabelle-dr Nov 10, 2022
06c00e9
replace with new proposal
isabelle-dr Dec 8, 2022
4a5d329
typo
isabelle-dr Dec 8, 2022
5474fbd
improve descriptions
isabelle-dr Dec 9, 2022
c9724c6
Fix primary key of fare_payment_types.txt
isabelle-dr Dec 12, 2022
1da7691
Update descriptions
isabelle-dr Dec 19, 2022
6b13217
format table
isabelle-dr Dec 19, 2022
82d0605
add space
isabelle-dr Dec 19, 2022
e30461e
Change fare payment type to fare payment option
isabelle-dr Dec 20, 2022
e22b458
Update reference.md
isabelle-dr Dec 20, 2022
ce6a42b
small fix
isabelle-dr Dec 20, 2022
a47d325
small fix
isabelle-dr Dec 20, 2022
4ed5631
update fare_payment_option_name description
isabelle-dr Jan 17, 2023
0ea63c0
Update description of fare_payment_options.txt
isabelle-dr Jan 20, 2023
9dad005
Update with fare_payment_option_groups.txt design
isabelle-dr Jan 26, 2023
7e259fa
Update proposal
isabelle-dr Feb 14, 2023
c8f2d24
typo
isabelle-dr Feb 14, 2023
18ec06f
Update reference.md
isabelle-dr Feb 14, 2023
6b2110f
update description of fare medium name
isabelle-dr Feb 14, 2023
ee6cb96
small fix
isabelle-dr Feb 15, 2023
37293b3
Change fare media from "ID" to "Unique ID"
isabelle-dr Feb 17, 2023
68c98db
Remove "or empty" in fare_media_type because
isabelle-dr Feb 17, 2023
83d6e06
fix typo and add cEMV acronym
isabelle-dr Feb 21, 2023
f127803
remove paper ticket (not produced)
isabelle-dr Feb 28, 2023
7327c2f
Fix typos
isabelle-dr Mar 6, 2023
9840f03
Update fare media definition
isabelle-dr Mar 6, 2023
5bd9410
Merge branch 'master' into GTFS-Fares-v2-fare-containers
isabelle-dr Mar 6, 2023
e31ac5f
solve merge conflicts
isabelle-dr Mar 6, 2023
8ae6f60
Add line break
isabelle-dr Mar 6, 2023
f8008dc
remove line break
isabelle-dr Mar 6, 2023
7f08600
fix typo (additional "for)
isabelle-dr Mar 14, 2023
05dc9a9
Update revision history
isabelle-dr Mar 14, 2023
cc728f7
formatting fix
isabelle-dr Mar 14, 2023
481e4c1
formatting issue
isabelle-dr Mar 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions gtfs/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,21 +53,25 @@ Every new feature adds complexity to the creation and reading of feeds. Therefor

### Revision History

#### March 14, 2023

* Added fare media. See [discussion](https://github.com/google/transit/pull/355).

#### July 26, 2022

* Added trip-to-trip transfers with in-seat option. See [discussion](https://github.com/google/transit/pull/303)
* Added trip-to-trip transfers with in-seat option. See [discussion](https://github.com/google/transit/pull/303).

#### May 17, 2022

* GTFS-Fares v2 base implementation. See [discussion](https://github.com/google/transit/pull/286)
* GTFS-Fares v2 base implementation. See [discussion](https://github.com/google/transit/pull/286).

#### Oct 22, 2021

* Added Primary and Foreign ID fields. See [discussion](https://github.com/google/transit/pull/278)
* Added Primary and Foreign ID fields. See [discussion](https://github.com/google/transit/pull/278).

#### Oct 05, 2021

* Added Trip-to-trip and route-to-route transfers. See [discussion](https://github.com/google/transit/pull/284)
* Added Trip-to-trip and route-to-route transfers. See [discussion](https://github.com/google/transit/pull/284).

#### September 15, 2021

Expand Down
28 changes: 23 additions & 5 deletions gtfs/spec/en/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ This document defines the format and structure of the files that comprise a GTFS
- [calendar\_dates.txt](#calendar_datestxt)
- [fare\_attributes.txt](#fare_attributestxt)
- [fare\_rules.txt](#fare_rulestxt)
- [fare\_media.txt](#fare_mediatxt)
- [fare\_products.txt](#fare_productstxt)
- [fare\_leg\_rules.txt](#fare_leg_rulestxt)
- [fare\_transfer\_rules.txt](#fare_transfer_rulestxt)
Expand Down Expand Up @@ -104,11 +105,12 @@ This specification defines the following files:
| [stops.txt](#stopstxt) | **Required** | Stops where vehicles pick up or drop off riders. Also defines stations and station entrances. |
| [routes.txt](#routestxt) | **Required** | Transit routes. A route is a group of trips that are displayed to riders as a single service. |
| [trips.txt](#tripstxt) | **Required** | Trips for each route. A trip is a sequence of two or more stops that occur during a specific time period. |
| [stop_times.txt](#stop_timestxt) | **Required** | Times that a vehicle arrives at and departs from stops for each trip. |
| [stop_times.txt](#stop_timestxt) | **Required** | Times that a vehicle arrives at and departs from stops for each trip. |
| [calendar.txt](#calendartxt) | **Conditionally Required** | Service dates specified using a weekly schedule with start and end dates. <br><br>Conditionally Required:<br> - **Required** unless all dates of service are defined in [calendar_dates.txt](#calendar_datestxt).<br> - Optional otherwise. |
| [calendar_dates.txt](#calendar_datestxt) | **Conditionally Required** | Exceptions for the services defined in the [calendar.txt](#calendartxt). <br><br>Conditionally Required:<br> - **Required** if [calendar.txt](#calendartxt) is omitted. In which case [calendar_dates.txt](#calendar_datestxt) must contain all dates of service. <br> - Optional otherwise. |
| [fare_attributes.txt](#fare_attributestxt) | Optional | Fare information for a transit agency's routes. |
| [fare_rules.txt](#fare_rulestxt) | Optional | Rules to apply fares for itineraries. |
| [fare_rules.txt](#fare_rulestxt) | Optional | Rules to apply fares for itineraries. |
| [fare_media.txt](#fare_mediatxt) | Optional | To describe the fare media that can be employed to use fare products. <br><br>File [fare_media.txt](#fare_mediatxt) describes concepts that are not represented in [fare_attributes.txt](#fare_attributestxt) and [fare_rules.txt](#fare_rulestxt). As such, the use of [fare_media.txt](#fare_mediatxt) is entirely separate from files [fare_attributes.txt](#fare_attributestxt) and [fare_rules.txt](#fare_rulestxt). |
| [fare_products.txt](#fare_productstxt) | Optional | To describe the different types of tickets or fares that can be purchased by riders.<br><br>File [fare_products.txt](#fare_productstxt) describes fare products that are not represented in [fare_attributes.txt](#fare_attributestxt) and [fare_rules.txt](#fare_rulestxt). As such, the use of [fare_products.txt](#fare_productstxt) is entirely separate from files [fare_attributes.txt](#fare_attributestxt) and [fare_rules.txt](#fare_rulestxt). |
| [fare_leg_rules.txt](#fare_leg_rulestxt) | Optional | Fare rules for individual legs of travel.<br><br>File [fare_leg_rules.txt](#fare_leg_rulestxt) provides a more detailed method for modeling fare structures. As such, the use of [fare_leg_rules.txt](#fare_leg_rulestxt) is entirely separate from files [fare_attributes.txt](#fare_attributestxt) and [fare_rules.txt](#fare_rulestxt). |
| [fare_transfer_rules.txt](#fare_transfer_rulestxt) | Optional | Fare rules for transfers between legs of travel.<br><br>Along with [fare_leg_rules.txt](#fare_leg_rulestxt), file [fare_transfer_rules.txt](#fare_transfer_rulestxt) provides a more detailed method for modeling fare structures. As such, the use of [fare_transfer_rules.txt](#fare_transfer_rulestxt) is entirely separate from files [fare_attributes.txt](#fare_attributestxt) and [fare_rules.txt](#fare_rulestxt). |
Expand Down Expand Up @@ -307,7 +309,7 @@ File: **Optional**
Primary key (`fare_id`)

**Versions**<br>
There are two modelling options for describing fares. GTFS-Fares V1 is the legacy option for describing minimal fare information. GTFS-Fares V2 is an updated method that allows for a more detailed account of an agency's fare structure. Both are allowed to be present in a dataset, but only one method should be used by a data consumer for a given dataset. It is recommended that GTFS-Fares V2 takes precedence over GTFS-Fares V1. <br><br>The files associated with GTFS-Fares V1 are: <br>- [fare_attributes.txt](#fare_attributestxt)<br>- [fare_rules.txt](#fare_rulestxt)<br><br>The files associated with GTFS-Fares V2 are: <br>- [fare_products.txt](#fare_productstxt)<br>- [fare_leg_rules.txt](#fare_leg_rulestxt)<br>- [fare_transfer_rules.txt](#fare_transfer_rulestxt)
There are two modelling options for describing fares. GTFS-Fares V1 is the legacy option for describing minimal fare information. GTFS-Fares V2 is an updated method that allows for a more detailed account of an agency's fare structure. Both are allowed to be present in a dataset, but only one method should be used by a data consumer for a given dataset. It is recommended that GTFS-Fares V2 takes precedence over GTFS-Fares V1. <br><br>The files associated with GTFS-Fares V1 are: <br>- [fare_attributes.txt](#fare_attributestxt)<br>- [fare_rules.txt](#fare_rulestxt)<br><br>The files associated with GTFS-Fares V2 are: <br>- [fare_media.txt](#fare_mediatxt)<br>- [fare_products.txt](#fare_productstxt)<br>- [fare_leg_rules.txt](#fare_leg_rulestxt)<br>- [fare_transfer_rules.txt](#fare_transfer_rulestxt)

<br>

Expand Down Expand Up @@ -343,21 +345,37 @@ For examples that demonstrate how to specify a fare structure with [fare_rules.t
| `destination_id` | Foreign ID referencing `stops.zone_id` | Optional | Identifies a destination zone. If a fare class has multiple destination zones, create a record in [fare_rules.txt](#fare_rules.txt) for each `destination_id`.<hr>*Example: The `origin_id` and `destination_id` fields could be used together to specify that fare class "b" is valid for travel between zones 3 and 4, and for travel between zones 3 and 5, the [fare_rules.txt](#fare_rules.txt) file would contain these records for the fare class:* <br>`fare_id,...,origin_id,destination_id` <br>`b,...,3,4`<br> `b,...,3,5` |
| `contains_id` | Foreign ID referencing `stops.zone_id` | Optional | Identifies the zones that a rider will enter while using a given fare class. Used in some systems to calculate correct fare class. <hr>*Example: If fare class "c" is associated with all travel on the GRT route that passes through zones 5, 6, and 7 the [fare_rules.txt](#fare_rules.txt) would contain these records:* <br> `fare_id,route_id,...,contains_id` <br> `c,GRT,...,5` <br>`c,GRT,...,6` <br>`c,GRT,...,7` <br> *Because all `contains_id` zones must be matched for the fare to apply, an itinerary that passes through zones 5 and 6 but not zone 7 would not have fare class "c". For more detail, see [https://code.google.com/p/googletransitdatafeed/wiki/FareExamples](https://code.google.com/p/googletransitdatafeed/wiki/FareExamples) in the GoogleTransitDataFeed project wiki.* |

### fare_media.txt

File: **Optional**

Primary Key (`fare_media_id`)

To describe the different fare media that can be employed to use fare products. Fare media are physical or virtual holders used for the representation and/or validation of a fare product.

| Field Name | Type | Presence | Description |
| ------ | ------ | ------ | ------ |
| `fare_media_id` | Unique ID | **Required** | Identifies a fare media. |
| `fare_media_name` | Text | Optional | Name of the fare media.<br><br>For fare media which are transit cards (`fare_media_type =2`) or mobile apps (`fare_media_type =4`), the `fare_media_name` should be included and should match the rider-facing name used by the organizations delivering them. |
| `fare_media_type` | Enum | **Required** | The type of fare media. Valid options are:<br><br>`0` - None. Used when there is no fare media involved in purchasing or validating a fare product, such as paying cash to a driver or conductor with no physical ticket provided.<br>`2` - Physical transit card that has stored tickets, passes or monetary value.<br>`3` - cEMV (contactless Europay, Mastercard and Visa) as an open-loop token container for account-based ticketing.<br>`4` - Mobile app that have stored virtual transit cards, tickets, passes, or monetary value.|

### fare_products.txt

File: **Optional**

Primary Key (`fare_product_id`)
Primary Key (`fare_product_id`, `fare_media_id`)

To describe the different types of tickets or fares that can be purchased by riders.

| Field Name | Type | Presence | Description |
| ------ | ------ | ------ | ------ |
| `fare_product_id` | ID | **Required** | Identifies a fare product. |
| `fare_product_id` | ID | **Required** | Identifies a fare product. |
| `fare_product_name` | Text | Optional | The name of the fare product as displayed to riders. |
| `fare_media_id` | Foreign ID referencing `fare_media.fare_media_id` | Optional | Identifies a fare media that can be employed to use the fare product during the trip. When `fare_media_id` is empty, it is considered that the fare media is unknown.|
| `amount` | Currency amount | **Required** | The cost of the fare product. May be negative to represent transfer discounts. May be zero to represent a fare product that is free.|
| `currency` | Currency code | **Required** | The currency of the cost of the fare product. |


### fare_leg_rules.txt

File: **Optional**
Expand Down