ccxt 4.3.22__py2.py3-none-any.whl → 4.3.24__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.22'
25
+ __version__ = '4.3.24'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -119,8 +119,9 @@ from ccxt.btcturk import btcturk # noqa: F4
119
119
  from ccxt.bybit import bybit # noqa: F401
120
120
  from ccxt.cex import cex # noqa: F401
121
121
  from ccxt.coinbase import coinbase # noqa: F401
122
+ from ccxt.coinbaseadvanced import coinbaseadvanced # noqa: F401
123
+ from ccxt.coinbaseexchange import coinbaseexchange # noqa: F401
122
124
  from ccxt.coinbaseinternational import coinbaseinternational # noqa: F401
123
- from ccxt.coinbasepro import coinbasepro # noqa: F401
124
125
  from ccxt.coincheck import coincheck # noqa: F401
125
126
  from ccxt.coinex import coinex # noqa: F401
126
127
  from ccxt.coinlist import coinlist # noqa: F401
@@ -225,8 +226,9 @@ exchanges = [
225
226
  'bybit',
226
227
  'cex',
227
228
  'coinbase',
229
+ 'coinbaseadvanced',
230
+ 'coinbaseexchange',
228
231
  'coinbaseinternational',
229
- 'coinbasepro',
230
232
  'coincheck',
231
233
  'coinex',
232
234
  'coinlist',
@@ -0,0 +1,94 @@
1
+ from ccxt.base.types import Entry
2
+
3
+
4
+ class ImplicitAPI:
5
+ v2_public_get_currencies = v2PublicGetCurrencies = Entry('currencies', ['v2', 'public'], 'GET', {'cost': 10.6})
6
+ v2_public_get_currencies_crypto = v2PublicGetCurrenciesCrypto = Entry('currencies/crypto', ['v2', 'public'], 'GET', {'cost': 10.6})
7
+ v2_public_get_time = v2PublicGetTime = Entry('time', ['v2', 'public'], 'GET', {'cost': 10.6})
8
+ v2_public_get_exchange_rates = v2PublicGetExchangeRates = Entry('exchange-rates', ['v2', 'public'], 'GET', {'cost': 10.6})
9
+ v2_public_get_users_user_id = v2PublicGetUsersUserId = Entry('users/{user_id}', ['v2', 'public'], 'GET', {'cost': 10.6})
10
+ v2_public_get_prices_symbol_buy = v2PublicGetPricesSymbolBuy = Entry('prices/{symbol}/buy', ['v2', 'public'], 'GET', {'cost': 10.6})
11
+ v2_public_get_prices_symbol_sell = v2PublicGetPricesSymbolSell = Entry('prices/{symbol}/sell', ['v2', 'public'], 'GET', {'cost': 10.6})
12
+ v2_public_get_prices_symbol_spot = v2PublicGetPricesSymbolSpot = Entry('prices/{symbol}/spot', ['v2', 'public'], 'GET', {'cost': 10.6})
13
+ v2_private_get_accounts = v2PrivateGetAccounts = Entry('accounts', ['v2', 'private'], 'GET', {'cost': 10.6})
14
+ v2_private_get_accounts_account_id = v2PrivateGetAccountsAccountId = Entry('accounts/{account_id}', ['v2', 'private'], 'GET', {'cost': 10.6})
15
+ v2_private_get_accounts_account_id_addresses = v2PrivateGetAccountsAccountIdAddresses = Entry('accounts/{account_id}/addresses', ['v2', 'private'], 'GET', {'cost': 10.6})
16
+ v2_private_get_accounts_account_id_addresses_address_id = v2PrivateGetAccountsAccountIdAddressesAddressId = Entry('accounts/{account_id}/addresses/{address_id}', ['v2', 'private'], 'GET', {'cost': 10.6})
17
+ v2_private_get_accounts_account_id_addresses_address_id_transactions = v2PrivateGetAccountsAccountIdAddressesAddressIdTransactions = Entry('accounts/{account_id}/addresses/{address_id}/transactions', ['v2', 'private'], 'GET', {'cost': 10.6})
18
+ v2_private_get_accounts_account_id_transactions = v2PrivateGetAccountsAccountIdTransactions = Entry('accounts/{account_id}/transactions', ['v2', 'private'], 'GET', {'cost': 10.6})
19
+ v2_private_get_accounts_account_id_transactions_transaction_id = v2PrivateGetAccountsAccountIdTransactionsTransactionId = Entry('accounts/{account_id}/transactions/{transaction_id}', ['v2', 'private'], 'GET', {'cost': 10.6})
20
+ v2_private_get_accounts_account_id_buys = v2PrivateGetAccountsAccountIdBuys = Entry('accounts/{account_id}/buys', ['v2', 'private'], 'GET', {'cost': 10.6})
21
+ v2_private_get_accounts_account_id_buys_buy_id = v2PrivateGetAccountsAccountIdBuysBuyId = Entry('accounts/{account_id}/buys/{buy_id}', ['v2', 'private'], 'GET', {'cost': 10.6})
22
+ v2_private_get_accounts_account_id_sells = v2PrivateGetAccountsAccountIdSells = Entry('accounts/{account_id}/sells', ['v2', 'private'], 'GET', {'cost': 10.6})
23
+ v2_private_get_accounts_account_id_sells_sell_id = v2PrivateGetAccountsAccountIdSellsSellId = Entry('accounts/{account_id}/sells/{sell_id}', ['v2', 'private'], 'GET', {'cost': 10.6})
24
+ v2_private_get_accounts_account_id_deposits = v2PrivateGetAccountsAccountIdDeposits = Entry('accounts/{account_id}/deposits', ['v2', 'private'], 'GET', {'cost': 10.6})
25
+ v2_private_get_accounts_account_id_deposits_deposit_id = v2PrivateGetAccountsAccountIdDepositsDepositId = Entry('accounts/{account_id}/deposits/{deposit_id}', ['v2', 'private'], 'GET', {'cost': 10.6})
26
+ v2_private_get_accounts_account_id_withdrawals = v2PrivateGetAccountsAccountIdWithdrawals = Entry('accounts/{account_id}/withdrawals', ['v2', 'private'], 'GET', {'cost': 10.6})
27
+ v2_private_get_accounts_account_id_withdrawals_withdrawal_id = v2PrivateGetAccountsAccountIdWithdrawalsWithdrawalId = Entry('accounts/{account_id}/withdrawals/{withdrawal_id}', ['v2', 'private'], 'GET', {'cost': 10.6})
28
+ v2_private_get_payment_methods = v2PrivateGetPaymentMethods = Entry('payment-methods', ['v2', 'private'], 'GET', {'cost': 10.6})
29
+ v2_private_get_payment_methods_payment_method_id = v2PrivateGetPaymentMethodsPaymentMethodId = Entry('payment-methods/{payment_method_id}', ['v2', 'private'], 'GET', {'cost': 10.6})
30
+ v2_private_get_user = v2PrivateGetUser = Entry('user', ['v2', 'private'], 'GET', {'cost': 10.6})
31
+ v2_private_get_user_auth = v2PrivateGetUserAuth = Entry('user/auth', ['v2', 'private'], 'GET', {'cost': 10.6})
32
+ v2_private_post_accounts = v2PrivatePostAccounts = Entry('accounts', ['v2', 'private'], 'POST', {'cost': 10.6})
33
+ v2_private_post_accounts_account_id_primary = v2PrivatePostAccountsAccountIdPrimary = Entry('accounts/{account_id}/primary', ['v2', 'private'], 'POST', {'cost': 10.6})
34
+ v2_private_post_accounts_account_id_addresses = v2PrivatePostAccountsAccountIdAddresses = Entry('accounts/{account_id}/addresses', ['v2', 'private'], 'POST', {'cost': 10.6})
35
+ v2_private_post_accounts_account_id_transactions = v2PrivatePostAccountsAccountIdTransactions = Entry('accounts/{account_id}/transactions', ['v2', 'private'], 'POST', {'cost': 10.6})
36
+ v2_private_post_accounts_account_id_transactions_transaction_id_complete = v2PrivatePostAccountsAccountIdTransactionsTransactionIdComplete = Entry('accounts/{account_id}/transactions/{transaction_id}/complete', ['v2', 'private'], 'POST', {'cost': 10.6})
37
+ v2_private_post_accounts_account_id_transactions_transaction_id_resend = v2PrivatePostAccountsAccountIdTransactionsTransactionIdResend = Entry('accounts/{account_id}/transactions/{transaction_id}/resend', ['v2', 'private'], 'POST', {'cost': 10.6})
38
+ v2_private_post_accounts_account_id_buys = v2PrivatePostAccountsAccountIdBuys = Entry('accounts/{account_id}/buys', ['v2', 'private'], 'POST', {'cost': 10.6})
39
+ v2_private_post_accounts_account_id_buys_buy_id_commit = v2PrivatePostAccountsAccountIdBuysBuyIdCommit = Entry('accounts/{account_id}/buys/{buy_id}/commit', ['v2', 'private'], 'POST', {'cost': 10.6})
40
+ v2_private_post_accounts_account_id_sells = v2PrivatePostAccountsAccountIdSells = Entry('accounts/{account_id}/sells', ['v2', 'private'], 'POST', {'cost': 10.6})
41
+ v2_private_post_accounts_account_id_sells_sell_id_commit = v2PrivatePostAccountsAccountIdSellsSellIdCommit = Entry('accounts/{account_id}/sells/{sell_id}/commit', ['v2', 'private'], 'POST', {'cost': 10.6})
42
+ v2_private_post_accounts_account_id_deposits = v2PrivatePostAccountsAccountIdDeposits = Entry('accounts/{account_id}/deposits', ['v2', 'private'], 'POST', {'cost': 10.6})
43
+ v2_private_post_accounts_account_id_deposits_deposit_id_commit = v2PrivatePostAccountsAccountIdDepositsDepositIdCommit = Entry('accounts/{account_id}/deposits/{deposit_id}/commit', ['v2', 'private'], 'POST', {'cost': 10.6})
44
+ v2_private_post_accounts_account_id_withdrawals = v2PrivatePostAccountsAccountIdWithdrawals = Entry('accounts/{account_id}/withdrawals', ['v2', 'private'], 'POST', {'cost': 10.6})
45
+ v2_private_post_accounts_account_id_withdrawals_withdrawal_id_commit = v2PrivatePostAccountsAccountIdWithdrawalsWithdrawalIdCommit = Entry('accounts/{account_id}/withdrawals/{withdrawal_id}/commit', ['v2', 'private'], 'POST', {'cost': 10.6})
46
+ v2_private_put_accounts_account_id = v2PrivatePutAccountsAccountId = Entry('accounts/{account_id}', ['v2', 'private'], 'PUT', {'cost': 10.6})
47
+ v2_private_put_user = v2PrivatePutUser = Entry('user', ['v2', 'private'], 'PUT', {'cost': 10.6})
48
+ v2_private_delete_accounts_id = v2PrivateDeleteAccountsId = Entry('accounts/{id}', ['v2', 'private'], 'DELETE', {'cost': 10.6})
49
+ v2_private_delete_accounts_account_id_transactions_transaction_id = v2PrivateDeleteAccountsAccountIdTransactionsTransactionId = Entry('accounts/{account_id}/transactions/{transaction_id}', ['v2', 'private'], 'DELETE', {'cost': 10.6})
50
+ v3_public_get_brokerage_time = v3PublicGetBrokerageTime = Entry('brokerage/time', ['v3', 'public'], 'GET', {'cost': 3})
51
+ v3_public_get_brokerage_market_product_book = v3PublicGetBrokerageMarketProductBook = Entry('brokerage/market/product_book', ['v3', 'public'], 'GET', {'cost': 3})
52
+ v3_public_get_brokerage_market_products = v3PublicGetBrokerageMarketProducts = Entry('brokerage/market/products', ['v3', 'public'], 'GET', {'cost': 3})
53
+ v3_public_get_brokerage_market_products_product_id = v3PublicGetBrokerageMarketProductsProductId = Entry('brokerage/market/products/{product_id}', ['v3', 'public'], 'GET', {'cost': 3})
54
+ v3_public_get_brokerage_market_products_product_id_candles = v3PublicGetBrokerageMarketProductsProductIdCandles = Entry('brokerage/market/products/{product_id}/candles', ['v3', 'public'], 'GET', {'cost': 3})
55
+ v3_public_get_brokerage_market_products_product_id_ticker = v3PublicGetBrokerageMarketProductsProductIdTicker = Entry('brokerage/market/products/{product_id}/ticker', ['v3', 'public'], 'GET', {'cost': 3})
56
+ v3_private_get_brokerage_accounts = v3PrivateGetBrokerageAccounts = Entry('brokerage/accounts', ['v3', 'private'], 'GET', {'cost': 1})
57
+ v3_private_get_brokerage_accounts_account_uuid = v3PrivateGetBrokerageAccountsAccountUuid = Entry('brokerage/accounts/{account_uuid}', ['v3', 'private'], 'GET', {'cost': 1})
58
+ v3_private_get_brokerage_orders_historical_batch = v3PrivateGetBrokerageOrdersHistoricalBatch = Entry('brokerage/orders/historical/batch', ['v3', 'private'], 'GET', {'cost': 1})
59
+ v3_private_get_brokerage_orders_historical_fills = v3PrivateGetBrokerageOrdersHistoricalFills = Entry('brokerage/orders/historical/fills', ['v3', 'private'], 'GET', {'cost': 1})
60
+ v3_private_get_brokerage_orders_historical_order_id = v3PrivateGetBrokerageOrdersHistoricalOrderId = Entry('brokerage/orders/historical/{order_id}', ['v3', 'private'], 'GET', {'cost': 1})
61
+ v3_private_get_brokerage_products = v3PrivateGetBrokerageProducts = Entry('brokerage/products', ['v3', 'private'], 'GET', {'cost': 3})
62
+ v3_private_get_brokerage_products_product_id = v3PrivateGetBrokerageProductsProductId = Entry('brokerage/products/{product_id}', ['v3', 'private'], 'GET', {'cost': 3})
63
+ v3_private_get_brokerage_products_product_id_candles = v3PrivateGetBrokerageProductsProductIdCandles = Entry('brokerage/products/{product_id}/candles', ['v3', 'private'], 'GET', {'cost': 3})
64
+ v3_private_get_brokerage_products_product_id_ticker = v3PrivateGetBrokerageProductsProductIdTicker = Entry('brokerage/products/{product_id}/ticker', ['v3', 'private'], 'GET', {'cost': 3})
65
+ v3_private_get_brokerage_best_bid_ask = v3PrivateGetBrokerageBestBidAsk = Entry('brokerage/best_bid_ask', ['v3', 'private'], 'GET', {'cost': 3})
66
+ v3_private_get_brokerage_product_book = v3PrivateGetBrokerageProductBook = Entry('brokerage/product_book', ['v3', 'private'], 'GET', {'cost': 3})
67
+ v3_private_get_brokerage_transaction_summary = v3PrivateGetBrokerageTransactionSummary = Entry('brokerage/transaction_summary', ['v3', 'private'], 'GET', {'cost': 3})
68
+ v3_private_get_brokerage_portfolios = v3PrivateGetBrokeragePortfolios = Entry('brokerage/portfolios', ['v3', 'private'], 'GET', {'cost': 1})
69
+ v3_private_get_brokerage_portfolios_portfolio_uuid = v3PrivateGetBrokeragePortfoliosPortfolioUuid = Entry('brokerage/portfolios/{portfolio_uuid}', ['v3', 'private'], 'GET', {'cost': 1})
70
+ v3_private_get_brokerage_convert_trade_trade_id = v3PrivateGetBrokerageConvertTradeTradeId = Entry('brokerage/convert/trade/{trade_id}', ['v3', 'private'], 'GET', {'cost': 1})
71
+ v3_private_get_brokerage_cfm_balance_summary = v3PrivateGetBrokerageCfmBalanceSummary = Entry('brokerage/cfm/balance_summary', ['v3', 'private'], 'GET', {'cost': 1})
72
+ v3_private_get_brokerage_cfm_positions = v3PrivateGetBrokerageCfmPositions = Entry('brokerage/cfm/positions', ['v3', 'private'], 'GET', {'cost': 1})
73
+ v3_private_get_brokerage_cfm_positions_product_id = v3PrivateGetBrokerageCfmPositionsProductId = Entry('brokerage/cfm/positions/{product_id}', ['v3', 'private'], 'GET', {'cost': 1})
74
+ v3_private_get_brokerage_cfm_sweeps = v3PrivateGetBrokerageCfmSweeps = Entry('brokerage/cfm/sweeps', ['v3', 'private'], 'GET', {'cost': 1})
75
+ v3_private_get_brokerage_intx_portfolio_portfolio_uuid = v3PrivateGetBrokerageIntxPortfolioPortfolioUuid = Entry('brokerage/intx/portfolio/{portfolio_uuid}', ['v3', 'private'], 'GET', {'cost': 1})
76
+ v3_private_get_brokerage_intx_positions_portfolio_uuid = v3PrivateGetBrokerageIntxPositionsPortfolioUuid = Entry('brokerage/intx/positions/{portfolio_uuid}', ['v3', 'private'], 'GET', {'cost': 1})
77
+ v3_private_get_brokerage_intx_positions_portfolio_uuid_symbol = v3PrivateGetBrokerageIntxPositionsPortfolioUuidSymbol = Entry('brokerage/intx/positions/{portfolio_uuid}/{symbol}', ['v3', 'private'], 'GET', {'cost': 1})
78
+ v3_private_get_brokerage_payment_methods = v3PrivateGetBrokeragePaymentMethods = Entry('brokerage/payment_methods', ['v3', 'private'], 'GET', {'cost': 1})
79
+ v3_private_get_brokerage_payment_methods_payment_method_id = v3PrivateGetBrokeragePaymentMethodsPaymentMethodId = Entry('brokerage/payment_methods/{payment_method_id}', ['v3', 'private'], 'GET', {'cost': 1})
80
+ v3_private_post_brokerage_orders = v3PrivatePostBrokerageOrders = Entry('brokerage/orders', ['v3', 'private'], 'POST', {'cost': 1})
81
+ v3_private_post_brokerage_orders_batch_cancel = v3PrivatePostBrokerageOrdersBatchCancel = Entry('brokerage/orders/batch_cancel', ['v3', 'private'], 'POST', {'cost': 1})
82
+ v3_private_post_brokerage_orders_edit = v3PrivatePostBrokerageOrdersEdit = Entry('brokerage/orders/edit', ['v3', 'private'], 'POST', {'cost': 1})
83
+ v3_private_post_brokerage_orders_edit_preview = v3PrivatePostBrokerageOrdersEditPreview = Entry('brokerage/orders/edit_preview', ['v3', 'private'], 'POST', {'cost': 1})
84
+ v3_private_post_brokerage_orders_preview = v3PrivatePostBrokerageOrdersPreview = Entry('brokerage/orders/preview', ['v3', 'private'], 'POST', {'cost': 1})
85
+ v3_private_post_brokerage_portfolios = v3PrivatePostBrokeragePortfolios = Entry('brokerage/portfolios', ['v3', 'private'], 'POST', {'cost': 1})
86
+ v3_private_post_brokerage_portfolios_move_funds = v3PrivatePostBrokeragePortfoliosMoveFunds = Entry('brokerage/portfolios/move_funds', ['v3', 'private'], 'POST', {'cost': 1})
87
+ v3_private_post_brokerage_convert_quote = v3PrivatePostBrokerageConvertQuote = Entry('brokerage/convert/quote', ['v3', 'private'], 'POST', {'cost': 1})
88
+ v3_private_post_brokerage_convert_trade_trade_id = v3PrivatePostBrokerageConvertTradeTradeId = Entry('brokerage/convert/trade/{trade_id}', ['v3', 'private'], 'POST', {'cost': 1})
89
+ v3_private_post_brokerage_cfm_sweeps_schedule = v3PrivatePostBrokerageCfmSweepsSchedule = Entry('brokerage/cfm/sweeps/schedule', ['v3', 'private'], 'POST', {'cost': 1})
90
+ v3_private_post_brokerage_intx_allocate = v3PrivatePostBrokerageIntxAllocate = Entry('brokerage/intx/allocate', ['v3', 'private'], 'POST', {'cost': 1})
91
+ v3_private_post_brokerage_orders_close_position = v3PrivatePostBrokerageOrdersClosePosition = Entry('brokerage/orders/close_position', ['v3', 'private'], 'POST', {'cost': 1})
92
+ v3_private_put_brokerage_portfolios_portfolio_uuid = v3PrivatePutBrokeragePortfoliosPortfolioUuid = Entry('brokerage/portfolios/{portfolio_uuid}', ['v3', 'private'], 'PUT', {'cost': 1})
93
+ v3_private_delete_brokerage_portfolios_portfolio_uuid = v3PrivateDeleteBrokeragePortfoliosPortfolioUuid = Entry('brokerage/portfolios/{portfolio_uuid}', ['v3', 'private'], 'DELETE', {'cost': 1})
94
+ v3_private_delete_brokerage_cfm_sweeps = v3PrivateDeleteBrokerageCfmSweeps = Entry('brokerage/cfm/sweeps', ['v3', 'private'], 'DELETE', {'cost': 1})
ccxt/abstract/whitebit.py CHANGED
@@ -87,3 +87,12 @@ class ImplicitAPI:
87
87
  v4_private_post_convert_estimate = v4PrivatePostConvertEstimate = Entry('convert/estimate', ['v4', 'private'], 'POST', {})
88
88
  v4_private_post_convert_confirm = v4PrivatePostConvertConfirm = Entry('convert/confirm', ['v4', 'private'], 'POST', {})
89
89
  v4_private_post_convert_history = v4PrivatePostConvertHistory = Entry('convert/history', ['v4', 'private'], 'POST', {})
90
+ v4_private_post_sub_account_create = v4PrivatePostSubAccountCreate = Entry('sub-account/create', ['v4', 'private'], 'POST', {})
91
+ v4_private_post_sub_account_delete = v4PrivatePostSubAccountDelete = Entry('sub-account/delete', ['v4', 'private'], 'POST', {})
92
+ v4_private_post_sub_account_edit = v4PrivatePostSubAccountEdit = Entry('sub-account/edit', ['v4', 'private'], 'POST', {})
93
+ v4_private_post_sub_account_list = v4PrivatePostSubAccountList = Entry('sub-account/list', ['v4', 'private'], 'POST', {})
94
+ v4_private_post_sub_account_transfer = v4PrivatePostSubAccountTransfer = Entry('sub-account/transfer', ['v4', 'private'], 'POST', {})
95
+ v4_private_post_sub_account_block = v4PrivatePostSubAccountBlock = Entry('sub-account/block', ['v4', 'private'], 'POST', {})
96
+ v4_private_post_sub_account_unblock = v4PrivatePostSubAccountUnblock = Entry('sub-account/unblock', ['v4', 'private'], 'POST', {})
97
+ v4_private_post_sub_account_balances = v4PrivatePostSubAccountBalances = Entry('sub-account/balances', ['v4', 'private'], 'POST', {})
98
+ v4_private_post_sub_account_transfer_history = v4PrivatePostSubAccountTransferHistory = Entry('sub-account/transfer/history', ['v4', 'private'], 'POST', {})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.22'
7
+ __version__ = '4.3.24'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -99,8 +99,9 @@ from ccxt.async_support.btcturk import btcturk
99
99
  from ccxt.async_support.bybit import bybit # noqa: F401
100
100
  from ccxt.async_support.cex import cex # noqa: F401
101
101
  from ccxt.async_support.coinbase import coinbase # noqa: F401
102
+ from ccxt.async_support.coinbaseadvanced import coinbaseadvanced # noqa: F401
103
+ from ccxt.async_support.coinbaseexchange import coinbaseexchange # noqa: F401
102
104
  from ccxt.async_support.coinbaseinternational import coinbaseinternational # noqa: F401
103
- from ccxt.async_support.coinbasepro import coinbasepro # noqa: F401
104
105
  from ccxt.async_support.coincheck import coincheck # noqa: F401
105
106
  from ccxt.async_support.coinex import coinex # noqa: F401
106
107
  from ccxt.async_support.coinlist import coinlist # noqa: F401
@@ -205,8 +206,9 @@ exchanges = [
205
206
  'bybit',
206
207
  'cex',
207
208
  'coinbase',
209
+ 'coinbaseadvanced',
210
+ 'coinbaseexchange',
208
211
  'coinbaseinternational',
209
- 'coinbasepro',
210
212
  'coincheck',
211
213
  'coinex',
212
214
  'coinlist',
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.22'
5
+ __version__ = '4.3.24'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1848,8 +1848,9 @@ class Exchange(BaseExchange):
1848
1848
  errors = 0
1849
1849
  responseLength = len(response)
1850
1850
  if self.verbose:
1851
- iteration = (i + str(1))
1852
- cursorMessage = 'Cursor pagination call ' + iteration + ' method ' + method + ' response length ' + str(responseLength) + ' cursor ' + cursorValue
1851
+ cursorString = '' if (cursorValue is None) else cursorValue
1852
+ iteration = (i + 1)
1853
+ cursorMessage = 'Cursor pagination call ' + str(iteration) + ' method ' + method + ' response length ' + str(responseLength) + ' cursor ' + cursorString
1853
1854
  self.log(cursorMessage)
1854
1855
  if responseLength == 0:
1855
1856
  break
@@ -9004,7 +9004,7 @@ class binance(Exchange, ImplicitAPI):
9004
9004
  await self.load_markets()
9005
9005
  # by default cache the leverage bracket
9006
9006
  # it contains useful stuff like the maintenance margin and initial margin for positions
9007
- leverageBrackets = self.safe_dict(self.options, 'leverageBrackets', {})
9007
+ leverageBrackets = self.safe_dict(self.options, 'leverageBrackets')
9008
9008
  if (leverageBrackets is None) or (reload):
9009
9009
  defaultType = self.safe_string(self.options, 'defaultType', 'future')
9010
9010
  type = self.safe_string(params, 'type', defaultType)
@@ -2933,6 +2933,10 @@ class bitrue(Exchange, ImplicitAPI):
2933
2933
  signPath = signPath + '/' + version + '/' + path
2934
2934
  signMessage = timestamp + method + signPath
2935
2935
  if method == 'GET':
2936
+ keys = list(params.keys())
2937
+ keysLength = len(keys)
2938
+ if keysLength > 0:
2939
+ signMessage += '?' + self.urlencode(params)
2936
2940
  signature = self.hmac(self.encode(signMessage), self.encode(self.secret), hashlib.sha256)
2937
2941
  headers = {
2938
2942
  'X-CH-APIKEY': self.apiKey,
@@ -2945,7 +2949,7 @@ class bitrue(Exchange, ImplicitAPI):
2945
2949
  'recvWindow': recvWindow,
2946
2950
  }, params)
2947
2951
  body = self.json(query)
2948
- signMessage = signMessage + json.dumps(body)
2952
+ signMessage += body
2949
2953
  signature = self.hmac(self.encode(signMessage), self.encode(self.secret), hashlib.sha256)
2950
2954
  headers = {
2951
2955
  'Content-Type': 'application/json',
@@ -1754,6 +1754,10 @@ class coinbase(Exchange, ImplicitAPI):
1754
1754
  request = {}
1755
1755
  if symbols is not None:
1756
1756
  request['product_ids'] = self.market_ids(symbols)
1757
+ marketType = None
1758
+ marketType, params = self.handle_market_type_and_params('fetchTickers', self.get_market_from_symbols(symbols), params, 'default')
1759
+ if marketType is not None and marketType != 'default':
1760
+ request['product_type'] = 'FUTURE' if (marketType == 'swap') else 'SPOT'
1757
1761
  response = await self.v3PublicGetBrokerageMarketProducts(self.extend(request, params))
1758
1762
  #
1759
1763
  # {
@@ -0,0 +1,17 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+
6
+ from ccxt.async_support.coinbase import coinbase
7
+ from ccxt.abstract.coinbaseadvanced import ImplicitAPI
8
+
9
+
10
+ class coinbaseadvanced(coinbase, ImplicitAPI):
11
+
12
+ def describe(self):
13
+ return self.deep_extend(super(coinbaseadvanced, self).describe(), {
14
+ 'id': 'coinbaseadvanced',
15
+ 'name': 'Coinbase Advanced',
16
+ 'alias': True,
17
+ })
@@ -4,7 +4,7 @@
4
4
  # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
- from ccxt.abstract.coinbasepro import ImplicitAPI
7
+ from ccxt.abstract.coinbaseexchange import ImplicitAPI
8
8
  import hashlib
9
9
  from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
@@ -22,12 +22,12 @@ from ccxt.base.decimal_to_precision import TICK_SIZE
22
22
  from ccxt.base.precise import Precise
23
23
 
24
24
 
25
- class coinbasepro(Exchange, ImplicitAPI):
25
+ class coinbaseexchange(Exchange, ImplicitAPI):
26
26
 
27
27
  def describe(self):
28
- return self.deep_extend(super(coinbasepro, self).describe(), {
29
- 'id': 'coinbasepro',
30
- 'name': 'Coinbase Pro(Deprecated)',
28
+ return self.deep_extend(super(coinbaseexchange, self).describe(), {
29
+ 'id': 'coinbaseexchange',
30
+ 'name': 'Coinbase Exchange',
31
31
  'countries': ['US'],
32
32
  'rateLimit': 100,
33
33
  'userAgent': self.userAgents['chrome'],
@@ -89,19 +89,19 @@ class coinbasepro(Exchange, ImplicitAPI):
89
89
  '6h': 21600,
90
90
  '1d': 86400,
91
91
  },
92
- 'hostname': 'pro.coinbase.com',
92
+ 'hostname': 'exchange.coinbase.com',
93
93
  'urls': {
94
94
  'test': {
95
- 'public': 'https://api-public.sandbox.pro.coinbase.com',
96
- 'private': 'https://api-public.sandbox.pro.coinbase.com',
95
+ 'public': 'https://api-public.sandbox.exchange.coinbase.com',
96
+ 'private': 'https://api-public.sandbox.exchange.coinbase.com',
97
97
  },
98
- 'logo': 'https://user-images.githubusercontent.com/1294454/41764625-63b7ffde-760a-11e8-996d-a6328fa9347a.jpg',
98
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/34a65553-88aa-4a38-a714-064bd228b97e',
99
99
  'api': {
100
100
  'public': 'https://api.{hostname}',
101
101
  'private': 'https://api.{hostname}',
102
102
  },
103
- 'www': 'https://pro.coinbase.com/',
104
- 'doc': 'https://docs.pro.coinbase.com',
103
+ 'www': 'https://coinbase.com/',
104
+ 'doc': 'https://docs.cloud.coinbase.com/exchange/docs/',
105
105
  'fees': [
106
106
  'https://docs.pro.coinbase.com/#fees',
107
107
  'https://support.pro.coinbase.com/customer/en/portal/articles/2945310-fees',
@@ -315,7 +315,7 @@ class coinbasepro(Exchange, ImplicitAPI):
315
315
 
316
316
  async def fetch_markets(self, params={}) -> List[Market]:
317
317
  """
318
- retrieves data on all markets for coinbasepro
318
+ retrieves data on all markets for coinbaseexchange
319
319
  :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducts
320
320
  :param dict [params]: extra parameters specific to the exchange API endpoint
321
321
  :returns dict[]: an array of objects representing market data
@@ -1047,7 +1047,7 @@ class coinbasepro(Exchange, ImplicitAPI):
1047
1047
  """
1048
1048
  :see: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorder
1049
1049
  fetches information on an order made by the user
1050
- :param str symbol: not used by coinbasepro fetchOrder
1050
+ :param str symbol: not used by coinbaseexchange fetchOrder
1051
1051
  :param dict [params]: extra parameters specific to the exchange API endpoint
1052
1052
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1053
1053
  """