Drift
Python MarketFetchParams and EventFetchParams TypedDicts define snake_case key names (search_in, market_id, outcome_id, event_id). TypeScript's equivalent interfaces use camelCase keys (searchIn, marketId, outcomeId, eventId) that match what the sidecar actually expects. If a Python caller passes a MarketFetchParams dict directly, the keys will be wrong and the sidecar will silently ignore them.
TypeScript SDK
sdks/typescript/pmxt/models.ts, lines 365–448 — camelCase keys matching sidecar protocol:
// sdks/typescript/pmxt/models.ts lines 365–448
export interface MarketFilterParams {
searchIn?: SearchIn;
marketId?: string;
outcomeId?: string;
eventId?: string;
// ... other camelCase fields
}
export interface EventFilterCriteria {
searchIn?: SearchIn;
eventId?: string;
// ...
}
Python SDK
sdks/python/pmxt/models.py, lines 555–584 — snake_case keys:
# sdks/python/pmxt/models.py lines 555–584
class MarketFetchParams(TypedDict, total=False):
search_in: Optional[SearchIn] # should be searchIn
market_id: Optional[str] # should be marketId
outcome_id: Optional[str] # should be outcomeId
event_id: Optional[str] # should be eventId
class EventFetchParams(TypedDict, total=False):
event_id: Optional[str] # should be eventId
search_in: Optional[SearchIn] # should be searchIn
The sidecar receives these dicts serialised directly as JSON, so snake_case keys are sent over the wire and not recognised.
Expected
Either:
- Python TypedDicts should use camelCase keys to match the wire protocol (consistent with TypeScript), or
- The Python client should perform snake_case→camelCase key translation before sending the
params dict to the sidecar (and this translation should be documented).
The current situation gives users a false sense of type-safety: the TypedDict type-checks correctly in Python but produces incorrect sidecar requests at runtime.
Impact
Any Python caller using MarketFetchParams or EventFetchParams with search_in, market_id, outcome_id, or event_id fields will get unexpected results (full unfiltered result sets) with no error, because the sidecar ignores the unrecognised snake_case keys. This is a silent correctness bug.
Found by automated SDK cross-language drift audit
Drift
Python
MarketFetchParamsandEventFetchParamsTypedDicts define snake_case key names (search_in,market_id,outcome_id,event_id). TypeScript's equivalent interfaces use camelCase keys (searchIn,marketId,outcomeId,eventId) that match what the sidecar actually expects. If a Python caller passes aMarketFetchParamsdict directly, the keys will be wrong and the sidecar will silently ignore them.TypeScript SDK
sdks/typescript/pmxt/models.ts, lines 365–448 — camelCase keys matching sidecar protocol:Python SDK
sdks/python/pmxt/models.py, lines 555–584 — snake_case keys:The sidecar receives these dicts serialised directly as JSON, so snake_case keys are sent over the wire and not recognised.
Expected
Either:
paramsdict to the sidecar (and this translation should be documented).The current situation gives users a false sense of type-safety: the TypedDict type-checks correctly in Python but produces incorrect sidecar requests at runtime.
Impact
Any Python caller using
MarketFetchParamsorEventFetchParamswithsearch_in,market_id,outcome_id, orevent_idfields will get unexpected results (full unfiltered result sets) with no error, because the sidecar ignores the unrecognised snake_case keys. This is a silent correctness bug.Found by automated SDK cross-language drift audit