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
1818from sentry .api .serializers .types import GroupEventReleaseSerializerResponse
1919from sentry .eventtypes import EventTypeStr
2020from sentry .grouping .api import GroupingConfig
21+ from sentry .interfaces .sdk import EventSdkApiContext
2122from sentry .interfaces .user import EventUserApiContext
2223from sentry .issues .issue_occurrence import IssueOccurrenceResponse
2324from sentry .models .eventattachment import EventAttachment
24- from sentry .models .eventerror import EventError
25+ from sentry .models .eventerror import EventError , EventErrorApiContext
2526from sentry .models .release import Release
2627from sentry .models .userreport import UserReport
2728from sentry .sdk_updates import SdkSetupState , get_suggested_updates
@@ -54,6 +55,11 @@ class EventTag(EventTagOptional):
5455 value : str
5556
5657
58+ class MeasurementValue (TypedDict ):
59+ value : float
60+ unit : NotRequired [str | None ]
61+
62+
5763def get_crash_files (events ):
5864 event_ids = [x .event_id for x in events if x .platform == "native" ]
5965 if event_ids :
@@ -161,12 +167,12 @@ class BaseEventSerializerResponse(TypedDict):
161167 size : int | None
162168 entries : list [Any ]
163169 dist : str | None
164- sdk : dict [ str , str ]
170+ sdk : EventSdkApiContext | None
165171 context : dict [str , Any ] | None
166172 packages : dict [str , Any ]
167173 type : EventTypeStr
168- metadata : Any
169- errors : list [Any ]
174+ metadata : dict [ str , Any ]
175+ errors : list [EventErrorApiContext ]
170176 occurrence : IssueOccurrenceResponse | None
171177 _meta : dict [str , Any ]
172178
@@ -180,10 +186,10 @@ class ErrorEventFields(TypedDict, total=False):
180186
181187
182188class TransactionEventFields (TypedDict , total = False ):
183- startTimestamp : datetime
184- endTimestamp : datetime
185- measurements : Any
186- breakdowns : Any
189+ startTimestamp : float
190+ endTimestamp : float
191+ measurements : dict [ str , MeasurementValue ] | None
192+ breakdowns : dict [ str , dict [ str , MeasurementValue ]] | None
187193
188194
189195class EventSerializerResponse (
@@ -600,7 +606,7 @@ def serialize(self, obj, attrs, user, **kwargs):
600606 "platform" : str | None ,
601607 "dateCreated" : datetime ,
602608 "crashFile" : str | None ,
603- "metadata" : dict [str , Any ] | None ,
609+ "metadata" : dict [str , Any ],
604610 },
605611)
606612
0 commit comments