bybit-api 0.1.0

A Rust SDK for the Bybit V5 API - async, type-safe, zero-panic
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] - 2026-02-22

### Added

- Initial release of bybit-api Rust SDK
- **HTTP Client**
  - Support for mainnet, testnet, and demo environments
  - HMAC-SHA256 request signing
  - Timeout protection on all requests
  - Automatic error parsing and handling
- **Market API**
  - `get_server_time()` - Get server time
  - `get_instruments_info()` - Get instruments info
  - `get_orderbook()` - Get orderbook depth
  - `get_tickers()` - Get 24hr ticker
  - `get_klines()` - Get kline/candlestick data
  - `get_funding_history()` - Get funding rate history
  - `get_recent_trades()` - Get recent trades
  - `get_open_interest()` - Get open interest
  - `get_risk_limits()` - Get risk limits
- **Trade API**
  - `place_order()` - Place order with validation
  - `amend_order()` - Amend order
  - `cancel_order()` - Cancel order
  - `cancel_all_orders()` - Cancel all orders
  - `place_batch_order()` - Batch place orders
  - `amend_batch_order()` - Batch amend orders
  - `cancel_batch_order()` - Batch cancel orders
  - `get_open_orders()` - Get open orders
  - `get_order_history()` - Get order history
- **Position API**
  - `get_positions()` - Get position list
  - `set_leverage()` - Set leverage
  - `set_trading_stop()` - Set TP/SL
  - `switch_position_mode()` - Switch position mode
  - `set_risk_limit()` - Set risk limit
  - `add_margin()` - Add/reduce margin
  - `get_closed_pnl()` - Get closed PnL
  - `get_executions()` - Get execution list
- **Account API**
  - `get_wallet_balance()` - Get wallet balance
  - `get_account_info()` - Get account info
  - `get_fee_rate()` - Get fee rates
  - `get_transaction_log()` - Get transaction log
  - `set_margin_mode()` - Set margin mode
  - `get_collateral_info()` - Get collateral info
  - `get_borrow_history()` - Get borrow history
- **Asset API**
  - `get_coin_info()` - Get coin info
  - `internal_transfer()` - Internal transfer with validation
  - `get_internal_transfer_list()` - Get transfer records
  - `get_deposit_address()` - Get deposit address
  - `get_deposit_records()` - Get deposit records
  - `withdraw()` - Withdraw with strict validation (fund safety)
  - `cancel_withdraw()` - Cancel withdrawal
  - `get_withdraw_records()` - Get withdrawal records
  - `get_withdrawable_amount()` - Get withdrawable amount
- **WebSocket Client**
  - Public channel subscriptions (orderbook, trade, ticker, kline)
  - Private channel subscriptions (position, order, wallet, execution)
  - Automatic ping/pong heartbeat
  - Authentication for private channels
  - Subscription management
- **Examples**
  - `market_ticker.rs` - Market data example
  - `place_order.rs` - Order placement example
  - `get_positions.rs` - Position query example
  - `get_wallet_balance.rs` - Wallet balance example
  - `websocket_orderbook.rs` - WebSocket public example
  - `websocket_private.rs` - WebSocket private example
- **CI/CD**
  - GitHub Actions for CI (fmt, clippy, build, test)
  - GitHub Actions for release (auto publish to crates.io)

### Security

- Zero-panic strategy: No `unwrap()` or `expect()` in library code
- Parameter validation before sending orders and withdrawals
- Large withdrawal warnings for fund safety
- Timeout protection on all HTTP and WebSocket operations