Skip to main content

binance/margin/
url.rs

1//! Binance Margin Trading endpoints.
2//!
3//! Margin shares the spot REST host (`api.binance.com`) — margin-specific
4//! routes live under `/sapi/v1/margin/...`. Market data and connectivity
5//! probes are not duplicated here: use [`crate::spot::http::PublicClient`]
6//! for `/api/v3/*` (ping, time, exchange info, klines, depth, tickers, …).
7
8// Mainnet
9pub const BASE_URL_API: &str = "https://api.binance.com";
10
11/// Base URL for the margin user data WebSocket stream.
12///
13/// Margin user data flows over the spot stream host. After creating a
14/// `listenKey` via REST, connect to `<BASE_URL_STREAM>/ws/<listenKey>`.
15pub const BASE_URL_STREAM: &str = "wss://stream.binance.com:9443";
16
17// Testnet
18pub const BASE_URL_TESTNET_API: &str = "https://testnet.binance.vision";
19pub const BASE_URL_TESTNET_STREAM: &str = "wss://stream.testnet.binance.vision:9443";
20
21pub enum Path {
22    // Margin account
23    Account,
24    IsolatedAccount,
25
26    // Margin trading
27    Order,
28
29    // Margin metadata
30    AllAssets,
31    AllPairs,
32
33    // Margin borrow / repay
34    MaxBorrowable,
35
36    // User data stream lifecycle
37    UserDataStream,
38    UserDataStreamIsolated,
39}
40
41impl std::fmt::Display for Path {
42    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
43        let s = match self {
44            Self::Account => "/sapi/v1/margin/account",
45            Self::IsolatedAccount => "/sapi/v1/margin/isolated/account",
46            Self::Order => "/sapi/v1/margin/order",
47            Self::AllAssets => "/sapi/v1/margin/allAssets",
48            Self::AllPairs => "/sapi/v1/margin/allPairs",
49            Self::MaxBorrowable => "/sapi/v1/margin/maxBorrowable",
50            Self::UserDataStream => "/sapi/v1/userDataStream",
51            Self::UserDataStreamIsolated => "/sapi/v1/userDataStream/isolated",
52        };
53        write!(f, "{s}")
54    }
55}
56
57pub const HEADER_RETRY_AFTER: &str = "Retry-After";
58pub const HEADER_X_MBX_APIKEY: &str = "X-MBX-APIKEY";