Skip to main content

bybit/rest/v5/
endpoints.rs

1pub enum API {
2  MarketV5(MarketV5),
3  TradeV5(TradeV5),
4  PositionV5(Position),
5  AccountV5(AccountV5),
6  AssetV5(AssetV5),
7  SpotLeverage(SpotLeverage),
8  SpotMargin(SpotMargin),
9}
10
11pub enum WebsocketAPI {
12  PublicSpot,
13  PublicLinear,
14  PublicInverse,
15  Private,
16  TradeStream,
17}
18
19pub enum Public {
20  Spot,
21  Linear,
22  Inverse,
23}
24
25pub enum MarketV5 {
26  Time,
27  Kline,
28  MarkPriceKline,
29  IndexPriceKline,
30  PremiumIndexPriceKline,
31  InstrumentsInfo,
32  OrderBook,
33  Tickers,
34  FundingRate,
35  RecentTrades,
36  OpenInterest,
37  HistoricalVolatility,
38  Insurance,
39  RiskLimit,
40  DeliveryPrice,
41  LongShortRatio,
42}
43
44pub enum TradeV5 {
45  Place,
46  Amend,
47  Cancel,
48  OpenOrders,
49  CancelAll,
50  History,
51  TradeHistory,
52  BatchPlace,
53  BatchAmend,
54  BatchCancel,
55  SpotBorrowCheck,
56  SetDisconnectCancelAll,
57}
58
59pub enum Position {
60  Information,
61  SetLeverage,
62  SetRiskLimit,
63  SetTradingStop,
64  SwitchIsolated,
65  SwitchMode,
66  SetAutoAddMargin,
67  AddOrReduceMargin,
68  ClosedPnl,
69  MovePosition,
70  MovePositionHistory,
71}
72
73pub enum AccountV5 {
74  Balance,
75  UpgradeToUTA,
76  BorrowHistory,
77  RepayLiability,
78  SetCollateral,
79  BatchSetCollateral,
80  CollateralInfo,
81  CoinGreeks,
82  FeeRate,
83  Information,
84  TransactionLog,
85  SetMarginMode,
86  SMPGroupID,
87  SetSpotHedging,
88}
89
90pub enum AssetV5 {
91  CoinExchangeRecord,
92  DeliveryRecord,
93  SettlementRecord,
94  InterTransfer,
95  QueryTransferList,
96  SaveTransferSubmember,
97  UniversalTransfer,
98  QueryUniversalTransferList,
99  QueryTransferCoinList,
100  QueryTransferSubmemberList,
101  QueryAccountCoinBalance,
102  QueryAssetInfo,
103  QueryAllowedList,
104  QueryRecord,
105  QueryInfo,
106  QueryAsset,
107  Withdraw,
108  CancelWithdraw,
109  Deposit,
110  QuerySubmemberAddress,
111  OrderRecord,
112}
113
114pub enum SpotLeverage {
115  Info,
116  MarketInfo,
117  Purchase,
118  Redeem,
119  OrderRecord,
120}
121
122pub enum SpotMargin {
123  SwitchMode,
124  SetLeverage,
125  MarginCoinInfo,
126  State,
127  BorrowableCoin,
128  LoanInfo,
129  LoanAccountInfo,
130  Borrow,
131  Repay,
132  BorrowOrderDetail,
133  RepayOrderDetail,
134  ClassicMarginToggle,
135}
136
137impl AsRef<str> for API {
138  fn as_ref(&self) -> &str {
139    match self {
140      API::MarketV5(route) => match route {
141        MarketV5::Time => "/v5/market/time",
142        MarketV5::Insurance => "/v5/market/insurance",
143        MarketV5::Kline => "/v5/market/kline",
144        MarketV5::MarkPriceKline => "/v5/market/mark-price-kline",
145        MarketV5::IndexPriceKline => "/v5/market/index-price-kline",
146        MarketV5::PremiumIndexPriceKline => "/v5/market/premium-index-price-kline",
147        MarketV5::InstrumentsInfo => "/v5/market/instruments-info",
148        MarketV5::OrderBook => "/v5/market/orderbook",
149        MarketV5::Tickers => "/v5/market/tickers",
150        MarketV5::RecentTrades => "/v5/market/recent-trade",
151        MarketV5::FundingRate => "/v5/market/funding/history",
152        MarketV5::OpenInterest => "/v5/market/open-interest",
153        MarketV5::HistoricalVolatility => "/v5/market/historical-volatility",
154        MarketV5::RiskLimit => "/v5/market/risk-limit",
155        MarketV5::DeliveryPrice => "/v5/market/delivery-price",
156        MarketV5::LongShortRatio => "/v5/market/account-ratio",
157      },
158      API::TradeV5(route) => match route {
159        TradeV5::Place => "/v5/order/create",
160        TradeV5::Amend => "/v5/order/amend",
161        TradeV5::Cancel => "/v5/order/cancel",
162        TradeV5::OpenOrders => "/v5/order/realtime",
163        TradeV5::CancelAll => "/v5/order/cancel-all",
164        TradeV5::History => "/v5/order/history",
165        TradeV5::TradeHistory => "/v5/execution/list",
166        TradeV5::BatchPlace => "/v5/order/create-batch",
167        TradeV5::BatchAmend => "/v5/order/amend-batch",
168        TradeV5::BatchCancel => "/v5/order/cancel-batch",
169        TradeV5::SpotBorrowCheck => "/v5/order/spot-borrow-check",
170        TradeV5::SetDisconnectCancelAll => "/v5/order/disconnected-cancel-all",
171      },
172      API::PositionV5(route) => match route {
173        Position::Information => "/v5/position/list",
174        Position::SetLeverage => "/v5/position/set-leverage",
175        Position::SwitchIsolated => "/v5/position/switch-isolated",
176        Position::SwitchMode => "/v5/position/switch-mode",
177        Position::SetRiskLimit => "/v5/position/set-risk-limit",
178        Position::SetTradingStop => "/v5/position/trading-stop",
179        Position::SetAutoAddMargin => "/v5/position/set-auto-add-margin",
180        Position::AddOrReduceMargin => "/v5/position/add-margin",
181        Position::ClosedPnl => "/v5/position/closed-pnl",
182        Position::MovePosition => "/v5/position/move-positions",
183        Position::MovePositionHistory => "/v5/position/move-history",
184      },
185      API::AccountV5(route) => match route {
186        AccountV5::Balance => "/v5/account/wallet-balance",
187        AccountV5::UpgradeToUTA => "/v5/account/upgrade-to-uta",
188        AccountV5::BorrowHistory => "/v5/account/borrow-history",
189        AccountV5::RepayLiability => "/v5/account/quick-repayment",
190        AccountV5::SetCollateral => "/v5/account/set-collateral-switch",
191        AccountV5::BatchSetCollateral => "/v5/account/set-collateral-switch-batch",
192        AccountV5::CollateralInfo => "/v5/account/collateral-info",
193        AccountV5::CoinGreeks => "/v5/asset/coin-greeks",
194        AccountV5::FeeRate => "/v5/account/fee-rate",
195        AccountV5::Information => "/v5/account/info",
196        AccountV5::TransactionLog => "/v5/account/transaction-log",
197        AccountV5::SMPGroupID => "/v5/account/smp-group",
198        AccountV5::SetMarginMode => "/v5/aaccount/set-margin-mode",
199        AccountV5::SetSpotHedging => "/v5/account/set-hedging-mode",
200      },
201      API::AssetV5(route) => match route {
202        AssetV5::CoinExchangeRecord => "/v5/asset/exchange/order-record",
203        AssetV5::DeliveryRecord => "/v5/asset/delivery-record",
204        AssetV5::SettlementRecord => "/v5/asset/settlement-record",
205        AssetV5::QueryAssetInfo => "/v5/asset/transfer/query-asset-info",
206        AssetV5::QueryAccountCoinBalance => "/v5/asset/transfer/query-account-coins-balance",
207        AssetV5::QueryTransferCoinList => "/v5/asset/transfer/query-transfer-coin-list",
208        AssetV5::InterTransfer => "/v5/asset/transfer/inter-transfer",
209        AssetV5::QueryTransferList => "/v5/asset/transfer/query-inter-transfer-list",
210        AssetV5::QueryTransferSubmemberList => "/v5/asset/transfer/query-sub-member-list",
211        AssetV5::UniversalTransfer => "/v5/asset/transfer/universal-transfer",
212        AssetV5::QueryUniversalTransferList => "/v5/asset/transfer/query-universal-transfer-list",
213        AssetV5::QueryAllowedList => "/v5/asset/deposit/query-allowed-list",
214        AssetV5::Withdraw => "/v5/asset/withdraw/create",
215        AssetV5::CancelWithdraw => "/v5/asset/withdraw/cancel",
216        AssetV5::QueryInfo => "/v5/asset/coin/query-info",
217        AssetV5::QueryRecord => "/v5/asset/deposit/query-record",
218        AssetV5::QuerySubmemberAddress => "/v5/asset/deposit/query-sub-member-address",
219        _ => {
220          todo!("Asset route not implemented");
221        }
222      },
223      API::SpotLeverage(route) => match route {
224        SpotLeverage::Info => "/v5/spot-lever-token/info",
225        SpotLeverage::MarketInfo => "v5/spot-lever-token/reference",
226        SpotLeverage::Purchase => "/v5/spot-lever-token/purchase",
227        SpotLeverage::Redeem => "/v5/spot-lever-token/redeem",
228        SpotLeverage::OrderRecord => "/v5/spot-lever-token/order-record",
229      },
230      API::SpotMargin(route) => match route {
231        SpotMargin::SwitchMode => "/v5/spot-margin-trade/switch-mode",
232        SpotMargin::SetLeverage => "/v5/spot-margin-trade/set-leverage",
233        SpotMargin::State => "/v5/spot-margin-trade/state",
234        SpotMargin::MarginCoinInfo => "/v5/spot-cross-margin-trade/pledge-token",
235        SpotMargin::BorrowableCoin => "/v5/spot-cross-margin-trade/borrow-token",
236        SpotMargin::LoanInfo => "/v5/spot-cross-margin-trade/loan",
237        SpotMargin::LoanAccountInfo => "/v5/spot-cross-margin-trade/account",
238        SpotMargin::Borrow => "/v5/spot-cross-margin-trade/loan",
239        SpotMargin::Repay => "/v5/spot-cross-margin-trade/repay",
240        SpotMargin::BorrowOrderDetail => "/v5/spot-cross-margin-trade/orders",
241        SpotMargin::RepayOrderDetail => "/v5/spot-cross-margin-trade/repay-history",
242        SpotMargin::ClassicMarginToggle => "/v5/spot-cross-margin-trade/switch",
243      },
244    }
245  }
246}