From 39eee4aea9eb487b6bda8cc097adb45701c0c358 Mon Sep 17 00:00:00 2001 From: "Abigail R." Date: Fri, 3 Oct 2025 10:55:07 -0400 Subject: [PATCH 1/5] cemv in agency.txt --- docs/en/documentation/schedule/reference.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/documentation/schedule/reference.md b/docs/en/documentation/schedule/reference.md index dfab777b5..37c1ed97f 100644 --- a/docs/en/documentation/schedule/reference.md +++ b/docs/en/documentation/schedule/reference.md @@ -197,6 +197,7 @@ Primary key (`agency_id`) | `agency_phone` | Phone number | Optional | A voice telephone number for the specified agency. This field is a string value that presents the telephone number as typical for the agency's service area. It may contain punctuation marks to group the digits of the number. Dialable text (for example, TriMet's "503-238-RIDE") is permitted, but the field must not contain any other descriptive text. | | `agency_fare_url` | URL | Optional | URL of a web page where a rider can purchase tickets or other fare instruments for that agency, or a web page containing information about that agency's fares. | | `agency_email` | Email | Optional | Email address actively monitored by the agency’s customer service department. This email address should be a direct contact point where transit riders can reach a customer service representative at the agency. | +| `cemv_support` | Enum | Optional | Indicates if riders can access a transit service (i.e., trip) associated with this agency by using a contactless EMV (Europay, Mastercard, and Visa) card or mobile device as fare media at a fare validator (such as in pay-as-you-go or open-loop systems). This field does not indicate that cEMV can be used to purchase other fare products or to add value to another fare media.

Support for cEMVs should only be indicated if all services under this agency are accessible with the use of cEMV cards or mobile devices as fare media.

Valid options are:

`0` or empty - No cEMV information for trips associated with this agency.
`1` - Riders may use cEMVs as fare media for trips associated with this agency.
`2` - cEMVs are not supported as fare media for trips associated with this agency.

If both `agency.cemv_support` and `routes.cemv_support` are provided for the same service, the value in `routes.cemv_support` shall take precedence.

This field is independent of all other fare-related files and may be used separately. If there is conflicting information between this field and any fare-related file (such as `fare_media.txt`, `fare_products.txt`, or `fare_leg_rules.txt`), the information in those files shall take precedence over `agency.cemv_support`.| ### stops.txt From ff52a56fdef9ec4d7f3207cc6cd9449d3c570d62 Mon Sep 17 00:00:00 2001 From: "Abigail R." Date: Wed, 8 Oct 2025 13:23:07 -0400 Subject: [PATCH 2/5] cemv in routes.txt monthly update to add cEMV support in routes.txt --- docs/en/documentation/schedule/reference.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/en/documentation/schedule/reference.md b/docs/en/documentation/schedule/reference.md index 37c1ed97f..fb6b3e03a 100644 --- a/docs/en/documentation/schedule/reference.md +++ b/docs/en/documentation/schedule/reference.md @@ -245,6 +245,8 @@ Primary key (`route_id`) | `continuous_pickup` | Enum | **Conditionally Forbidden** | Indicates that the rider can board the transit vehicle at any point along the vehicle’s travel path as described by [shapes.txt](#shapestxt), on every trip of the route. Valid options are:

`0` - Continuous stopping pickup.
`1` or empty - No continuous stopping pickup.
`2` - Must phone agency to arrange continuous stopping pickup.
`3` - Must coordinate with driver to arrange continuous stopping pickup.

Values for `routes.continuous_pickup` may be overridden by defining values in `stop_times.continuous_pickup` for specific `stop_time`s along the route.

**Conditionally Forbidden**:
- Any value other than `1` or empty is **Forbidden** if `stop_times.start_pickup_drop_off_window` or `stop_times.end_pickup_drop_off_window` are defined for any trip of this route.
- Optional otherwise. | | `continuous_drop_off` | Enum | **Conditionally Forbidden** | Indicates that the rider can alight from the transit vehicle at any point along the vehicle’s travel path as described by [shapes.txt](#shapestxt), on every trip of the route. Valid options are:

`0` - Continuous stopping drop off.
`1` or empty - No continuous stopping drop off.
`2` - Must phone agency to arrange continuous stopping drop off.
`3` - Must coordinate with driver to arrange continuous stopping drop off.

Values for `routes.continuous_drop_off` may be overridden by defining values in `stop_times.continuous_drop_off` for specific `stop_time`s along the route.

**Conditionally Forbidden**:
- Any value other than `1` or empty is **Forbidden** if `stop_times.start_pickup_drop_off_window` or `stop_times.end_pickup_drop_off_window` are defined for any trip of this route.
- Optional otherwise. | | `network_id` | ID | **Conditionally Forbidden** | Identifies a group of routes. Multiple rows in [routes.txt](#routestxt) may have the same `network_id`.

Conditionally Forbidden:
- **Forbidden** if the [route_networks.txt](#route_networkstxt) file exists.
- Optional otherwise. +| `cemv_support` | Enum | Optional | Indicates if riders can access a transit service (i.e., trip) associated with this route by using a contactless EMV (Europay, Mastercard, and Visa) card or mobile device as fare media at a fare validator (such as in pay-as-you-go or open-loop systems). This field does not indicate that cEMV can be used to purchase other fare products or to add value to another fare media.

Support for cEMVs should only be indicated if all services under this route are accessible with the use of cEMV cards or mobile devices as fare media.

Valid options are:

`0` or empty - No cEMV information for trips associated with this route.
`1` - Riders may use cEMVs as fare media for trips associated with this route.
`2` - cEMVs are not supported as fare media for trips associated with this route.

If both `agency.cemv_support` and `routes.cemv_support` are provided for the same service, the value in `routes.cemv_support` shall take precedence.

This field is independent of all other fare-related files and may be used separately. If there is conflicting information between this field and any fare-related file (such as `fare_media.txt`, `fare_products.txt`, or `fare_leg_rules.txt`), the information in those files shall take precedence over `agency.cemv_support`. +| ### trips.txt From f648fd97b431c336aee4315b4d8da3ce28008f1a Mon Sep 17 00:00:00 2001 From: "Abigail R." Date: Wed, 8 Oct 2025 13:48:36 -0400 Subject: [PATCH 3/5] stop access in stops.txt --- docs/en/documentation/schedule/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/documentation/schedule/reference.md b/docs/en/documentation/schedule/reference.md index fb6b3e03a..cedc4c37f 100644 --- a/docs/en/documentation/schedule/reference.md +++ b/docs/en/documentation/schedule/reference.md @@ -222,7 +222,7 @@ Primary key (`stop_id`) | `wheelchair_boarding` | Enum | Optional | Indicates whether wheelchair boardings are possible from the location. Valid options are:

For parentless stops:
`0` or empty - No accessibility information for the stop.
`1` - Some vehicles at this stop can be boarded by a rider in a wheelchair.
`2` - Wheelchair boarding is not possible at this stop.

For child stops:
`0` or empty - Stop will inherit its `wheelchair_boarding` behavior from the parent station, if specified in the parent.
`1` - There exists some accessible path from outside the station to the specific stop/platform.
`2` - There exists no accessible path from outside the station to the specific stop/platform.

For station entrances/exits:
`0` or empty - Station entrance will inherit its `wheelchair_boarding` behavior from the parent station, if specified for the parent.
`1` - Station entrance is wheelchair accessible.
`2` - No accessible path from station entrance to stops/platforms. | | `level_id` | Foreign ID referencing `levels.level_id` | Optional | Level of the location. The same level may be used by multiple unlinked stations.| | `platform_code` | Text | Optional | Platform identifier for a platform stop (a stop belonging to a station). This should be just the platform identifier (eg. "G" or "3"). Words like “platform” or "track" (or the feed’s language-specific equivalent) should not be included. This allows feed consumers to more easily internationalize and localize the platform identifier into other languages. | - +| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform cannot be directly accessed from the street network. It must be accessed from a station entrance if there is one defined for the station, otherwise the station itself. If there are pathways defined for the station, they must be used to access the stop/platform.
`1` - Consuming applications should generate directions for access directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty.
- Optional otherwise. | ### routes.txt From 2f3ccbe466787b282fd80a422cc6c8a8f4bcd7c5 Mon Sep 17 00:00:00 2001 From: "Abigail R." Date: Wed, 8 Oct 2025 13:57:28 -0400 Subject: [PATCH 4/5] stop access in pathways.txt --- docs/en/documentation/schedule/reference.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/en/documentation/schedule/reference.md b/docs/en/documentation/schedule/reference.md index cedc4c37f..4998b52a7 100644 --- a/docs/en/documentation/schedule/reference.md +++ b/docs/en/documentation/schedule/reference.md @@ -723,17 +723,20 @@ Files [pathways.txt](#pathwaystxt) and [levels.txt](#levelstxt) use a graph repr To navigate from the station entrance/exit (a node represented as a location with `location_type=2`) to a platform (a node represented as a location with `location_type=0` or empty), the rider will move through walkways, fare gates, stairs, and other edges represented as pathways. Generic nodes (nodes represented with `location_type=3`) can be used to connect pathways throughout a station. -Pathways must be defined exhaustively in a station. If any pathways are defined, it is assumed that all pathways throughout the station are represented. Therefore, the following guidelines apply: +Pathways are intended to exhaustively define the internal access graph of a station. If any pathways are defined within a station, data consumers should assume that all relevant connections within that station are described. However, the optional `stop_access` field in `stops.txt` may be used to explicitly define whether a stop is accessible directly from the street network or through the station's defined pathways. Therefore, the following guidelines apply: -- No dangling locations: If any location within a station has a pathway, then all locations within that station should have pathways, except for platforms that have boarding areas (`location_type=4`, see guideline below). +- No dangling locations: If any location within a station has a pathway, then all locations within that station should have pathways, except + - Platforms that have boarding areas (`location_type=4`, see guideline below) + - Stops (`location_type=0` or empty) with `stops.stop_access=1` - No pathways for a platform with boarding areas: A platform (`location_type=0` or empty) that has boarding areas (`location_type=4`) is treated as a parent object, not a point. In such cases, the platform must not have pathways assigned. All pathways should be assigned for each of the platform's boarding areas. -- No locked platforms: Each platform (`location_type=0` or empty) or boarding area (`location_type=4`) must be connected to at least one entrance/exit (`location_type=2`) via some chain of pathways. Stations not allowing a pathway to the outside of the station from a given platform are rare. +- No locked platforms: If any location within a station has a pathway, each platform (`location_type=0` or empty) or boarding area (`location_type=4`) must be connected to at least one entrance/exit (`location_type=2`) via some chain of pathways — unless: + - The stop (`location_type=0` or empty) is explicitly marked with `stops.stop_access=1`, in which case it is assumed to be directly accessible from the street network. | Field Name | Type | Presence | Description | | ------ | ------ | ------ | ------ | | `pathway_id` | Unique ID | **Required** | Identifies a pathway. Used by systems as an internal identifier for the record. Must be unique in the dataset.

Different pathways may have the same values for `from_stop_id` and `to_stop_id`.
_Example: When two escalators are side-by-side in opposite directions, or when a stair set and elevator go from the same place to the same place, different `pathway_id` may have the same `from_stop_id` and `to_stop_id` values._| -| `from_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway begins.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) are forbidden.| -| `to_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway ends.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) are forbidden.| +| `from_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway begins.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`), or stops (`location_type=0` or empty) with `stop_access=1`, are forbidden.| +| `to_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway ends.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`), or stops (`location_type=0` or empty) with `stop_access=1`, are forbidden.| | `pathway_mode` | Enum | **Required** | Type of pathway between the specified (`from_stop_id`, `to_stop_id`) pair. Valid options are:

`1` - Walkway.
`2` - Stairs.
`3` - Moving sidewalk/travelator.
`4` - Escalator.
`5` - Elevator.
`6` - Fare gate (or payment gate): A pathway that crosses into an area of the station where proof of payment is required to cross. Fare gates may separate paid areas of the station from unpaid ones, or separate different payment areas within the same station from each other. This information can be used to avoid routing passengers through stations using shortcuts that would require passengers to make unnecessary payments, like directing a passenger to walk through a subway platform to reach a busway.
`7`- Exit gate: A pathway exiting a paid area into an unpaid area where proof of payment is not required to cross.| | `is_bidirectional` | Enum | **Required** | Indicates the direction that the pathway can be taken:

`0` - Unidirectional pathway that can only be used from `from_stop_id` to `to_stop_id`.
`1` - Bidirectional pathway that can be used in both directions.

Exit gates (`pathway_mode=7`) must not be bidirectional.| | `length` | Non-negative float | Optional | Horizontal length in meters of the pathway from the origin location (defined in `from_stop_id`) to the destination location (defined in `to_stop_id`).

This field is recommended for walkways (`pathway_mode=1`), fare gates (`pathway_mode=6`) and exit gates (`pathway_mode=7`).| From c2bf55b9c8d950b0ddc21ec24eed6b7935c72138 Mon Sep 17 00:00:00 2001 From: "Abigail R." Date: Fri, 10 Oct 2025 10:43:09 -0400 Subject: [PATCH 5/5] Update Revision History --- docs/en/documentation/schedule/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/documentation/schedule/reference.md b/docs/en/documentation/schedule/reference.md index 4998b52a7..cd3c8373f 100644 --- a/docs/en/documentation/schedule/reference.md +++ b/docs/en/documentation/schedule/reference.md @@ -1,6 +1,6 @@ ## General Transit Feed Specification Reference -**Revised July 9, 2025. See [Revision History](../change-history/revision-history) for more details.** +**Revised October 10, 2025. See [Revision History](../change-history/revision-history) for more details.** This document defines the format and structure of the files that comprise a GTFS dataset.