Skip to content

Commit d2999aa

Browse files
authored
Merge pull request #34 from pbeets/release/v0.3.0
release: v0.3.0
2 parents cc5d673 + 1417ce8 commit d2999aa

File tree

16 files changed

+202
-38
lines changed

16 files changed

+202
-38
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased]
8+
## [0.3.0] - 2026-02-28
99

1010
### Added
1111

@@ -86,6 +86,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8686
- New `UserOrders` WebSocket channel for real-time order update notifications
8787
(`UserOrderData`, `UserOrderEventType`). Requires authentication, supports
8888
optional `market_tickers` filtering.
89+
- `QuoteExecuted` variant on `CommunicationData` enum for WebSocket quote
90+
execution notifications (`QuoteExecutedData` with `quote_id`, `rfq_id`,
91+
`order_id`, `client_order_id`, `executed_ts`). Previously, quote execution
92+
events on the `communications` channel were silently dropped.
8993
- `subaccount` filter on `ListRfqsParams` for per-subaccount RFQ queries.
9094
- `subaccount` filter on `GetOrderGroupsParams` for per-subaccount order group
9195
queries. New `get_order_group_for_subaccount()` method on `KalshiClient`.

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kalshi-trade-rs"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
edition = "2024"
55
authors = ["pbeets"]
66
description = "Rust client for the Kalshi trading API and WebSocket streams"

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ An unofficial Rust client library for the [Kalshi](https://kalshi.com) predictio
99

1010
## Key Features
1111

12-
- **REST Client**: Full coverage of 84 Kalshi API endpoints including portfolio management, order operations, market data, exchange status, historical data, and RFQ (Request for Quote) communications
12+
- **REST Client**: Full coverage of 86 Kalshi API endpoints including portfolio management, order operations, market data, exchange status, historical data, and RFQ (Request for Quote) communications
1313
- **WebSocket Streaming**: 10 real-time channels — ticker, trade, orderbook, fill, order updates, position, RFQ/quote, order groups, market lifecycle, and multivariate
1414
- **Batch Operations**: Rate-limited `BatchManager` with automatic chunking, retry, and per-order subaccount support
1515
- **Orderbook Aggregation**: Live orderbook state from WebSocket delta streams with gap detection
@@ -22,7 +22,7 @@ Add to your `Cargo.toml`:
2222

2323
```toml
2424
[dependencies]
25-
kalshi-trade-rs = "0.2.0"
25+
kalshi-trade-rs = "0.3.0"
2626
```
2727

2828
Configure environment variables:
@@ -122,7 +122,7 @@ Stream RFQ events via WebSocket:
122122

123123
```rust
124124
handle.subscribe(Channel::Communications, &[]).await?;
125-
// Receive: RfqCreated, RfqDeleted, QuoteCreated, QuoteAccepted
125+
// Receive: RfqCreated, RfqDeleted, QuoteCreated, QuoteAccepted, QuoteExecuted
126126
```
127127

128128
See [`examples/rfq_verify.rs`](examples/rfq_verify.rs) for a complete verification example.
@@ -144,7 +144,7 @@ let client = KalshiStreamClient::connect_with_strategy(&config, ConnectStrategy:
144144

145145
## Examples
146146

147-
See the [`examples/`](examples/) directory for 24 working examples:
147+
See the [`examples/`](examples/) directory for 25 working examples:
148148

149149
### REST API
150150

@@ -176,6 +176,7 @@ See the [`examples/`](examples/) directory for 24 working examples:
176176
| `stream_reconnect` | Reconnection with resubscription |
177177
| `stream_firehose` | High-volume streaming pattern |
178178
| `stream_lifecycle` | Market lifecycle events |
179+
| `stream_user_orders` | Real-time order update notifications |
179180
| `multi_channel_subscribe` | Multi-channel subscription management |
180181
| `orderbook_aggregator` | Live orderbook state from delta streams |
181182
| `test_auth` | Basic authentication verification |

examples/rfq_verify.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
//! - `CommunicationData::RfqDeleted` - RFQ cancelled
4040
//! - `CommunicationData::QuoteCreated` - Quote submitted
4141
//! - `CommunicationData::QuoteAccepted` - Quote accepted (trade executing)
42+
//! - `CommunicationData::QuoteExecuted` - Quote fully executed
4243
4344
use std::time::Duration;
4445

@@ -227,6 +228,12 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
227228
quote.quote_id, quote.accepted_side
228229
);
229230
}
231+
CommunicationData::QuoteExecuted(quote) => {
232+
println!(
233+
" [QUOTE EXECUTED] {} for RFQ {}",
234+
quote.quote_id, quote.rfq_id
235+
);
236+
}
230237
}
231238
}
232239
StreamMessage::Closed { reason } => {

src/api/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Complete reference for all Kalshi REST API endpoints supported by this library.
7979

8080
| Status | Method | Endpoint | Rust Function | Notes |
8181
|--------|--------|----------|---------------|-------|
82-
|| POST | `/portfolio/order_groups` | `create_order_group()` | |
82+
|| POST | `/portfolio/order_groups/create` | `create_order_group()` | |
8383
|| GET | `/portfolio/order_groups/{id}` | `get_order_group()` | |
8484
|| GET | `/portfolio/order_groups` | `list_order_groups()` | |
8585
|| DELETE | `/portfolio/order_groups/{id}` | `delete_order_group()` | Cancels all orders in group |

src/models/event.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,6 @@ impl GetMultivariateEventsParams {
343343
self
344344
}
345345

346-
/// Set the pagination cursor for fetching subsequent pages.
347346
#[must_use]
348347
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
349348
self.cursor = Some(cursor.into());

src/models/fcm.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ impl GetFcmOrdersParams {
8787
}
8888
}
8989

90-
/// Set the pagination cursor.
9190
#[must_use]
9291
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
9392
self.cursor = Some(cursor.into());
@@ -275,7 +274,6 @@ impl GetFcmPositionsParams {
275274
Ok(self)
276275
}
277276

278-
/// Set the pagination cursor.
279277
#[must_use]
280278
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
281279
self.cursor = Some(cursor.into());

src/models/incentive_program.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ impl GetIncentiveProgramsParams {
9797
self
9898
}
9999

100-
/// Set the pagination cursor.
101100
#[must_use]
102101
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
103102
self.cursor = Some(cursor.into());

src/models/milestone.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ impl GetMilestonesParams {
104104
self
105105
}
106106

107-
/// Set the pagination cursor.
108107
#[must_use]
109108
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
110109
self.cursor = Some(cursor.into());

0 commit comments

Comments
 (0)