diff --git a/src/sentry/workflow_engine/endpoints/serializers/group_open_period_serializer.py b/src/sentry/workflow_engine/endpoints/serializers/group_open_period_serializer.py index 01e835b06a0f5e..c9996888e67e8f 100644 --- a/src/sentry/workflow_engine/endpoints/serializers/group_open_period_serializer.py +++ b/src/sentry/workflow_engine/endpoints/serializers/group_open_period_serializer.py @@ -22,6 +22,7 @@ class GroupOpenPeriodResponse(TypedDict): start: datetime end: datetime | None isOpen: bool + eventId: str | None activities: list[GroupOpenPeriodActivityResponse] | None @@ -89,5 +90,6 @@ def serialize( else None ), isOpen=obj.date_ended is None, + eventId=obj.event_id, activities=attrs.get("activities"), ) diff --git a/tests/sentry/workflow_engine/endpoints/test_organization_open_periods.py b/tests/sentry/workflow_engine/endpoints/test_organization_open_periods.py index 13571b0bf15430..388fe489c8242f 100644 --- a/tests/sentry/workflow_engine/endpoints/test_organization_open_periods.py +++ b/tests/sentry/workflow_engine/endpoints/test_organization_open_periods.py @@ -36,6 +36,8 @@ def setUp(self) -> None: DetectorGroup.objects.create(detector=self.detector, group=self.group) self.group_open_period = GroupOpenPeriod.objects.get(group=self.group) + self.group_open_period.event_id = "a" * 32 + self.group_open_period.save() self.opened_gopa = GroupOpenPeriodActivity.objects.create( date_added=self.group_open_period.date_added, @@ -66,6 +68,7 @@ def test_open_period_linked_to_group(self) -> None: assert open_period["start"] == self.group.first_seen assert open_period["end"] is None assert open_period["isOpen"] is True + assert open_period["eventId"] == self.group_open_period.event_id assert len(open_period["activities"]) == 1 assert open_period["activities"][0] == { "id": str(self.opened_gopa.id), @@ -114,6 +117,7 @@ def test_open_periods_resolved_group(self) -> None: assert resp["start"] == self.group.first_seen assert resp["end"] == resolved_time assert resp["isOpen"] is False + assert resp["eventId"] == open_period.event_id assert len(resp["activities"]) == 2 assert resp["activities"][0] == { "id": str(self.opened_gopa.id), @@ -199,6 +203,7 @@ def test_open_periods_unresolved_group(self) -> None: assert resp["start"] == unresolved_time assert resp["end"] == second_resolved_time assert resp["isOpen"] is False + assert resp["eventId"] == open_period2.event_id assert len(resp["activities"]) == 2 assert resp["activities"][0] == { "id": str(opened_gopa2.id), @@ -217,6 +222,7 @@ def test_open_periods_unresolved_group(self) -> None: assert resp2["start"] == self.group.first_seen assert resp2["end"] == resolved_time assert resp2["isOpen"] is False + assert resp2["eventId"] == open_period.event_id assert len(resp2["activities"]) == 2 assert resp2["activities"][0] == { "id": str(self.opened_gopa.id), @@ -290,6 +296,7 @@ def test_open_periods_limit(self) -> None: assert resp["start"] == unresolved_time assert resp["end"] == second_resolved_time assert resp["isOpen"] is False + assert resp["eventId"] == open_period.event_id def test_get_open_periods_time_range_starts_after_query_start(self) -> None: """Test that open periods starting after query_start and ending after query_end are included.""" @@ -448,6 +455,7 @@ def test_open_period_activities_time_period(self) -> None: assert open_period["start"] == self.group_open_period.date_started assert open_period["end"] is None assert open_period["isOpen"] is True + assert open_period["eventId"] == self.group_open_period.event_id assert ( len(open_period["activities"]) == 1 ) # don't include the opened GOPA, whose date_added doesn't overlap