From 47752013c0d415e20035269bead619beb0f9c422 Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Wed, 12 Mar 2025 14:48:39 -0400 Subject: [PATCH 1/9] Update reference.md --- gtfs-realtime/spec/en/reference.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gtfs-realtime/spec/en/reference.md b/gtfs-realtime/spec/en/reference.md index 6e0e39df..54181e13 100644 --- a/gtfs-realtime/spec/en/reference.md +++ b/gtfs-realtime/spec/en/reference.md @@ -341,6 +341,8 @@ An alert, indicating some sort of incident in the public transit network. | _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ | |------------------|------------|----------------|-------------------|-------------------| | **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. | +| **communication_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. | +| **impact_period** | [TimeRange](#message-timerange) | Optional | Many | Time when the services are affected by the disruption mentioned in the alert. | | **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. | | **cause** | [Cause](#enum-cause) | Conditionally Required | One | If cause_detail is included, then Cause must also be included. | **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.

**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future. From 4bcb685313d895a022b19c6734c4c357b2518adc Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Tue, 25 Mar 2025 10:32:46 -0400 Subject: [PATCH 2/9] Update reference.md --- gtfs-realtime/spec/en/reference.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gtfs-realtime/spec/en/reference.md b/gtfs-realtime/spec/en/reference.md index 54181e13..ed9f0228 100644 --- a/gtfs-realtime/spec/en/reference.md +++ b/gtfs-realtime/spec/en/reference.md @@ -340,9 +340,9 @@ An alert, indicating some sort of incident in the public transit network. | _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ | |------------------|------------|----------------|-------------------|-------------------| -| **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. | -| **communication_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. | -| **impact_period** | [TimeRange](#message-timerange) | Optional | Many | Time when the services are affected by the disruption mentioned in the alert. | +| **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

**Forbidden** if communication_period and impact_period exist | +| **communication_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the alert should be shown to the user strictly for informative reasons. 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. **Required** If impact_period is specified, otherwise **forbidden**.| +| **impact_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the services are affected by the disruption mentioned in the alert. **Required** If communication_period is specified, otherwise **forbidden**.| | **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. | | **cause** | [Cause](#enum-cause) | Conditionally Required | One | If cause_detail is included, then Cause must also be included. | **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.

**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future. From 6ec8ddda86ecf46504ad2b26ef02cddd60cb28d9 Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Tue, 25 Mar 2025 10:33:29 -0400 Subject: [PATCH 3/9] Update reference.md --- gtfs-realtime/spec/en/reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtfs-realtime/spec/en/reference.md b/gtfs-realtime/spec/en/reference.md index ed9f0228..b2be3068 100644 --- a/gtfs-realtime/spec/en/reference.md +++ b/gtfs-realtime/spec/en/reference.md @@ -341,8 +341,8 @@ An alert, indicating some sort of incident in the public transit network. | _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ | |------------------|------------|----------------|-------------------|-------------------| | **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

**Forbidden** if communication_period and impact_period exist | -| **communication_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the alert should be shown to the user strictly for informative reasons. 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. **Required** If impact_period is specified, otherwise **forbidden**.| -| **impact_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the services are affected by the disruption mentioned in the alert. **Required** If communication_period is specified, otherwise **forbidden**.| +| **communication_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the alert should be shown to the user strictly for informative reasons. 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.

**Required** If impact_period is specified, otherwise **forbidden**.| +| **impact_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the services are affected by the disruption mentioned in the alert.

**Required** If communication_period is specified, otherwise **forbidden**.| | **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. | | **cause** | [Cause](#enum-cause) | Conditionally Required | One | If cause_detail is included, then Cause must also be included. | **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.

**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future. From b4daae011ed3168a8a100fabaa13f052356718df Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Tue, 25 Mar 2025 14:18:29 -0400 Subject: [PATCH 4/9] Update reference.md --- gtfs-realtime/spec/en/reference.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gtfs-realtime/spec/en/reference.md b/gtfs-realtime/spec/en/reference.md index b2be3068..e898f1f0 100644 --- a/gtfs-realtime/spec/en/reference.md +++ b/gtfs-realtime/spec/en/reference.md @@ -340,9 +340,9 @@ An alert, indicating some sort of incident in the public transit network. | _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ | |------------------|------------|----------------|-------------------|-------------------| -| **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

**Forbidden** if communication_period and impact_period exist | -| **communication_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the alert should be shown to the user strictly for informative reasons. 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.

**Required** If impact_period is specified, otherwise **forbidden**.| -| **impact_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the services are affected by the disruption mentioned in the alert.

**Required** If communication_period is specified, otherwise **forbidden**.| +| **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

- **Forbidden** if communication_period and impact_period exist | +| **communication_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the alert should be shown to the user strictly for informative reasons. 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.

- **Required** If impact_period is specified.
- **Forbidden** otherwise.| +| **impact_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the services are affected by the disruption mentioned in the alert.

- **Required** If communication_period is specified.
- **Forbidden** otherwise.| | **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. | | **cause** | [Cause](#enum-cause) | Conditionally Required | One | If cause_detail is included, then Cause must also be included. | **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.

**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future. From b1ba140da59ec6eec9e8ec1e0d5876d02ff69ef1 Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Thu, 3 Apr 2025 16:34:41 -0400 Subject: [PATCH 5/9] Update reference.md --- gtfs-realtime/spec/en/reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtfs-realtime/spec/en/reference.md b/gtfs-realtime/spec/en/reference.md index e898f1f0..d7280e01 100644 --- a/gtfs-realtime/spec/en/reference.md +++ b/gtfs-realtime/spec/en/reference.md @@ -341,8 +341,8 @@ An alert, indicating some sort of incident in the public transit network. | _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ | |------------------|------------|----------------|-------------------|-------------------| | **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

- **Forbidden** if communication_period and impact_period exist | -| **communication_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the alert should be shown to the user strictly for informative reasons. 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.

- **Required** If impact_period is specified.
- **Forbidden** otherwise.| -| **impact_period** | [TimeRange](#message-timerange) | Conditionally Required | Many | Time when the services are affected by the disruption mentioned in the alert.

- **Required** If communication_period is specified.
- **Forbidden** otherwise.| +| **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. If multiple ranges are given, the alert will be shown during all of them.| +| **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.| | **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. | | **cause** | [Cause](#enum-cause) | Conditionally Required | One | If cause_detail is included, then Cause must also be included. | **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.

**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future. From 6054d186797ff96e0a8150ab2c3a45190c3b7695 Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Thu, 3 Apr 2025 16:36:39 -0400 Subject: [PATCH 6/9] Update reference.md --- gtfs-realtime/spec/en/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtfs-realtime/spec/en/reference.md b/gtfs-realtime/spec/en/reference.md index d7280e01..c91f584c 100644 --- a/gtfs-realtime/spec/en/reference.md +++ b/gtfs-realtime/spec/en/reference.md @@ -340,7 +340,7 @@ An alert, indicating some sort of incident in the public transit network. | _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ | |------------------|------------|----------------|-------------------|-------------------| -| **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

- **Forbidden** if communication_period and impact_period exist | +| **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

- **Forbidden** if communication_period and impact_period exist. **Optional** Otherwise. | | **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. If multiple ranges are given, the alert will be shown during all of them.| | **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.| | **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. | From e5cb86715c99ff426fdb9d39396333060a2e0ba1 Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Thu, 3 Apr 2025 16:37:26 -0400 Subject: [PATCH 7/9] change "and" to "or" --- gtfs-realtime/spec/en/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtfs-realtime/spec/en/reference.md b/gtfs-realtime/spec/en/reference.md index c91f584c..d7458bc8 100644 --- a/gtfs-realtime/spec/en/reference.md +++ b/gtfs-realtime/spec/en/reference.md @@ -340,7 +340,7 @@ An alert, indicating some sort of incident in the public transit network. | _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ | |------------------|------------|----------------|-------------------|-------------------| -| **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

- **Forbidden** if communication_period and impact_period exist. **Optional** Otherwise. | +| **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

- **Forbidden** if communication_period or impact_period exist. **Optional** Otherwise. | | **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. If multiple ranges are given, the alert will be shown during all of them.| | **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.| | **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. | From 2faff738b51703fea62b28b3d60b9b3047b20103 Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Mon, 14 Apr 2025 15:28:26 +0000 Subject: [PATCH 8/9] deprecate active_period and add the two fields to the proto file --- gtfs-realtime/proto/gtfs-realtime.proto | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gtfs-realtime/proto/gtfs-realtime.proto b/gtfs-realtime/proto/gtfs-realtime.proto index 34a8a20a..64679bf5 100644 --- a/gtfs-realtime/proto/gtfs-realtime.proto +++ b/gtfs-realtime/proto/gtfs-realtime.proto @@ -585,7 +585,18 @@ message Alert { // 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. - repeated TimeRange active_period = 1; + // Should not be used - for backwards-compatibility only. + repeated TimeRange active_period = 1 [deprecated = true]; + + // 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. + // If multiple ranges are given, the alert will be shown during all of them. + repeated TimeRange communication_period = 2; + + // 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. + repeated TimeRange impact_period = 3; // Entities whose users we should notify of this alert. repeated EntitySelector informed_entity = 5; From 7fc635c7073f014ea50cfd1357b9231ea86050d9 Mon Sep 17 00:00:00 2001 From: Skander Chouchene Date: Thu, 16 Oct 2025 14:09:45 -0400 Subject: [PATCH 9/9] remove forbidden and add migration guide --- .../en/examples/migration-active-period.md | 101 ++++++++++++++++++ gtfs-realtime/spec/en/reference.md | 2 +- 2 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 gtfs-realtime/spec/en/examples/migration-active-period.md diff --git a/gtfs-realtime/spec/en/examples/migration-active-period.md b/gtfs-realtime/spec/en/examples/migration-active-period.md new file mode 100644 index 00000000..aa747179 --- /dev/null +++ b/gtfs-realtime/spec/en/examples/migration-active-period.md @@ -0,0 +1,101 @@ +## Migration Guide - Transition from active_period to communication_period and impact_period + +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.”* + +There was an ambiguity in this definition where the “time when the alert should be shown to the user” can be construed both as: +- Time when the user is informed of the alert. +- Time when the service disruption resulting from the alert is in effect. + +To resolve this ambiguity, `communication_period` and `impact_period` are introduced. +- `communication_period`: Time when the alert should be shown to the user strictly for informative reasons. +- `impact_period`: Time when the services are affected by the alert. + +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`. + +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`. + +## Producers +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. + +**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`. + +Whenever an alert has `communication_period` and `impact_period` specified, it is recommended to not include `active_period` (it is already an optional field). + +To promote best practices, it is recommended to specify `communication_period` and `impact_period` together as much as possible. + +All of the following examples are valid. +### The recommended option + +```` +alert { +“communication_period”: [{ "start": …, "end": … } ], ← Time when the user is informed of the alert. +"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. +... +} +```` + +### Other valid options that are not recommended + +```` +alert { +“active_period”: [{ "start": …, "end": … } ], +“communication_period”: [{ "start": …, "end": … } ], +"impact_period": [ { "start": …, "end": … } ], +... +} +```` + + +```` +alert { +“active_period”: [{ "start": …, "end": … } ], +"impact_period": [ { "start": …, "end": … } ], +... +} +```` + + +```` +alert { +“active_period”: [{ "start": …, "end": … } ], +“communication_period”: [{ "start": …, "end": … } ], +... +} +```` + + +```` +alert { +“active_period”: [{ "start": …, "end": … } ], +... +} +```` + + +```` +alert { +“communication_period”: [{ "start": …, "end": … } ], +... +} +```` + + +```` +alert { +“impact_period”: [{ "start": …, "end": … } ], +... +} +```` + +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`. + +## Consumers + +For consumers, you can interpret the fields based on their spec definition. +- If `active_period` exists with `communication_period` and `impact_period`, **ignore `active_period`** and use the other two fields. + +- If `active_period` exists with `impact_period`, **ignore `active_period`** and do not interpret it as `communication_period`. + +- If `active_period` exists with `communication_period`, **ignore `active_period`** and do not interpret it as `impact_period`. + +- If `active_period` exists alone, then use it. diff --git a/gtfs-realtime/spec/en/reference.md b/gtfs-realtime/spec/en/reference.md index d7458bc8..f9701714 100644 --- a/gtfs-realtime/spec/en/reference.md +++ b/gtfs-realtime/spec/en/reference.md @@ -340,7 +340,7 @@ An alert, indicating some sort of incident in the public transit network. | _**Field Name**_ | _**Type**_ | _**Required**_ | _**Cardinality**_ | _**Description**_ | |------------------|------------|----------------|-------------------|-------------------| -| **active_period** | [TimeRange](#message-timerange) | Conditionally Forbidden | 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.

- **Forbidden** if communication_period or impact_period exist. **Optional** Otherwise. | +| **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. | | **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. If multiple ranges are given, the alert will be shown during all of them.| | **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.| | **informed_entity** | [EntitySelector](#message-entityselector) | Required | Many | Entities whose users we should notify of this alert. At least one informed_entity must be provided. |