From c966aec4368d6f037869385b79efac5c209d48fb Mon Sep 17 00:00:00 2001 From: Cesare Naldi <3353250+cesarenaldi@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:04:25 +0200 Subject: [PATCH] feat(models): add parent_event_id to Event --- src/polymarket/models/gamma/event.py | 4 +++- tests/unit/test_gamma_models.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/polymarket/models/gamma/event.py b/src/polymarket/models/gamma/event.py index 2c6dfc3..85b4a1f 100644 --- a/src/polymarket/models/gamma/event.py +++ b/src/polymarket/models/gamma/event.py @@ -257,6 +257,7 @@ class Event(BaseModel): """A Polymarket event.""" id: EventId + parent_event_id: EventId | None = Field(default=None, validation_alias="parentEventId") ticker: str | None = None slug: str | None = None title: str | None = None @@ -309,7 +310,7 @@ def render(self: Event) -> str: return render(self) - @field_validator("id", mode="before") + @field_validator("id", "parent_event_id", mode="before") @classmethod def _coerce_id(cls, value: object) -> object: return coerce_string_id(value) @@ -331,6 +332,7 @@ def _normalize_event(cls, value: object) -> object: return { "id": data.get("id"), + "parent_event_id": data.get("parentEventId"), "ticker": data.get("ticker"), "slug": data.get("slug"), "title": data.get("title"), diff --git a/tests/unit/test_gamma_models.py b/tests/unit/test_gamma_models.py index f66d97c..b9d8d49 100644 --- a/tests/unit/test_gamma_models.py +++ b/tests/unit/test_gamma_models.py @@ -414,6 +414,17 @@ def test_event_accepts_integer_id_per_ts_schema() -> None: assert event.id == "902661" +def test_event_parent_event_id_coerces_integer_to_event_id() -> None: + event = Event.parse_response(_minimal_event_payload(parentEventId=570146)) + + assert event.parent_event_id == "570146" + + +def test_event_parent_event_id_defaults_to_none() -> None: + assert Event.parse_response(_minimal_event_payload()).parent_event_id is None + assert Event.parse_response(_minimal_event_payload(parentEventId=None)).parent_event_id is None + + def test_event_nested_series_accepts_integer_id() -> None: event = Event.parse_response( _minimal_event_payload(series=[{"id": 7, "slug": "s1", "title": "Series 1"}])