ccxt 4.3.42__py2.py3-none-any.whl → 4.3.44__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.42'
25
+ __version__ = '4.3.44'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -182,6 +182,7 @@ from ccxt.wazirx import wazirx # noqa: F4
182
182
  from ccxt.whitebit import whitebit # noqa: F401
183
183
  from ccxt.woo import woo # noqa: F401
184
184
  from ccxt.woofipro import woofipro # noqa: F401
185
+ from ccxt.xt import xt # noqa: F401
185
186
  from ccxt.yobit import yobit # noqa: F401
186
187
  from ccxt.zaif import zaif # noqa: F401
187
188
  from ccxt.zonda import zonda # noqa: F401
@@ -289,6 +290,7 @@ exchanges = [
289
290
  'whitebit',
290
291
  'woo',
291
292
  'woofipro',
293
+ 'xt',
292
294
  'yobit',
293
295
  'zaif',
294
296
  'zonda',
ccxt/abstract/coinex.py CHANGED
@@ -145,6 +145,8 @@ class ImplicitAPI:
145
145
  v2_public_get_futures_position_level = v2PublicGetFuturesPositionLevel = Entry('futures/position-level', ['v2', 'public'], 'GET', {'cost': 1})
146
146
  v2_public_get_futures_liquidation_history = v2PublicGetFuturesLiquidationHistory = Entry('futures/liquidation-history', ['v2', 'public'], 'GET', {'cost': 1})
147
147
  v2_public_get_futures_basis_history = v2PublicGetFuturesBasisHistory = Entry('futures/basis-history', ['v2', 'public'], 'GET', {'cost': 1})
148
+ v2_public_get_assets_deposit_withdraw_config = v2PublicGetAssetsDepositWithdrawConfig = Entry('assets/deposit-withdraw-config', ['v2', 'public'], 'GET', {'cost': 1})
149
+ v2_public_get_assets_all_deposit_withdraw_config = v2PublicGetAssetsAllDepositWithdrawConfig = Entry('assets/all-deposit-withdraw-config', ['v2', 'public'], 'GET', {'cost': 1})
148
150
  v2_private_get_account_subs = v2PrivateGetAccountSubs = Entry('account/subs', ['v2', 'private'], 'GET', {'cost': 1})
149
151
  v2_private_get_account_subs_api_detail = v2PrivateGetAccountSubsApiDetail = Entry('account/subs/api-detail', ['v2', 'private'], 'GET', {'cost': 40})
150
152
  v2_private_get_account_subs_info = v2PrivateGetAccountSubsInfo = Entry('account/subs/info', ['v2', 'private'], 'GET', {'cost': 1})
@@ -163,7 +165,6 @@ class ImplicitAPI:
163
165
  v2_private_get_assets_deposit_address = v2PrivateGetAssetsDepositAddress = Entry('assets/deposit-address', ['v2', 'private'], 'GET', {'cost': 40})
164
166
  v2_private_get_assets_deposit_history = v2PrivateGetAssetsDepositHistory = Entry('assets/deposit-history', ['v2', 'private'], 'GET', {'cost': 40})
165
167
  v2_private_get_assets_withdraw = v2PrivateGetAssetsWithdraw = Entry('assets/withdraw', ['v2', 'private'], 'GET', {'cost': 40})
166
- v2_private_get_assets_deposit_withdraw_config = v2PrivateGetAssetsDepositWithdrawConfig = Entry('assets/deposit-withdraw-config', ['v2', 'private'], 'GET', {'cost': 1})
167
168
  v2_private_get_assets_transfer_history = v2PrivateGetAssetsTransferHistory = Entry('assets/transfer-history', ['v2', 'private'], 'GET', {'cost': 40})
168
169
  v2_private_get_spot_order_status = v2PrivateGetSpotOrderStatus = Entry('spot/order-status', ['v2', 'private'], 'GET', {'cost': 8})
169
170
  v2_private_get_spot_batch_order_status = v2PrivateGetSpotBatchOrderStatus = Entry('spot/batch-order-status', ['v2', 'private'], 'GET', {'cost': 8})
ccxt/abstract/xt.py ADDED
@@ -0,0 +1,152 @@
1
+ from ccxt.base.types import Entry
2
+
3
+
4
+ class ImplicitAPI:
5
+ public_spot_get_currencies = publicSpotGetCurrencies = Entry('currencies', ['public', 'spot'], 'GET', {'cost': 1})
6
+ public_spot_get_depth = publicSpotGetDepth = Entry('depth', ['public', 'spot'], 'GET', {'cost': 0.05})
7
+ public_spot_get_kline = publicSpotGetKline = Entry('kline', ['public', 'spot'], 'GET', {'cost': 0.1})
8
+ public_spot_get_symbol = publicSpotGetSymbol = Entry('symbol', ['public', 'spot'], 'GET', {'cost': 1})
9
+ public_spot_get_ticker = publicSpotGetTicker = Entry('ticker', ['public', 'spot'], 'GET', {'cost': 1})
10
+ public_spot_get_ticker_book = publicSpotGetTickerBook = Entry('ticker/book', ['public', 'spot'], 'GET', {'cost': 1})
11
+ public_spot_get_ticker_price = publicSpotGetTickerPrice = Entry('ticker/price', ['public', 'spot'], 'GET', {'cost': 1})
12
+ public_spot_get_ticker_24h = publicSpotGetTicker24h = Entry('ticker/24h', ['public', 'spot'], 'GET', {'cost': 1})
13
+ public_spot_get_time = publicSpotGetTime = Entry('time', ['public', 'spot'], 'GET', {'cost': 1})
14
+ public_spot_get_trade_history = publicSpotGetTradeHistory = Entry('trade/history', ['public', 'spot'], 'GET', {'cost': 0.1})
15
+ public_spot_get_trade_recent = publicSpotGetTradeRecent = Entry('trade/recent', ['public', 'spot'], 'GET', {'cost': 0.1})
16
+ public_spot_get_wallet_support_currency = publicSpotGetWalletSupportCurrency = Entry('wallet/support/currency', ['public', 'spot'], 'GET', {'cost': 1})
17
+ public_linear_get_future_market_v1_public_contract_risk_balance = publicLinearGetFutureMarketV1PublicContractRiskBalance = Entry('future/market/v1/public/contract/risk-balance', ['public', 'linear'], 'GET', {'cost': 1})
18
+ public_linear_get_future_market_v1_public_contract_open_interest = publicLinearGetFutureMarketV1PublicContractOpenInterest = Entry('future/market/v1/public/contract/open-interest', ['public', 'linear'], 'GET', {'cost': 1})
19
+ public_linear_get_future_market_v1_public_leverage_bracket_detail = publicLinearGetFutureMarketV1PublicLeverageBracketDetail = Entry('future/market/v1/public/leverage/bracket/detail', ['public', 'linear'], 'GET', {'cost': 1})
20
+ public_linear_get_future_market_v1_public_leverage_bracket_list = publicLinearGetFutureMarketV1PublicLeverageBracketList = Entry('future/market/v1/public/leverage/bracket/list', ['public', 'linear'], 'GET', {'cost': 1})
21
+ public_linear_get_future_market_v1_public_q_agg_ticker = publicLinearGetFutureMarketV1PublicQAggTicker = Entry('future/market/v1/public/q/agg-ticker', ['public', 'linear'], 'GET', {'cost': 1})
22
+ public_linear_get_future_market_v1_public_q_agg_tickers = publicLinearGetFutureMarketV1PublicQAggTickers = Entry('future/market/v1/public/q/agg-tickers', ['public', 'linear'], 'GET', {'cost': 1})
23
+ public_linear_get_future_market_v1_public_q_deal = publicLinearGetFutureMarketV1PublicQDeal = Entry('future/market/v1/public/q/deal', ['public', 'linear'], 'GET', {'cost': 1})
24
+ public_linear_get_future_market_v1_public_q_depth = publicLinearGetFutureMarketV1PublicQDepth = Entry('future/market/v1/public/q/depth', ['public', 'linear'], 'GET', {'cost': 1})
25
+ public_linear_get_future_market_v1_public_q_funding_rate = publicLinearGetFutureMarketV1PublicQFundingRate = Entry('future/market/v1/public/q/funding-rate', ['public', 'linear'], 'GET', {'cost': 1})
26
+ public_linear_get_future_market_v1_public_q_funding_rate_record = publicLinearGetFutureMarketV1PublicQFundingRateRecord = Entry('future/market/v1/public/q/funding-rate-record', ['public', 'linear'], 'GET', {'cost': 1})
27
+ public_linear_get_future_market_v1_public_q_index_price = publicLinearGetFutureMarketV1PublicQIndexPrice = Entry('future/market/v1/public/q/index-price', ['public', 'linear'], 'GET', {'cost': 1})
28
+ public_linear_get_future_market_v1_public_q_kline = publicLinearGetFutureMarketV1PublicQKline = Entry('future/market/v1/public/q/kline', ['public', 'linear'], 'GET', {'cost': 1})
29
+ public_linear_get_future_market_v1_public_q_mark_price = publicLinearGetFutureMarketV1PublicQMarkPrice = Entry('future/market/v1/public/q/mark-price', ['public', 'linear'], 'GET', {'cost': 1})
30
+ public_linear_get_future_market_v1_public_q_symbol_index_price = publicLinearGetFutureMarketV1PublicQSymbolIndexPrice = Entry('future/market/v1/public/q/symbol-index-price', ['public', 'linear'], 'GET', {'cost': 1})
31
+ public_linear_get_future_market_v1_public_q_symbol_mark_price = publicLinearGetFutureMarketV1PublicQSymbolMarkPrice = Entry('future/market/v1/public/q/symbol-mark-price', ['public', 'linear'], 'GET', {'cost': 1})
32
+ public_linear_get_future_market_v1_public_q_ticker = publicLinearGetFutureMarketV1PublicQTicker = Entry('future/market/v1/public/q/ticker', ['public', 'linear'], 'GET', {'cost': 1})
33
+ public_linear_get_future_market_v1_public_q_tickers = publicLinearGetFutureMarketV1PublicQTickers = Entry('future/market/v1/public/q/tickers', ['public', 'linear'], 'GET', {'cost': 1})
34
+ public_linear_get_future_market_v1_public_symbol_coins = publicLinearGetFutureMarketV1PublicSymbolCoins = Entry('future/market/v1/public/symbol/coins', ['public', 'linear'], 'GET', {'cost': 3.33})
35
+ public_linear_get_future_market_v1_public_symbol_detail = publicLinearGetFutureMarketV1PublicSymbolDetail = Entry('future/market/v1/public/symbol/detail', ['public', 'linear'], 'GET', {'cost': 3.33})
36
+ public_linear_get_future_market_v1_public_symbol_list = publicLinearGetFutureMarketV1PublicSymbolList = Entry('future/market/v1/public/symbol/list', ['public', 'linear'], 'GET', {'cost': 1})
37
+ public_inverse_get_future_market_v1_public_contract_risk_balance = publicInverseGetFutureMarketV1PublicContractRiskBalance = Entry('future/market/v1/public/contract/risk-balance', ['public', 'inverse'], 'GET', {'cost': 1})
38
+ public_inverse_get_future_market_v1_public_contract_open_interest = publicInverseGetFutureMarketV1PublicContractOpenInterest = Entry('future/market/v1/public/contract/open-interest', ['public', 'inverse'], 'GET', {'cost': 1})
39
+ public_inverse_get_future_market_v1_public_leverage_bracket_detail = publicInverseGetFutureMarketV1PublicLeverageBracketDetail = Entry('future/market/v1/public/leverage/bracket/detail', ['public', 'inverse'], 'GET', {'cost': 1})
40
+ public_inverse_get_future_market_v1_public_leverage_bracket_list = publicInverseGetFutureMarketV1PublicLeverageBracketList = Entry('future/market/v1/public/leverage/bracket/list', ['public', 'inverse'], 'GET', {'cost': 1})
41
+ public_inverse_get_future_market_v1_public_q_agg_ticker = publicInverseGetFutureMarketV1PublicQAggTicker = Entry('future/market/v1/public/q/agg-ticker', ['public', 'inverse'], 'GET', {'cost': 1})
42
+ public_inverse_get_future_market_v1_public_q_agg_tickers = publicInverseGetFutureMarketV1PublicQAggTickers = Entry('future/market/v1/public/q/agg-tickers', ['public', 'inverse'], 'GET', {'cost': 1})
43
+ public_inverse_get_future_market_v1_public_q_deal = publicInverseGetFutureMarketV1PublicQDeal = Entry('future/market/v1/public/q/deal', ['public', 'inverse'], 'GET', {'cost': 1})
44
+ public_inverse_get_future_market_v1_public_q_depth = publicInverseGetFutureMarketV1PublicQDepth = Entry('future/market/v1/public/q/depth', ['public', 'inverse'], 'GET', {'cost': 1})
45
+ public_inverse_get_future_market_v1_public_q_funding_rate = publicInverseGetFutureMarketV1PublicQFundingRate = Entry('future/market/v1/public/q/funding-rate', ['public', 'inverse'], 'GET', {'cost': 1})
46
+ public_inverse_get_future_market_v1_public_q_funding_rate_record = publicInverseGetFutureMarketV1PublicQFundingRateRecord = Entry('future/market/v1/public/q/funding-rate-record', ['public', 'inverse'], 'GET', {'cost': 1})
47
+ public_inverse_get_future_market_v1_public_q_index_price = publicInverseGetFutureMarketV1PublicQIndexPrice = Entry('future/market/v1/public/q/index-price', ['public', 'inverse'], 'GET', {'cost': 1})
48
+ public_inverse_get_future_market_v1_public_q_kline = publicInverseGetFutureMarketV1PublicQKline = Entry('future/market/v1/public/q/kline', ['public', 'inverse'], 'GET', {'cost': 1})
49
+ public_inverse_get_future_market_v1_public_q_mark_price = publicInverseGetFutureMarketV1PublicQMarkPrice = Entry('future/market/v1/public/q/mark-price', ['public', 'inverse'], 'GET', {'cost': 1})
50
+ public_inverse_get_future_market_v1_public_q_symbol_index_price = publicInverseGetFutureMarketV1PublicQSymbolIndexPrice = Entry('future/market/v1/public/q/symbol-index-price', ['public', 'inverse'], 'GET', {'cost': 1})
51
+ public_inverse_get_future_market_v1_public_q_symbol_mark_price = publicInverseGetFutureMarketV1PublicQSymbolMarkPrice = Entry('future/market/v1/public/q/symbol-mark-price', ['public', 'inverse'], 'GET', {'cost': 1})
52
+ public_inverse_get_future_market_v1_public_q_ticker = publicInverseGetFutureMarketV1PublicQTicker = Entry('future/market/v1/public/q/ticker', ['public', 'inverse'], 'GET', {'cost': 1})
53
+ public_inverse_get_future_market_v1_public_q_tickers = publicInverseGetFutureMarketV1PublicQTickers = Entry('future/market/v1/public/q/tickers', ['public', 'inverse'], 'GET', {'cost': 1})
54
+ public_inverse_get_future_market_v1_public_symbol_coins = publicInverseGetFutureMarketV1PublicSymbolCoins = Entry('future/market/v1/public/symbol/coins', ['public', 'inverse'], 'GET', {'cost': 3.33})
55
+ public_inverse_get_future_market_v1_public_symbol_detail = publicInverseGetFutureMarketV1PublicSymbolDetail = Entry('future/market/v1/public/symbol/detail', ['public', 'inverse'], 'GET', {'cost': 3.33})
56
+ public_inverse_get_future_market_v1_public_symbol_list = publicInverseGetFutureMarketV1PublicSymbolList = Entry('future/market/v1/public/symbol/list', ['public', 'inverse'], 'GET', {'cost': 1})
57
+ private_spot_get_balance = privateSpotGetBalance = Entry('balance', ['private', 'spot'], 'GET', {'cost': 1})
58
+ private_spot_get_balances = privateSpotGetBalances = Entry('balances', ['private', 'spot'], 'GET', {'cost': 1})
59
+ private_spot_get_batch_order = privateSpotGetBatchOrder = Entry('batch-order', ['private', 'spot'], 'GET', {'cost': 1})
60
+ private_spot_get_deposit_address = privateSpotGetDepositAddress = Entry('deposit/address', ['private', 'spot'], 'GET', {'cost': 1})
61
+ private_spot_get_deposit_history = privateSpotGetDepositHistory = Entry('deposit/history', ['private', 'spot'], 'GET', {'cost': 1})
62
+ private_spot_get_history_order = privateSpotGetHistoryOrder = Entry('history-order', ['private', 'spot'], 'GET', {'cost': 1})
63
+ private_spot_get_open_order = privateSpotGetOpenOrder = Entry('open-order', ['private', 'spot'], 'GET', {'cost': 1})
64
+ private_spot_get_order = privateSpotGetOrder = Entry('order', ['private', 'spot'], 'GET', {'cost': 1})
65
+ private_spot_get_order_orderid = privateSpotGetOrderOrderId = Entry('order/{orderId}', ['private', 'spot'], 'GET', {'cost': 1})
66
+ private_spot_get_trade = privateSpotGetTrade = Entry('trade', ['private', 'spot'], 'GET', {'cost': 1})
67
+ private_spot_get_withdraw_history = privateSpotGetWithdrawHistory = Entry('withdraw/history', ['private', 'spot'], 'GET', {'cost': 1})
68
+ private_spot_post_order = privateSpotPostOrder = Entry('order', ['private', 'spot'], 'POST', {'cost': 0.2})
69
+ private_spot_post_withdraw = privateSpotPostWithdraw = Entry('withdraw', ['private', 'spot'], 'POST', {'cost': 1})
70
+ private_spot_post_balance_transfer = privateSpotPostBalanceTransfer = Entry('balance/transfer', ['private', 'spot'], 'POST', {'cost': 1})
71
+ private_spot_post_balance_account_transfer = privateSpotPostBalanceAccountTransfer = Entry('balance/account/transfer', ['private', 'spot'], 'POST', {'cost': 1})
72
+ private_spot_delete_batch_order = privateSpotDeleteBatchOrder = Entry('batch-order', ['private', 'spot'], 'DELETE', {'cost': 1})
73
+ private_spot_delete_open_order = privateSpotDeleteOpenOrder = Entry('open-order', ['private', 'spot'], 'DELETE', {'cost': 1})
74
+ private_spot_delete_order_orderid = privateSpotDeleteOrderOrderId = Entry('order/{orderId}', ['private', 'spot'], 'DELETE', {'cost': 1})
75
+ private_linear_get_future_trade_v1_entrust_plan_detail = privateLinearGetFutureTradeV1EntrustPlanDetail = Entry('future/trade/v1/entrust/plan-detail', ['private', 'linear'], 'GET', {'cost': 1})
76
+ private_linear_get_future_trade_v1_entrust_plan_list = privateLinearGetFutureTradeV1EntrustPlanList = Entry('future/trade/v1/entrust/plan-list', ['private', 'linear'], 'GET', {'cost': 1})
77
+ private_linear_get_future_trade_v1_entrust_plan_list_history = privateLinearGetFutureTradeV1EntrustPlanListHistory = Entry('future/trade/v1/entrust/plan-list-history', ['private', 'linear'], 'GET', {'cost': 1})
78
+ private_linear_get_future_trade_v1_entrust_profit_detail = privateLinearGetFutureTradeV1EntrustProfitDetail = Entry('future/trade/v1/entrust/profit-detail', ['private', 'linear'], 'GET', {'cost': 1})
79
+ private_linear_get_future_trade_v1_entrust_profit_list = privateLinearGetFutureTradeV1EntrustProfitList = Entry('future/trade/v1/entrust/profit-list', ['private', 'linear'], 'GET', {'cost': 1})
80
+ private_linear_get_future_trade_v1_order_detail = privateLinearGetFutureTradeV1OrderDetail = Entry('future/trade/v1/order/detail', ['private', 'linear'], 'GET', {'cost': 1})
81
+ private_linear_get_future_trade_v1_order_list = privateLinearGetFutureTradeV1OrderList = Entry('future/trade/v1/order/list', ['private', 'linear'], 'GET', {'cost': 1})
82
+ private_linear_get_future_trade_v1_order_list_history = privateLinearGetFutureTradeV1OrderListHistory = Entry('future/trade/v1/order/list-history', ['private', 'linear'], 'GET', {'cost': 1})
83
+ private_linear_get_future_trade_v1_order_trade_list = privateLinearGetFutureTradeV1OrderTradeList = Entry('future/trade/v1/order/trade-list', ['private', 'linear'], 'GET', {'cost': 1})
84
+ private_linear_get_future_user_v1_account_info = privateLinearGetFutureUserV1AccountInfo = Entry('future/user/v1/account/info', ['private', 'linear'], 'GET', {'cost': 1})
85
+ private_linear_get_future_user_v1_balance_bills = privateLinearGetFutureUserV1BalanceBills = Entry('future/user/v1/balance/bills', ['private', 'linear'], 'GET', {'cost': 1})
86
+ private_linear_get_future_user_v1_balance_detail = privateLinearGetFutureUserV1BalanceDetail = Entry('future/user/v1/balance/detail', ['private', 'linear'], 'GET', {'cost': 1})
87
+ private_linear_get_future_user_v1_balance_funding_rate_list = privateLinearGetFutureUserV1BalanceFundingRateList = Entry('future/user/v1/balance/funding-rate-list', ['private', 'linear'], 'GET', {'cost': 1})
88
+ private_linear_get_future_user_v1_balance_list = privateLinearGetFutureUserV1BalanceList = Entry('future/user/v1/balance/list', ['private', 'linear'], 'GET', {'cost': 1})
89
+ private_linear_get_future_user_v1_position_adl = privateLinearGetFutureUserV1PositionAdl = Entry('future/user/v1/position/adl', ['private', 'linear'], 'GET', {'cost': 1})
90
+ private_linear_get_future_user_v1_position_list = privateLinearGetFutureUserV1PositionList = Entry('future/user/v1/position/list', ['private', 'linear'], 'GET', {'cost': 1})
91
+ private_linear_get_future_user_v1_user_collection_list = privateLinearGetFutureUserV1UserCollectionList = Entry('future/user/v1/user/collection/list', ['private', 'linear'], 'GET', {'cost': 1})
92
+ private_linear_get_future_user_v1_user_listen_key = privateLinearGetFutureUserV1UserListenKey = Entry('future/user/v1/user/listen-key', ['private', 'linear'], 'GET', {'cost': 1})
93
+ private_linear_post_future_trade_v1_entrust_cancel_all_plan = privateLinearPostFutureTradeV1EntrustCancelAllPlan = Entry('future/trade/v1/entrust/cancel-all-plan', ['private', 'linear'], 'POST', {'cost': 1})
94
+ private_linear_post_future_trade_v1_entrust_cancel_all_profit_stop = privateLinearPostFutureTradeV1EntrustCancelAllProfitStop = Entry('future/trade/v1/entrust/cancel-all-profit-stop', ['private', 'linear'], 'POST', {'cost': 1})
95
+ private_linear_post_future_trade_v1_entrust_cancel_plan = privateLinearPostFutureTradeV1EntrustCancelPlan = Entry('future/trade/v1/entrust/cancel-plan', ['private', 'linear'], 'POST', {'cost': 1})
96
+ private_linear_post_future_trade_v1_entrust_cancel_profit_stop = privateLinearPostFutureTradeV1EntrustCancelProfitStop = Entry('future/trade/v1/entrust/cancel-profit-stop', ['private', 'linear'], 'POST', {'cost': 1})
97
+ private_linear_post_future_trade_v1_entrust_create_plan = privateLinearPostFutureTradeV1EntrustCreatePlan = Entry('future/trade/v1/entrust/create-plan', ['private', 'linear'], 'POST', {'cost': 1})
98
+ private_linear_post_future_trade_v1_entrust_create_profit = privateLinearPostFutureTradeV1EntrustCreateProfit = Entry('future/trade/v1/entrust/create-profit', ['private', 'linear'], 'POST', {'cost': 1})
99
+ private_linear_post_future_trade_v1_entrust_update_profit_stop = privateLinearPostFutureTradeV1EntrustUpdateProfitStop = Entry('future/trade/v1/entrust/update-profit-stop', ['private', 'linear'], 'POST', {'cost': 1})
100
+ private_linear_post_future_trade_v1_order_cancel = privateLinearPostFutureTradeV1OrderCancel = Entry('future/trade/v1/order/cancel', ['private', 'linear'], 'POST', {'cost': 1})
101
+ private_linear_post_future_trade_v1_order_cancel_all = privateLinearPostFutureTradeV1OrderCancelAll = Entry('future/trade/v1/order/cancel-all', ['private', 'linear'], 'POST', {'cost': 1})
102
+ private_linear_post_future_trade_v1_order_create = privateLinearPostFutureTradeV1OrderCreate = Entry('future/trade/v1/order/create', ['private', 'linear'], 'POST', {'cost': 1})
103
+ private_linear_post_future_trade_v1_order_create_batch = privateLinearPostFutureTradeV1OrderCreateBatch = Entry('future/trade/v1/order/create-batch', ['private', 'linear'], 'POST', {'cost': 1})
104
+ private_linear_post_future_user_v1_account_open = privateLinearPostFutureUserV1AccountOpen = Entry('future/user/v1/account/open', ['private', 'linear'], 'POST', {'cost': 1})
105
+ private_linear_post_future_user_v1_position_adjust_leverage = privateLinearPostFutureUserV1PositionAdjustLeverage = Entry('future/user/v1/position/adjust-leverage', ['private', 'linear'], 'POST', {'cost': 1})
106
+ private_linear_post_future_user_v1_position_auto_margin = privateLinearPostFutureUserV1PositionAutoMargin = Entry('future/user/v1/position/auto-margin', ['private', 'linear'], 'POST', {'cost': 1})
107
+ private_linear_post_future_user_v1_position_close_all = privateLinearPostFutureUserV1PositionCloseAll = Entry('future/user/v1/position/close-all', ['private', 'linear'], 'POST', {'cost': 1})
108
+ private_linear_post_future_user_v1_position_margin = privateLinearPostFutureUserV1PositionMargin = Entry('future/user/v1/position/margin', ['private', 'linear'], 'POST', {'cost': 1})
109
+ private_linear_post_future_user_v1_user_collection_add = privateLinearPostFutureUserV1UserCollectionAdd = Entry('future/user/v1/user/collection/add', ['private', 'linear'], 'POST', {'cost': 1})
110
+ private_linear_post_future_user_v1_user_collection_cancel = privateLinearPostFutureUserV1UserCollectionCancel = Entry('future/user/v1/user/collection/cancel', ['private', 'linear'], 'POST', {'cost': 1})
111
+ private_inverse_get_future_trade_v1_entrust_plan_detail = privateInverseGetFutureTradeV1EntrustPlanDetail = Entry('future/trade/v1/entrust/plan-detail', ['private', 'inverse'], 'GET', {'cost': 1})
112
+ private_inverse_get_future_trade_v1_entrust_plan_list = privateInverseGetFutureTradeV1EntrustPlanList = Entry('future/trade/v1/entrust/plan-list', ['private', 'inverse'], 'GET', {'cost': 1})
113
+ private_inverse_get_future_trade_v1_entrust_plan_list_history = privateInverseGetFutureTradeV1EntrustPlanListHistory = Entry('future/trade/v1/entrust/plan-list-history', ['private', 'inverse'], 'GET', {'cost': 1})
114
+ private_inverse_get_future_trade_v1_entrust_profit_detail = privateInverseGetFutureTradeV1EntrustProfitDetail = Entry('future/trade/v1/entrust/profit-detail', ['private', 'inverse'], 'GET', {'cost': 1})
115
+ private_inverse_get_future_trade_v1_entrust_profit_list = privateInverseGetFutureTradeV1EntrustProfitList = Entry('future/trade/v1/entrust/profit-list', ['private', 'inverse'], 'GET', {'cost': 1})
116
+ private_inverse_get_future_trade_v1_order_detail = privateInverseGetFutureTradeV1OrderDetail = Entry('future/trade/v1/order/detail', ['private', 'inverse'], 'GET', {'cost': 1})
117
+ private_inverse_get_future_trade_v1_order_list = privateInverseGetFutureTradeV1OrderList = Entry('future/trade/v1/order/list', ['private', 'inverse'], 'GET', {'cost': 1})
118
+ private_inverse_get_future_trade_v1_order_list_history = privateInverseGetFutureTradeV1OrderListHistory = Entry('future/trade/v1/order/list-history', ['private', 'inverse'], 'GET', {'cost': 1})
119
+ private_inverse_get_future_trade_v1_order_trade_list = privateInverseGetFutureTradeV1OrderTradeList = Entry('future/trade/v1/order/trade-list', ['private', 'inverse'], 'GET', {'cost': 1})
120
+ private_inverse_get_future_user_v1_account_info = privateInverseGetFutureUserV1AccountInfo = Entry('future/user/v1/account/info', ['private', 'inverse'], 'GET', {'cost': 1})
121
+ private_inverse_get_future_user_v1_balance_bills = privateInverseGetFutureUserV1BalanceBills = Entry('future/user/v1/balance/bills', ['private', 'inverse'], 'GET', {'cost': 1})
122
+ private_inverse_get_future_user_v1_balance_detail = privateInverseGetFutureUserV1BalanceDetail = Entry('future/user/v1/balance/detail', ['private', 'inverse'], 'GET', {'cost': 1})
123
+ private_inverse_get_future_user_v1_balance_funding_rate_list = privateInverseGetFutureUserV1BalanceFundingRateList = Entry('future/user/v1/balance/funding-rate-list', ['private', 'inverse'], 'GET', {'cost': 1})
124
+ private_inverse_get_future_user_v1_balance_list = privateInverseGetFutureUserV1BalanceList = Entry('future/user/v1/balance/list', ['private', 'inverse'], 'GET', {'cost': 1})
125
+ private_inverse_get_future_user_v1_position_adl = privateInverseGetFutureUserV1PositionAdl = Entry('future/user/v1/position/adl', ['private', 'inverse'], 'GET', {'cost': 1})
126
+ private_inverse_get_future_user_v1_position_list = privateInverseGetFutureUserV1PositionList = Entry('future/user/v1/position/list', ['private', 'inverse'], 'GET', {'cost': 1})
127
+ private_inverse_get_future_user_v1_user_collection_list = privateInverseGetFutureUserV1UserCollectionList = Entry('future/user/v1/user/collection/list', ['private', 'inverse'], 'GET', {'cost': 1})
128
+ private_inverse_get_future_user_v1_user_listen_key = privateInverseGetFutureUserV1UserListenKey = Entry('future/user/v1/user/listen-key', ['private', 'inverse'], 'GET', {'cost': 1})
129
+ private_inverse_post_future_trade_v1_entrust_cancel_all_plan = privateInversePostFutureTradeV1EntrustCancelAllPlan = Entry('future/trade/v1/entrust/cancel-all-plan', ['private', 'inverse'], 'POST', {'cost': 1})
130
+ private_inverse_post_future_trade_v1_entrust_cancel_all_profit_stop = privateInversePostFutureTradeV1EntrustCancelAllProfitStop = Entry('future/trade/v1/entrust/cancel-all-profit-stop', ['private', 'inverse'], 'POST', {'cost': 1})
131
+ private_inverse_post_future_trade_v1_entrust_cancel_plan = privateInversePostFutureTradeV1EntrustCancelPlan = Entry('future/trade/v1/entrust/cancel-plan', ['private', 'inverse'], 'POST', {'cost': 1})
132
+ private_inverse_post_future_trade_v1_entrust_cancel_profit_stop = privateInversePostFutureTradeV1EntrustCancelProfitStop = Entry('future/trade/v1/entrust/cancel-profit-stop', ['private', 'inverse'], 'POST', {'cost': 1})
133
+ private_inverse_post_future_trade_v1_entrust_create_plan = privateInversePostFutureTradeV1EntrustCreatePlan = Entry('future/trade/v1/entrust/create-plan', ['private', 'inverse'], 'POST', {'cost': 1})
134
+ private_inverse_post_future_trade_v1_entrust_create_profit = privateInversePostFutureTradeV1EntrustCreateProfit = Entry('future/trade/v1/entrust/create-profit', ['private', 'inverse'], 'POST', {'cost': 1})
135
+ private_inverse_post_future_trade_v1_entrust_update_profit_stop = privateInversePostFutureTradeV1EntrustUpdateProfitStop = Entry('future/trade/v1/entrust/update-profit-stop', ['private', 'inverse'], 'POST', {'cost': 1})
136
+ private_inverse_post_future_trade_v1_order_cancel = privateInversePostFutureTradeV1OrderCancel = Entry('future/trade/v1/order/cancel', ['private', 'inverse'], 'POST', {'cost': 1})
137
+ private_inverse_post_future_trade_v1_order_cancel_all = privateInversePostFutureTradeV1OrderCancelAll = Entry('future/trade/v1/order/cancel-all', ['private', 'inverse'], 'POST', {'cost': 1})
138
+ private_inverse_post_future_trade_v1_order_create = privateInversePostFutureTradeV1OrderCreate = Entry('future/trade/v1/order/create', ['private', 'inverse'], 'POST', {'cost': 1})
139
+ private_inverse_post_future_trade_v1_order_create_batch = privateInversePostFutureTradeV1OrderCreateBatch = Entry('future/trade/v1/order/create-batch', ['private', 'inverse'], 'POST', {'cost': 1})
140
+ private_inverse_post_future_user_v1_account_open = privateInversePostFutureUserV1AccountOpen = Entry('future/user/v1/account/open', ['private', 'inverse'], 'POST', {'cost': 1})
141
+ private_inverse_post_future_user_v1_position_adjust_leverage = privateInversePostFutureUserV1PositionAdjustLeverage = Entry('future/user/v1/position/adjust-leverage', ['private', 'inverse'], 'POST', {'cost': 1})
142
+ private_inverse_post_future_user_v1_position_auto_margin = privateInversePostFutureUserV1PositionAutoMargin = Entry('future/user/v1/position/auto-margin', ['private', 'inverse'], 'POST', {'cost': 1})
143
+ private_inverse_post_future_user_v1_position_close_all = privateInversePostFutureUserV1PositionCloseAll = Entry('future/user/v1/position/close-all', ['private', 'inverse'], 'POST', {'cost': 1})
144
+ private_inverse_post_future_user_v1_position_margin = privateInversePostFutureUserV1PositionMargin = Entry('future/user/v1/position/margin', ['private', 'inverse'], 'POST', {'cost': 1})
145
+ private_inverse_post_future_user_v1_user_collection_add = privateInversePostFutureUserV1UserCollectionAdd = Entry('future/user/v1/user/collection/add', ['private', 'inverse'], 'POST', {'cost': 1})
146
+ private_inverse_post_future_user_v1_user_collection_cancel = privateInversePostFutureUserV1UserCollectionCancel = Entry('future/user/v1/user/collection/cancel', ['private', 'inverse'], 'POST', {'cost': 1})
147
+ private_user_get_user_account = privateUserGetUserAccount = Entry('user/account', ['private', 'user'], 'GET', {'cost': 1})
148
+ private_user_get_user_account_api_key = privateUserGetUserAccountApiKey = Entry('user/account/api-key', ['private', 'user'], 'GET', {'cost': 1})
149
+ private_user_post_user_account = privateUserPostUserAccount = Entry('user/account', ['private', 'user'], 'POST', {'cost': 1})
150
+ private_user_post_user_account_api_key = privateUserPostUserAccountApiKey = Entry('user/account/api-key', ['private', 'user'], 'POST', {'cost': 1})
151
+ private_user_put_user_account_api_key = privateUserPutUserAccountApiKey = Entry('user/account/api-key', ['private', 'user'], 'PUT', {'cost': 1})
152
+ private_user_delete_user_account_apikeyid = privateUserDeleteUserAccountApikeyId = Entry('user/account/{apikeyId}', ['private', 'user'], 'DELETE', {'cost': 1})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.42'
7
+ __version__ = '4.3.44'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -162,6 +162,7 @@ from ccxt.async_support.wazirx import wazirx
162
162
  from ccxt.async_support.whitebit import whitebit # noqa: F401
163
163
  from ccxt.async_support.woo import woo # noqa: F401
164
164
  from ccxt.async_support.woofipro import woofipro # noqa: F401
165
+ from ccxt.async_support.xt import xt # noqa: F401
165
166
  from ccxt.async_support.yobit import yobit # noqa: F401
166
167
  from ccxt.async_support.zaif import zaif # noqa: F401
167
168
  from ccxt.async_support.zonda import zonda # noqa: F401
@@ -269,6 +270,7 @@ exchanges = [
269
270
  'whitebit',
270
271
  'woo',
271
272
  'woofipro',
273
+ 'xt',
272
274
  'yobit',
273
275
  'zaif',
274
276
  'zonda',
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.42'
5
+ __version__ = '4.3.44'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -7557,8 +7557,56 @@ class binance(Exchange, ImplicitAPI):
7557
7557
  # "tranId": 43000126248
7558
7558
  # }
7559
7559
  #
7560
- id = self.safe_string(transfer, 'tranId')
7561
- currencyId = self.safe_string(transfer, 'asset')
7560
+ # {
7561
+ # "orderType": "C2C", # Enum:PAY(C2B Merchant Acquiring Payment), PAY_REFUND(C2B Merchant Acquiring Payment,refund), C2C(C2C Transfer Payment),CRYPTO_BOX(Crypto box), CRYPTO_BOX_RF(Crypto Box, refund), C2C_HOLDING(Transfer to new Binance user), C2C_HOLDING_RF(Transfer to new Binance user,refund), PAYOUT(B2C Disbursement Payment), REMITTANCE(Send cash)
7562
+ # "transactionId": "M_P_71505104267788288",
7563
+ # "transactionTime": 1610090460133, #trade timestamp
7564
+ # "amount": "23.72469206", #order amount(up to 8 decimal places), positive is income, negative is expenditure
7565
+ # "currency": "BNB",
7566
+ # "walletType": 1, #main wallet type, 1 for funding wallet, 2 for spot wallet, 3 for fiat wallet, 4 or 6 for card payment, 5 for earn wallet
7567
+ # "walletTypes": [1,2], #array format,there are multiple values when using combination payment
7568
+ # "fundsDetail": [ # details
7569
+ # {
7570
+ # "currency": "USDT", #asset
7571
+ # "amount": "1.2",
7572
+ # "walletAssetCost":[ #details of asset cost per wallet
7573
+ # {"1":"0.6"},
7574
+ # {"2":"0.6"}
7575
+ # ]
7576
+ # },
7577
+ # {
7578
+ # "currency": "ETH",
7579
+ # "amount": "0.0001",
7580
+ # "walletAssetCost":[
7581
+ # {"1":"0.00005"},
7582
+ # {"2":"0.00005"}
7583
+ # ]
7584
+ # }
7585
+ # ],
7586
+ # "payerInfo":{
7587
+ # "name":"Jack", #nickname or merchant name
7588
+ # "type":"USER", #account type,USER for personal,MERCHANT for merchant
7589
+ # "binanceId":"12345678", #binance uid
7590
+ # "accountId":"67736251" #binance pay id
7591
+ # },
7592
+ # "receiverInfo":{
7593
+ # "name":"Alan", #nickname or merchant name
7594
+ # "type":"MERCHANT", #account type,USER for personal,MERCHANT for merchant
7595
+ # "email":"alan@binance.com", #email
7596
+ # "binanceId":"34355667", #binance uid
7597
+ # "accountId":"21326891", #binance pay id
7598
+ # "countryCode":"1", #International area code
7599
+ # "phoneNumber":"8057651210",
7600
+ # "mobileCode":"US", #country code
7601
+ # "extend":[ #extension field
7602
+ # "institutionName": "",
7603
+ # "cardNumber": "",
7604
+ # "digitalWalletId": ""
7605
+ # ]
7606
+ # }
7607
+ # }
7608
+ id = self.safe_string_2(transfer, 'tranId', 'transactionId')
7609
+ currencyId = self.safe_string_2(transfer, 'asset', 'currency')
7562
7610
  code = self.safe_currency_code(currencyId, currency)
7563
7611
  amount = self.safe_number(transfer, 'amount')
7564
7612
  type = self.safe_string(transfer, 'type')
@@ -7571,7 +7619,13 @@ class binance(Exchange, ImplicitAPI):
7571
7619
  toAccount = self.safe_value(parts, 1)
7572
7620
  fromAccount = self.safe_string(accountsById, fromAccount, fromAccount)
7573
7621
  toAccount = self.safe_string(accountsById, toAccount, toAccount)
7574
- timestamp = self.safe_integer(transfer, 'timestamp')
7622
+ walletType = self.safe_integer(transfer, 'walletType')
7623
+ if walletType is not None:
7624
+ payer = self.safe_dict(transfer, 'payerInfo', {})
7625
+ receiver = self.safe_dict(transfer, 'receiverInfo', {})
7626
+ fromAccount = self.safe_string(payer, 'accountId')
7627
+ toAccount = self.safe_string(receiver, 'accountId')
7628
+ timestamp = self.safe_integer_2(transfer, 'timestamp', 'transactionTime')
7575
7629
  status = self.parse_transfer_status(self.safe_string(transfer, 'status'))
7576
7630
  return {
7577
7631
  'info': transfer,
@@ -7700,66 +7754,133 @@ class binance(Exchange, ImplicitAPI):
7700
7754
  """
7701
7755
  fetch a history of internal transfers made on an account
7702
7756
  :see: https://binance-docs.github.io/apidocs/spot/en/#query-user-universal-transfer-history-user_data
7757
+ :see: https://binance-docs.github.io/apidocs/spot/en/#pay-endpoints
7703
7758
  :param str code: unified currency code of the currency transferred
7704
7759
  :param int [since]: the earliest time in ms to fetch transfers for
7705
7760
  :param int [limit]: the maximum number of transfers structures to retrieve
7706
7761
  :param dict [params]: extra parameters specific to the exchange API endpoint
7707
7762
  :param int [params.until]: the latest time in ms to fetch transfers for
7708
7763
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
7764
+ :param boolean [params.internal]: default False, when True will fetch pay trade history
7709
7765
  :returns dict[]: a list of `transfer structures <https://docs.ccxt.com/#/?id=transfer-structure>`
7710
7766
  """
7711
7767
  await self.load_markets()
7768
+ internal = self.safe_bool(params, 'internal')
7769
+ params = self.omit(params, 'internal')
7712
7770
  paginate = False
7713
7771
  paginate, params = self.handle_option_and_params(params, 'fetchTransfers', 'paginate')
7714
- if paginate:
7772
+ if paginate and not internal:
7715
7773
  return await self.fetch_paginated_call_dynamic('fetchTransfers', code, since, limit, params)
7716
7774
  currency = None
7717
7775
  if code is not None:
7718
7776
  currency = self.currency(code)
7719
- defaultType = self.safe_string_2(self.options, 'fetchTransfers', 'defaultType', 'spot')
7720
- fromAccount = self.safe_string(params, 'fromAccount', defaultType)
7721
- defaultTo = 'spot' if (fromAccount == 'future') else 'future'
7722
- toAccount = self.safe_string(params, 'toAccount', defaultTo)
7723
- type = self.safe_string(params, 'type')
7724
- accountsByType = self.safe_dict(self.options, 'accountsByType', {})
7725
- fromId = self.safe_string(accountsByType, fromAccount)
7726
- toId = self.safe_string(accountsByType, toAccount)
7727
- if type is None:
7728
- if fromId is None:
7729
- keys = list(accountsByType.keys())
7730
- raise ExchangeError(self.id + ' fromAccount parameter must be one of ' + ', '.join(keys))
7731
- if toId is None:
7732
- keys = list(accountsByType.keys())
7733
- raise ExchangeError(self.id + ' toAccount parameter must be one of ' + ', '.join(keys))
7734
- type = fromId + '_' + toId
7735
- request: dict = {
7736
- 'type': type,
7737
- }
7777
+ request: dict = {}
7778
+ limitKey = 'limit'
7779
+ if not internal:
7780
+ defaultType = self.safe_string_2(self.options, 'fetchTransfers', 'defaultType', 'spot')
7781
+ fromAccount = self.safe_string(params, 'fromAccount', defaultType)
7782
+ defaultTo = 'spot' if (fromAccount == 'future') else 'future'
7783
+ toAccount = self.safe_string(params, 'toAccount', defaultTo)
7784
+ type = self.safe_string(params, 'type')
7785
+ accountsByType = self.safe_dict(self.options, 'accountsByType', {})
7786
+ fromId = self.safe_string(accountsByType, fromAccount)
7787
+ toId = self.safe_string(accountsByType, toAccount)
7788
+ if type is None:
7789
+ if fromId is None:
7790
+ keys = list(accountsByType.keys())
7791
+ raise ExchangeError(self.id + ' fromAccount parameter must be one of ' + ', '.join(keys))
7792
+ if toId is None:
7793
+ keys = list(accountsByType.keys())
7794
+ raise ExchangeError(self.id + ' toAccount parameter must be one of ' + ', '.join(keys))
7795
+ type = fromId + '_' + toId
7796
+ request['type'] = type
7797
+ limitKey = 'size'
7798
+ if limit is not None:
7799
+ request[limitKey] = limit
7738
7800
  if since is not None:
7739
7801
  request['startTime'] = since
7740
- if limit is not None:
7741
- request['size'] = limit
7742
7802
  until = self.safe_integer(params, 'until')
7743
7803
  if until is not None:
7744
7804
  params = self.omit(params, 'until')
7745
7805
  request['endTime'] = until
7746
- response = await self.sapiGetAssetTransfer(self.extend(request, params))
7747
- #
7748
- # {
7749
- # "total": 3,
7750
- # "rows": [
7751
- # {
7752
- # "timestamp": 1614640878000,
7753
- # "asset": "USDT",
7754
- # "amount": "25",
7755
- # "type": "MAIN_UMFUTURE",
7756
- # "status": "CONFIRMED",
7757
- # "tranId": 43000126248
7758
- # },
7759
- # ]
7760
- # }
7761
- #
7762
- rows = self.safe_list(response, 'rows', [])
7806
+ response = None
7807
+ if internal:
7808
+ response = await self.sapiGetPayTransactions(self.extend(request, params))
7809
+ #
7810
+ # {
7811
+ # "code": "000000",
7812
+ # "message": "success",
7813
+ # "data": [
7814
+ # {
7815
+ # "orderType": "C2C", # Enum:PAY(C2B Merchant Acquiring Payment), PAY_REFUND(C2B Merchant Acquiring Payment,refund), C2C(C2C Transfer Payment),CRYPTO_BOX(Crypto box), CRYPTO_BOX_RF(Crypto Box, refund), C2C_HOLDING(Transfer to new Binance user), C2C_HOLDING_RF(Transfer to new Binance user,refund), PAYOUT(B2C Disbursement Payment), REMITTANCE(Send cash)
7816
+ # "transactionId": "M_P_71505104267788288",
7817
+ # "transactionTime": 1610090460133, #trade timestamp
7818
+ # "amount": "23.72469206", #order amount(up to 8 decimal places), positive is income, negative is expenditure
7819
+ # "currency": "BNB",
7820
+ # "walletType": 1, #main wallet type, 1 for funding wallet, 2 for spot wallet, 3 for fiat wallet, 4 or 6 for card payment, 5 for earn wallet
7821
+ # "walletTypes": [1,2], #array format,there are multiple values when using combination payment
7822
+ # "fundsDetail": [ # details
7823
+ # {
7824
+ # "currency": "USDT", #asset
7825
+ # "amount": "1.2",
7826
+ # "walletAssetCost":[ #details of asset cost per wallet
7827
+ # {"1":"0.6"},
7828
+ # {"2":"0.6"}
7829
+ # ]
7830
+ # },
7831
+ # {
7832
+ # "currency": "ETH",
7833
+ # "amount": "0.0001",
7834
+ # "walletAssetCost":[
7835
+ # {"1":"0.00005"},
7836
+ # {"2":"0.00005"}
7837
+ # ]
7838
+ # }
7839
+ # ],
7840
+ # "payerInfo":{
7841
+ # "name":"Jack", #nickname or merchant name
7842
+ # "type":"USER", #account type,USER for personal,MERCHANT for merchant
7843
+ # "binanceId":"12345678", #binance uid
7844
+ # "accountId":"67736251" #binance pay id
7845
+ # },
7846
+ # "receiverInfo":{
7847
+ # "name":"Alan", #nickname or merchant name
7848
+ # "type":"MERCHANT", #account type,USER for personal,MERCHANT for merchant
7849
+ # "email":"alan@binance.com", #email
7850
+ # "binanceId":"34355667", #binance uid
7851
+ # "accountId":"21326891", #binance pay id
7852
+ # "countryCode":"1", #International area code
7853
+ # "phoneNumber":"8057651210",
7854
+ # "mobileCode":"US", #country code
7855
+ # "extend":[ #extension field
7856
+ # "institutionName": "",
7857
+ # "cardNumber": "",
7858
+ # "digitalWalletId": ""
7859
+ # ]
7860
+ # }
7861
+ # }
7862
+ # ],
7863
+ # "success": True
7864
+ # }
7865
+ #
7866
+ else:
7867
+ response = await self.sapiGetAssetTransfer(self.extend(request, params))
7868
+ #
7869
+ # {
7870
+ # "total": 3,
7871
+ # "rows": [
7872
+ # {
7873
+ # "timestamp": 1614640878000,
7874
+ # "asset": "USDT",
7875
+ # "amount": "25",
7876
+ # "type": "MAIN_UMFUTURE",
7877
+ # "status": "CONFIRMED",
7878
+ # "tranId": 43000126248
7879
+ # },
7880
+ # ]
7881
+ # }
7882
+ #
7883
+ rows = self.safe_list_2(response, 'rows', 'data', [])
7763
7884
  return self.parse_transfers(rows, currency, since, limit)
7764
7885
 
7765
7886
  async def fetch_deposit_address(self, code: str, params={}):
@@ -855,7 +855,29 @@ class btcmarkets(Exchange, ImplicitAPI):
855
855
  request: dict = {
856
856
  'ids': ids,
857
857
  }
858
- return await self.privateDeleteBatchordersIds(self.extend(request, params))
858
+ response = await self.privateDeleteBatchordersIds(self.extend(request, params))
859
+ #
860
+ # {
861
+ # "cancelOrders": [
862
+ # {
863
+ # "orderId": "414186",
864
+ # "clientOrderId": "6"
865
+ # },
866
+ # ...
867
+ # ],
868
+ # "unprocessedRequests": [
869
+ # {
870
+ # "code": "OrderAlreadyCancelled",
871
+ # "message": "order is already cancelled.",
872
+ # "requestId": "1"
873
+ # }
874
+ # ]
875
+ # }
876
+ #
877
+ cancelOrders = self.safe_list(response, 'cancelOrders', [])
878
+ unprocessedRequests = self.safe_list(response, 'unprocessedRequests', [])
879
+ orders = self.array_concat(cancelOrders, unprocessedRequests)
880
+ return self.parse_orders(orders)
859
881
 
860
882
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
861
883
  """
@@ -870,7 +892,14 @@ class btcmarkets(Exchange, ImplicitAPI):
870
892
  request: dict = {
871
893
  'id': id,
872
894
  }
873
- return await self.privateDeleteOrdersId(self.extend(request, params))
895
+ response = await self.privateDeleteOrdersId(self.extend(request, params))
896
+ #
897
+ # {
898
+ # "orderId": "7524",
899
+ # "clientOrderId": "123-456"
900
+ # }
901
+ #
902
+ return self.parse_order(response)
874
903
 
875
904
  def calculate_fee(self, symbol, type, side, amount, price, takerOrMaker='taker', params={}):
876
905
  """