44from collections import defaultdict
55from collections .abc import Sequence
66from datetime import datetime , timezone
7- from typing import Any , TypedDict
7+ from typing import Any , NotRequired , TypedDict
88
99import sentry_sdk
1010import sqlparse
1616from sentry .api .serializers .models .release import GroupEventReleaseSerializer
1717from sentry .api .serializers .models .userreport import UserReportSerializerResponse
1818from sentry .api .serializers .types import GroupEventReleaseSerializerResponse
19+ from sentry .eventtypes import EventTypeStr
1920from sentry .grouping .api import GroupingConfig
21+ from sentry .interfaces .sdk import EventSdkApiContext
2022from sentry .interfaces .user import EventUserApiContext
2123from sentry .issues .issue_occurrence import IssueOccurrenceResponse
2224from sentry .models .eventattachment import EventAttachment
23- from sentry .models .eventerror import EventError
25+ from sentry .models .eventerror import EventError , EventErrorApiContext
2426from sentry .models .release import Release
2527from sentry .models .userreport import UserReport
2628from sentry .sdk_updates import SdkSetupState , get_suggested_updates
@@ -53,6 +55,11 @@ class EventTag(EventTagOptional):
5355 value : str
5456
5557
58+ class MeasurementValue (TypedDict ):
59+ value : float
60+ unit : NotRequired [str | None ]
61+
62+
5663def get_crash_files (events ):
5764 event_ids = [x .event_id for x in events if x .platform == "native" ]
5865 if event_ids :
@@ -160,12 +167,12 @@ class BaseEventSerializerResponse(TypedDict):
160167 size : int | None
161168 entries : list [Any ]
162169 dist : str | None
163- sdk : dict [ str , str ]
170+ sdk : EventSdkApiContext | None
164171 context : dict [str , Any ] | None
165172 packages : dict [str , Any ]
166- type : str
167- metadata : Any
168- errors : list [Any ]
173+ type : EventTypeStr
174+ metadata : dict [ str , Any ]
175+ errors : list [EventErrorApiContext ]
169176 occurrence : IssueOccurrenceResponse | None
170177 _meta : dict [str , Any ]
171178
@@ -179,10 +186,10 @@ class ErrorEventFields(TypedDict, total=False):
179186
180187
181188class TransactionEventFields (TypedDict , total = False ):
182- startTimestamp : datetime
183- endTimestamp : datetime
184- measurements : Any
185- breakdowns : Any
189+ startTimestamp : float
190+ endTimestamp : float
191+ measurements : dict [ str , MeasurementValue ] | None
192+ breakdowns : dict [ str , dict [ str , MeasurementValue ]] | None
186193
187194
188195class EventSerializerResponse (
@@ -599,7 +606,7 @@ def serialize(self, obj, attrs, user, **kwargs):
599606 "platform" : str | None ,
600607 "dateCreated" : datetime ,
601608 "crashFile" : str | None ,
602- "metadata" : dict [str , Any ] | None ,
609+ "metadata" : dict [str , Any ],
603610 },
604611)
605612
0 commit comments