Skip to main content

binance/spot/
url.rs

1// Mainnet
2
3pub const BASE_URL_API: &str = "https://api.binance.com";
4pub const BASE_URL_API_GCP: &str = "https://api-gcp.binance.com";
5pub const BASE_URL_API1: &str = "https://api1.binance.com";
6pub const BASE_URL_API2: &str = "https://api2.binance.com";
7pub const BASE_URL_API3: &str = "https://api3.binance.com";
8pub const BASE_URL_API4: &str = "https://api4.binance.com";
9
10pub const BASE_URL_WEBSOCKET_API1: &str = "wss://ws-api.binance.com";
11pub const BASE_URL_WEBSOCKET_API2: &str = "wss://ws-api.binance.com:443";
12pub const BASE_URL_WEBSOCKET_API3: &str = "wss://ws-api.binance.com:9443";
13
14pub const BASE_URL_STREAM1: &str = "wss://stream.binance.com";
15pub const BASE_URL_STREAM2: &str = "wss://stream.binance.com:443";
16pub const BASE_URL_STREAM3: &str = "wss://stream.binance.com:9443";
17
18/// Market Data Only URLs
19/// These URLs do not require any authentication (i.e. The API key is not necessary) and serve only public market data.
20pub const BASE_URL_MARKET_DATA_API: &str = "https://data-api.binance.vision";
21pub const BASE_URL_MARKET_DATA_STREAM1: &str = "wss://data-stream.binance.vision";
22pub const BASE_URL_MARKET_DATA_STREAM2: &str = "wss://data-stream.binance.vision:443";
23pub const BASE_URL_MARKET_DATA_STREAM3: &str = "wss://data-stream.binance.vision:9443";
24
25// Demo
26pub const BASE_URL_DEMO_API: &str = "https://demo-api.binance.com";
27
28// Testnet
29
30pub const BASE_URL_TESTNET_API: &str = "https://testnet.binance.vision";
31
32pub const BASE_URL_TESTNET_WEBSOCKET_API1: &str = "wss://ws-api.testnet.binance.vision";
33pub const BASE_URL_TESTNET_WEBSOCKET_API2: &str = "wss://ws-api.testnet.binance.vision:9443";
34
35pub const BASE_URL_TESTNET_STREAM1: &str = "wss://stream.testnet.binance.com";
36pub const BASE_URL_TESTNET_STREAM2: &str = "wss://stream.testnet.binance.com:443";
37pub const BASE_URL_TESTNET_STREAM3: &str = "wss://stream.testnet.binance.com:9443";
38
39pub enum Path {
40    // General endpoints.
41    Ping,
42    Time,
43    ExchangeInfo,
44
45    // Market Data endpoints.
46    Depth,
47    Trades,
48    HistoricalTrades,
49    AggTrades,
50    KLines,
51    UIKLines,
52    AvgPrice,
53    Ticker24hr,
54    TickerTradingDay,
55    TickerPrice,
56    TickerBook,
57    Ticker,
58
59    // Trading endpoints
60    Order,
61    OrderTest,
62    OpenOrders,
63    OrderCancelReplace,
64    OrderAmendKeepPriority,
65    OrderListOCO,
66    OrderListOTO,
67    OrderListOTOCO,
68    OrderList,
69    SOROrder,
70    SOROrderTest,
71
72    // Account endpoints
73    Account,
74    RateLimitOrder,
75
76    // Websocket endpoints
77    WebSocketApiV3,
78    WebSocket,
79    Stream,
80}
81
82impl std::fmt::Display for Path {
83    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
84        let s = match self {
85            // General endpoints.
86            Self::Ping => "/api/v3/ping",
87            Self::Time => "/api/v3/time",
88            Self::ExchangeInfo => "/api/v3/exchangeInfo",
89
90            // Market Data endpoints.
91            Self::Depth => "/api/v3/depth",
92            Self::Trades => "/api/v3/trades",
93            Self::HistoricalTrades => "/api/v3/historicalTrades",
94            Self::AggTrades => "/api/v3/aggTrades",
95            Self::KLines => "/api/v3/klines",
96            Self::UIKLines => "/api/v3/uiKlines",
97            Self::AvgPrice => "/api/v3/avgPrice",
98            Self::Ticker24hr => "/api/v3/ticker/24hr",
99            Self::TickerTradingDay => "/api/v3/ticker/tradingDay",
100            Self::TickerPrice => "/api/v3/ticker/price",
101            Self::TickerBook => "/api/v3/ticker/bookTicker",
102            Self::Ticker => "/api/v3/ticker",
103
104            // Trading endpoints
105            Self::Order => "/api/v3/order",
106            Self::OrderTest => "/api/v3/order/test",
107            Self::OpenOrders => "/api/v3/openOrders",
108            Self::OrderCancelReplace => "/api/v3/order/cancelReplace",
109            Self::OrderAmendKeepPriority => "/api/v3/order/amend/keepPriority",
110            Self::OrderListOCO => "/api/v3/orderList/oco",
111            Self::OrderListOTO => "/api/v3/orderList/oto",
112            Self::OrderListOTOCO => "/api/v3/orderList/otoco",
113            Self::OrderList => "/api/v3/orderList",
114            Self::SOROrder => "/api/v3/sor/order",
115            Self::SOROrderTest => "/api/v3/sor/order/test",
116
117            // Account endpoints
118            Self::Account => "/api/v3/account",
119            Self::RateLimitOrder => "/api/v3/rateLimit/order",
120
121            // Websocket endpoints
122            Self::WebSocketApiV3 => "/ws-api/v3",
123            Self::WebSocket => "/ws",
124            Self::Stream => "/stream",
125        };
126
127        write!(f, "{s}")
128    }
129}
130
131// TODO:
132// X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter)
133// X-MBX-ORDER-COUNT-**
134pub const HEADER_RETRY_AFTER: &str = "Retry-After";
135pub const HEADER_X_MBX_APIKEY: &str = "X-MBX-APIKEY";
136pub const HEADER_X_MBX_TIME_UNIT: &str = "X-MBX-TIME-UNIT";
137pub const HEADER_VALUE_MICROSECOND: &str = "MICROSECOND";