@@ -15,15 +15,64 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515 limit (PUT ` /portfolio/order_groups/{id}/limit ` ).
1616- New ` get_api_limits() ` endpoint to retrieve API tier and rate limits
1717 (GET ` /account/limits ` ).
18- - ` contracts_limit_fp ` fixed-point string field on ` CreateOrderGroupRequest ` ,
19- ` UpdateOrderGroupLimitRequest ` , ` GetOrderGroupResponse ` , and ` OrderGroupSummary ` .
20- The integer ` contracts_limit ` field is now optional (provide one or both).
2118- New ` OrderGroupUpdates ` WebSocket channel for order group lifecycle events
2219 (` OrderGroupUpdateData ` , ` OrderGroupEventType ` ).
23- - Fixed-point ` _fp ` fields added to WebSocket message types: ` delta_fp ` on
20+ - Subaccount support across order operations: ` cancel_order_for_subaccount() ` ,
21+ ` delete_order_group_for_subaccount() ` , ` reset_order_group_for_subaccount() ` ,
22+ ` trigger_order_group_for_subaccount() ` convenience methods on ` KalshiClient ` .
23+ Optional ` subaccount ` field added to ` CreateOrderRequest ` , ` AmendOrderRequest ` ,
24+ ` DecreaseOrderRequest ` , and ` CreateOrderGroupRequest ` .
25+ - Per-order subaccount support in batch cancels via new ` BatchCancelOrderItem `
26+ type and ` BatchCancelOrdersRequest::with_orders() ` . New
27+ ` cancel_orders_with_items() ` method on ` BatchManager ` .
28+ - ` subaccount_number ` field on ` Order ` and ` Fill ` response types.
29+ - Subaccount support for RFQ/Quote operations: ` subaccount ` field on
30+ ` CreateRfqRequest ` and ` CreateQuoteRequest ` .
31+ - ` target_cost_dollars ` field on ` CreateRfqRequest ` , ` Rfq ` , and ` Quote ` as a
32+ dollar-denominated fixed-point string (replaces deprecated
33+ ` target_cost_centi_cents ` ).
34+ - ` side ` and ` expires_in_seconds ` on ` CreateRfqRequest ` ; ` side ` and ` expires_ts `
35+ on ` Rfq ` and ` Quote ` response types.
36+ - Partial acceptance support: ` contracts ` field on ` AcceptQuoteRequest ` and
37+ ` CreateQuoteRequest ` .
38+ - Fixed-point ` _fp ` fields on REST API types: ` count_fp ` on ` CreateOrderRequest `
39+ and ` AmendOrderRequest ` , ` reduce_by_fp ` /` reduce_to_fp ` on
40+ ` DecreaseOrderRequest ` , ` queue_position_fp ` on ` QueuePosition ` and
41+ ` OrderQueuePositionResponse ` , ` contracts_fp ` on ` CreateRfqRequest ` /` Rfq ` /` Quote ` ,
42+ ` contracts_limit_fp ` on ` CreateOrderGroupRequest ` /` UpdateOrderGroupLimitRequest ` /
43+ ` GetOrderGroupResponse ` /` OrderGroupSummary ` .
44+ - Fixed-point ` _fp ` fields on WebSocket message types: ` delta_fp ` on
2445 ` OrderbookDeltaData ` , ` volume_fp ` /` open_interest_fp ` on ` TickerData ` ,
2546 ` count_fp ` on ` TradeData ` , ` count_fp ` /` post_position_fp ` on ` FillData ` ,
2647 and ` position_fp ` /` volume_fp ` on ` MarketPositionData ` .
48+ - ` Settled ` variant for ` MarketStatus ` enum and ` Scalar ` variant for
49+ ` MarketResult ` enum.
50+ - Integer cent price fields on ` Market ` : ` yes_bid ` , ` yes_ask ` , ` no_bid ` ,
51+ ` no_ask ` , ` last_price ` , ` previous_yes_bid ` , ` previous_yes_ask ` ,
52+ ` previous_price ` , ` notional_value ` , ` liquidity ` .
53+ - Market metadata fields: ` category ` , ` response_price_units ` , ` risk_limit_cents ` ,
54+ ` tick_size ` , ` updated_time ` , ` cap_count ` , ` fractional_trading_enabled ` ,
55+ ` settlement_value ` , ` expiration_value ` .
56+ - ` min_updated_ts ` filter on ` GetMarketsParams ` for querying markets by metadata
57+ update time.
58+ - ` name ` and ` subaccount ` fields on ` CreateOrderGroupRequest ` ; ` name ` , ` status ` ,
59+ ` created_time ` on ` OrderGroupSummary ` .
60+ - ` fee_cost ` on ` Fill ` for exchange fee cost as a fixed-point dollar string.
61+ - ` market_result ` and ` total_cost ` on ` MarketPosition ` .
62+ - ` status ` field on ` Event ` , ` Milestone ` , and ` StructuredTarget ` .
63+ - Series metadata fields: ` category ` , ` status ` , ` tags ` , ` settlement_sources `
64+ (now typed as ` Vec<SettlementSource> ` ), ` contract_url ` , ` contract_terms_url ` ,
65+ ` product_metadata ` , ` fee_type ` , ` fee_multiplier ` , ` additional_prohibitions ` .
66+ - ` client_transfer_id ` on ` TransferBetweenSubaccountsRequest ` for idempotent
67+ transfers.
68+ - Multivariate collection enrichments: new ` CollectionEvent ` and
69+ ` AssociatedEvent ` types; ` events ` , ` open_date ` , ` close_date ` ,
70+ ` associated_events ` , ` is_ordered ` , ` size_min ` , ` size_max ` ,
71+ ` functional_description ` fields on ` MultivariateEventCollection ` .
72+ - Selected-market support for multivariate lookups: ` selected_markets ` field and
73+ ` with_selected_markets() ` constructor on ` CreateMarketInCollectionRequest ` and
74+ ` LookupTickersRequest ` .
75+ - ` lookback_seconds ` filter on ` GetLookupHistoryParams ` .
2776
2877### Fixed
2978
@@ -34,15 +83,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3483
3584### Changed
3685
86+ - ** Breaking:** ` AmendOrderRequest::new() ` no longer requires ` client_order_id `
87+ and ` updated_client_order_id ` — these are now optional. Use
88+ ` AmendOrderRequest::with_client_order_ids() ` for the previous behavior.
89+ - ** Breaking:** ` BatchCancelOrdersRequest::ids ` is now ` Option<Vec<String>> ` .
90+ Existing code using ` .ids ` directly must unwrap. Use
91+ ` BatchCancelOrdersRequest::with_orders() ` for the new per-order subaccount
92+ format.
93+ - ** Breaking:** ` Rfq::target_cost_dollars() ` renamed to
94+ ` Rfq::target_cost_as_dollars() ` to avoid conflict with the new
95+ ` target_cost_dollars ` field.
96+ - ** Breaking:** ` Quote::rfq_target_cost_dollars() ` renamed to
97+ ` Quote::rfq_target_cost_as_dollars() ` .
98+ - ** Breaking:** ` CreateMarketInCollectionRequest::variables ` and
99+ ` LookupTickersRequest::variables ` changed from ` HashMap ` to ` Option<HashMap> `
100+ to support the new ` selected_markets ` alternative.
37101- ** Breaking:** Removed ` initialized ` field from ` OrderbookSummary ` . The
38102 aggregator now guarantees that summaries are only produced for fully
39103 initialized orderbooks, making the field redundant. Remove any
40104 ` summary.initialized ` checks from your code.
105+ - ` CreateRfqRequest::with_target_cost_dollars() ` now sends the dollar amount via
106+ the ` target_cost_dollars ` field instead of converting to centi-cents.
41107- ` Channel::requires_market_ticker() ` now returns ` true ` only for
42108 ` OrderbookDelta ` . Other market data channels (` Ticker ` , ` Trade ` ,
43109 ` MarketLifecycle ` , ` Multivariate ` ) support subscribing with an empty ticker
44110 list to receive updates for all markets.
45111
112+ ### Deprecated
113+
114+ - ` CreateOrderRequest::sell_position_floor() ` — use ` reduce_only ` instead. Only
115+ accepts value of 0.
116+ - ` Rfq::target_cost_as_dollars() ` and ` Quote::rfq_target_cost_as_dollars() ` —
117+ use the ` target_cost_dollars ` / ` rfq_target_cost_dollars ` fields directly.
118+ - ` BatchCancelOrdersRequest::new() ` and ` try_new() ` — use ` with_orders() ` /
119+ ` try_with_orders() ` for per-order subaccount support.
120+ - ` target_cost_centi_cents ` on RFQ/Quote types — use ` target_cost_dollars `
121+ instead.
122+ - ` Order.queue_position ` — always returns 0; use the ` get_order_queue_position `
123+ endpoint instead.
124+ - ` Fill.price ` and ` Trade.price ` — use ` yes_price ` / ` no_price ` instead.
125+ - ` Fill.trade_id ` , ` Fill.market_ticker ` , ` Fill.ts ` — legacy field names.
126+ - ` Event.category ` — use series-level category instead.
127+ - ` MarketPosition.resting_orders_count ` — deprecated by the API.
128+
46129## [ 0.2.0] - 2026-01-18
47130
48131### Added
0 commit comments