Skip to content

Commit 9ad360a

Browse files
abigailmbdskalexch
andauthored
[Monthly Update] July 2026 (#687)
* update revision history.md Updated GTFS Realtime Revision history * update gtfs realtime reference PR 577 Updated GTFS Realtime reference, service alerts, and realtime.proto to include changes made from PR 577 * update to include PR 546 Updated GTFS Realtime Reference and Realtime.proto files to include changes made from PR 546 * Create migration-active-period.md Added a new page to include Migration Guide for active period to communication/impact period Updated site configuration to include in nav * updated RT FR Updated GTFS RT FR Revision History Updated GTFS RT FR Reference Updated GTFS RT FR proto * Added FR active period migration guide Added active period migration guide to GTFS RT examples FR Updated FR config file to index new page * updated GTFS Realtime in ES Updated GTFS RT Revision History ES Updated GTFS RT Service Alerts ES Updated GTFS RT proto Updated GTFS RT Reference ES Fixed minor spacing issue in GTFS RT Revision History ES * Update Service Alerts FR Added Special Event cause in FR * Add special event desc gtfs-realtime.proto FR Added description for Special_Event in gtfs-realtime.proto FR * Added migration guide ES Added Active Period migration guide to RT examples ES Updated site configuration to include new page in nav ES * Update GTFS Realtime in JA Updated Revision History for GTFS Realtime in JA Updated Service Alerts in JA Updated gtfs-realtime.proto in JA Updated GTFS Realtime Reference in JA * Add active period migration guide JP Added active period migration guide JP Updated site configuration to include new page JP * Update docs/fr/documentation/realtime/reference.md Co-authored-by: Skander Chouchene <skander@mobilitydata.org> * Update docs/es/documentation/realtime/reference.md Co-authored-by: Skander Chouchene <skander@mobilitydata.org> --------- Co-authored-by: Skander Chouchene <skander@mobilitydata.org>
1 parent 157e9d5 commit 9ad360a

24 files changed

Lines changed: 493 additions & 8 deletions

File tree

config/en/mkdocs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ nav:
227227
- Service alerts: documentation/realtime/examples/service-alerts.md
228228
- Trip updates: documentation/realtime/examples/trip-updates.md
229229
- Migration duplicated: documentation/realtime/examples/migration-duplicated.md
230-
- Change history:
230+
- Migration Active Period: documentation/realtime/examples/migration-active-period.md
231+
Change history:
231232
- Recent Additions: documentation/realtime/change-history/recent-additions.md
232233
- Full revision history: documentation/realtime/change-history/revision-history.md
233234
- Community:

config/es/mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ nav:
207207
- Alertas de servicio (Service Alerts): documentation/realtime/examples/service-alerts.md
208208
- Actualizaciones de viaje (Trip Updates): documentation/realtime/examples/trip-updates.md
209209
- Migración duplicada: documentation/realtime/examples/migration-duplicated.md
210+
- Migración Active Period: documentation/realtime/examples/migration-active-period.md
210211
- Historial de cambios:
211212
- Adiciones recientes: documentation/realtime/change-history/recent-additions.md
212213
- Historial completo de revisiones: documentation/realtime/change-history/revision-history.md

config/fr/mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ nav:
207207
- Alertes de service: documentation/realtime/examples/service-alerts.md
208208
- Mises à jour du voyage: documentation/realtime/examples/trip-updates.md
209209
- Migration dupliquée: documentation/realtime/examples/migration-duplicated.md
210+
- Migration Active_Period: documentation/realtime/examples/migration-active-period.md
210211
- Historique des changements:
211212
- Ajouts récents: documentation/realtime/change-history/recent-additions.md
212213
- Historique complet des révisions: documentation/realtime/change-history/revision-history.md

config/ja/mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ nav:
206206
- サービスアラート: documentation/realtime/examples/service-alerts.md
207207
- 旅行最新情報: documentation/realtime/examples/trip-updates.md
208208
- 重複した移行: documentation/realtime/examples/migration-duplicated.md
209+
- 移行ガイド Active Period: documentation/realtime/examples/migration-active-period.md
209210
- 変更履歴:
210211
- 最近の追加: documentation/realtime/change-history/recent-additions.md
211212
- 完全な改訂履歴: documentation/realtime/change-history/revision-history.md

docs/en/documentation/realtime/change-history/revision-history.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
### Revision History
44

5+
#### June 2026
6+
7+
* Added two new fields into Service Alerts: communication_period and impact_period to better define active_period. See [discussion](https://github.com/google/transit/pull/546)
8+
* Added new SPECIAL_EVENT Cause to Cause list in Service Alerts. See [discussion](https://github.com/google/transit/pull/577)
9+
510
#### April 2026
611

712
* Fixed typos in gtfs-realtime.proto. See [discussion](https://github.com/google/transit/pull/541).
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
## Migration Guide - Transition from active_period to communication_period and impact_period
2+
3+
The GTFS-realtime `alert.active_period` was defined as *“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.”*
4+
5+
There was an ambiguity in this definition where the “time when the alert should be shown to the user” can be construed both as:
6+
- Time when the user is informed of the alert.
7+
- Time when the service disruption resulting from the alert is in effect.
8+
9+
To resolve this ambiguity, `communication_period` and `impact_period` are introduced.
10+
- `communication_period`: Time when the alert should be shown to the user strictly for informative reasons.
11+
- `impact_period`: Time when the services are affected by the alert.
12+
13+
To ensure the implementation of the new fields while keeping backward compatibility and taking into consideration infrastructure costs, the community agreed to assign `active_period` as deprecated but allow it to coexist with `communication_period` and `impact_period`.
14+
15+
This migration guide defines how to interpret the coexistence of all 3 fields together, and outlines steps for gradual migration into the new fields `communication_period` and `impact_period`. The goal is to convince producers and consumers to gradually start using `communication_period` and `impact_period` instead of `active_period`.
16+
17+
## Producers
18+
For producers, you can continue having all 3 fields in the same alert. Try to specify `communication_period` and `impact_period` in as many alerts as you can, especially alerts with NO_SERVICE.
19+
20+
**Do not duplicate alerts to separate active_period from the new fields!** Set one alert per actual service incident, you can specify `communication_period`, `impact_period` and `active_period`.
21+
22+
Whenever an alert has `communication_period` and `impact_period` specified, it is recommended to not include `active_period` (it is already an optional field).
23+
24+
To promote best practices, it is recommended to specify `communication_period` and `impact_period` together as much as possible.
25+
26+
All of the following examples are valid.
27+
28+
### The recommended option
29+
30+
````
31+
alert {
32+
“communication_period”: [{ "start": …, "end": … } ], ← Time when the user is informed of the alert.
33+
"impact_period": [ { "start": …, "end": … } ], ← Time when the service disruption resulting from the alert is in effect. Can be multiple time periods if the service disruption is recurring.
34+
...
35+
}
36+
````
37+
38+
### Other valid options that are not recommended
39+
40+
````
41+
alert {
42+
“active_period”: [{ "start": …, "end": … } ],
43+
“communication_period”: [{ "start": …, "end": … } ],
44+
"impact_period": [ { "start": …, "end": … } ],
45+
...
46+
}
47+
````
48+
49+
50+
````
51+
alert {
52+
“active_period”: [{ "start": …, "end": … } ],
53+
"impact_period": [ { "start": …, "end": … } ],
54+
...
55+
}
56+
````
57+
58+
59+
````
60+
alert {
61+
“active_period”: [{ "start": …, "end": … } ],
62+
“communication_period”: [{ "start": …, "end": … } ],
63+
...
64+
}
65+
````
66+
67+
68+
````
69+
alert {
70+
“active_period”: [{ "start": …, "end": … } ],
71+
...
72+
}
73+
````
74+
75+
76+
````
77+
alert {
78+
“communication_period”: [{ "start": …, "end": … } ],
79+
...
80+
}
81+
````
82+
83+
84+
````
85+
alert {
86+
“impact_period”: [{ "start": …, "end": … } ],
87+
...
88+
}
89+
````
90+
91+
It is suggested that you notify existing consumers (e.g., via a developer mailing list) that the use of `active_period` is being deprecated by a set deadline and that consumers should start using `commnication_period` and `impact_period` instead. This migration guide should be included, with an emphasis on the *"Consumer"* section. After the deadline passes, you can remove `active_period` entities from your feed and publish only the `commnication_period` and `impact_period`.
92+
93+
## Consumers
94+
95+
For consumers, you can interpret the fields based on their spec definition.
96+
- If `active_period` exists with `communication_period` and `impact_period`, **ignore `active_period`** and use the other two fields.
97+
98+
- If `active_period` exists with `impact_period`, **ignore `active_period`** and do not interpret it as `communication_period`.
99+
100+
- If `active_period` exists with `communication_period`, **ignore `active_period`** and do not interpret it as `impact_period`.
101+
102+
- If `active_period` exists alone, then use it.

docs/en/documentation/realtime/feed-entities/service-alerts.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ What is the cause of this alert? You may specify one of the following:
4646
* Construction
4747
* Police activity
4848
* Medical emergency
49+
* Special Event
4950

5051
## Effect
5152

docs/en/documentation/realtime/gtfs-realtime.proto

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,18 @@ message Alert {
626626
// alert will be shown as long as it appears in the feed.
627627
// If multiple ranges are given, the alert will be shown during all of them.
628628
repeated TimeRange active_period = 1;
629+
// Should not be used - for backwards-compatibility only.
630+
repeated TimeRange active_period = 1 [deprecated = true];
629631

632+
// Time when the alert should be shown to the user strictly for informative reasons.
633+
// If missing, the consuming application can decide when it's appropriate to be shown.
634+
// If multiple ranges are given, the alert will be shown during all of them.
635+
repeated TimeRange communication_period = 2;
636+
637+
// Time when the services are affected by the alert. If communication_period is specified,
638+
// every time interval in impact_period must be fully contained within at least
639+
// one time interval of communication_period.
640+
repeated TimeRange impact_period = 3;
630641
// Entities whose users we should notify of this alert.
631642
repeated EntitySelector informed_entity = 5;
632643

@@ -644,6 +655,7 @@ message Alert {
644655
CONSTRUCTION = 10;
645656
POLICE_ACTIVITY = 11;
646657
MEDICAL_EMERGENCY = 12;
658+
SPECIAL_EVENT = 13; // A special one-time or recurring event such as a parade, festival, performance, farmers market, or sporting event.
647659
}
648660
optional Cause cause = 6 [default = UNKNOWN_CAUSE];
649661

docs/en/documentation/realtime/reference.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,8 @@ An alert, indicating some sort of incident in the public transit network.
365365
| _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ |
366366
|------------------|------------|----------------|-------------------|-------------------|
367367
| **active_period** | [TimeRange](#message-timerange) | Optional | Many | 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. |
368+
| **communication_period** | [TimeRange](#message-timerange) | Optional | Many | Time when the alert should be shown to the user strictly for informative reasons. If missing, the consuming application can decide when it's appropriate to be shown.
369+
| **impact_period** | [TimeRange](#message-timerange) | Optional | Many | Time when the services are affected by the alert. If communication_period is specified, every time interval in impact_period must be fully contained within at least one time interval of communication_period.|
368370
| **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. |
369371
| **cause** | [Cause](#enum-cause) | Conditionally Required | One | If cause_detail is included, then Cause must also be included.
370372
| **cause_detail** | [TranslatedString](#message-translatedstring) | Optional | One | Description of the cause of the alert that allows for agency-specific language; more specific than the Cause. If cause_detail is included, then Cause must also be included. <br><br>**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future.
@@ -400,6 +402,7 @@ Cause of this alert.
400402
| **CONSTRUCTION** |
401403
| **POLICE_ACTIVITY** |
402404
| **MEDICAL_EMERGENCY** |
405+
| **SPECIAL_EVENT** |
403406

404407
### _enum_ Effect
405408

docs/es/documentation/realtime/change-history/revision-history.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22

33
## Historial de revisiones
44

5-
#### Abril 2026
5+
#### Junio 2026
6+
7+
* Se agregaron dos nuevos campos en Alerts: `communication_period` e `impact_period` para definir mejor `active_period`. Consulte la [discusión](https://github.com/google/transit/pull/546)
8+
* Se agregó una nueva causa SPECIAL_EVENT a la lista de causas en Service Alerts. Consulte la [discusión](https://github.com/google/transit/pull/577)
9+
10+
#### Abril 2026
11+
612
* Se corrigieron errores tipográficos en gtfs-realtime.proto. Consulte [discusión](https://github.com/google/transit/pull/541).
713

8-
#### Febrero de 2026
14+
#### Febrero de 2026
15+
916
* Se corrigió el requisito de trip_ids y la cardinalidad para selectedTrips. Consulte la [discusión](https://github.com/google/transit/pull/609).
1017
* Se añadieron los espacios faltantes. Consulte la [discusión](https://github.com/google/transit/pull/587).
1118

@@ -14,7 +21,6 @@
1421
* Se deprecia schedule_relationship `ADDED` en favor de `NEW` y se añade `REPLACEMENT`. Consulte la [discusión](https://github.com/google/transit/pull/504).
1522
* Más aclaraciones sobre las modificaciones de viajes (Trip Modifications). Consulte la [discusión](https://github.com/google/transit/pull/542).
1623

17-
1824
#### Diciembre de 2024
1925

2026
* Se agregó un nuevo campo de string que coincide con feed_info.feed_version de la fuente de GTFS Schedule en la que se basan los datos en tiempo real. Consulte la [discusión](https://github.com/google/transit/pull/434).

0 commit comments

Comments
 (0)