coingecko_ruby 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,24 +1,226 @@
1
1
  module CoingeckoRuby
2
2
  class Client
3
3
  module Coins
4
- def coins_list
5
- get('coins/list')
4
+ # Fetches the id, name, and symbol of every coin supported by CoinGecko's API.
5
+ #
6
+ # @param include_contract_address [Boolean] displays the coin's platform contract address (e.g. 0x... for ETH-based tokens)
7
+ #
8
+ # @return [Array<Hash>] returns an array of hashes for every supported coin's id, name, symbol, and platform contract address (optional).
9
+ #
10
+ # @example Fetch the list of coins supported by CoinGecko's API.
11
+ # client.coins_list
12
+ # @example Response object (truncated)
13
+ # [
14
+ # {
15
+ # "id" => "01coin",
16
+ # "symbol" => "zoc",
17
+ # "name" => "01coin"
18
+ # }, {
19
+ # "id" => "0-5x-long-algorand-token",
20
+ # "symbol" => "algohalf",
21
+ # "name" => "0.5X Long Algorand Token"
22
+ # }, {
23
+ # "id" => "0-5x-long-altcoin-index-token",
24
+ # "symbol" => "althalf",
25
+ # "name" => "0.5X Long Altcoin Index Token"
26
+ # }, {
27
+ # "id" => "0-5x-long-balancer-token",
28
+ # "symbol" => "balhalf",
29
+ # "name" => "0.5X Long Balancer Token"
30
+ # }, {
31
+ # "id" => "0-5x-long-bitcoin-cash-token",
32
+ # "symbol" => "bchhalf",
33
+ # "name" => "0.5X Long Bitcoin Cash Token"
34
+ # },
35
+ # ]
36
+ def coins_list(include_contract_address: false)
37
+ get 'coins/list', { include_contract_address: include_contract_address }
6
38
  end
7
39
 
8
- def get_coin_data(id:)
9
- get("coins/#{id}")
40
+ # Fetches detailed current data for a coin.
41
+ # @param id [String] the coin id to fetch.
42
+ # @option options [Boolean] :tickers (true) include ticker data (e.g. BTC-ETH).
43
+ # @option options [Boolean] :market_data (true) include market data (e.g. market cap).
44
+ # @option options [Boolean] :community_data (true) include community data (e.g. subreddit info, discussion forums).
45
+ # @option options [Boolean] :developer_data (true) include developer data (e.g. Github stats).
46
+ # @option options [Boolean] :sparkline (false) include sparkline data from the last 7 days.
47
+ #
48
+ # @return [Hash] returns comprehensive current data for the given coin.
49
+ #
50
+ # @example Fetch Bitcoin's current data.
51
+ # client.get_coin_data(id: 'bitcoin')
52
+ def get_coin_data(id:, options: {})
53
+ get "coins/#{id}", { options: options }
10
54
  end
11
55
 
12
- def get_coin_tickers(id:)
13
- get("coins/#{id}")
56
+ # Fetches the list of tickers (e.g: BTC-USD) for a coin
57
+ #
58
+ # @param id [String] the coin id to fetch.
59
+ # @option options [String] :exchange_id fetch tickers from the given exchange id (e.g. 'binance').
60
+ # @option options [String] :include_exchange_logo includes the exchange's logo.
61
+ # @option options [Integer] :page sets the page for results.
62
+ # @option options [String] :order ('trust_score_desc') sets the sort order for results. Valid values: trust_score_desc', 'trust_score_asc', 'volume_desc.
63
+ # @option options [Boolean] :depth (false) displays orderbook depth (2%).
64
+ #
65
+ # @return [Hash] returns the list of tickers for the given coin.
66
+ #
67
+ # @example Fetch Bitcoin's tickers.
68
+ # client.get_tickers(id: 'bitcoin)
69
+ # @example Response object (truncated)
70
+ # {
71
+ # "name" => "Bitcoin",
72
+ # "tickers" => [{
73
+ # "base" => "BTC",
74
+ # "target" => "USDT",
75
+ # "market" => {
76
+ # "name" => "FTX.US",
77
+ # "identifier" => "ftx_us",
78
+ # "has_trading_incentive" => false
79
+ # },
80
+ # "last" => 48953.0,
81
+ # "volume" => 206.41378108798236,
82
+ # "converted_last" => {
83
+ # "btc" => 0.99774619, "eth" => 12.641434, "usd" => 48956
84
+ # },
85
+ # "converted_volume" => {
86
+ # "btc" => 205.949, "eth" => 2609, "usd" => 10105129
87
+ # },
88
+ # "trust_score" => "green",
89
+ # "bid_ask_spread_percentage" => 0.059238,
90
+ # "timestamp" => "2021-05-16T07:02:40+00:00",
91
+ # "last_traded_at" => "2021-05-16T07:02:40+00:00",
92
+ # "last_fetch_at" => "2021-05-16T07:02:40+00:00",
93
+ # "is_anomaly" => false,
94
+ # "is_stale" => false,
95
+ # "trade_url" => "https://ftx.us/trade/BTC/USDT",
96
+ # "token_info_url" => nil,
97
+ # "coin_id" => "bitcoin",
98
+ # "target_coin_id" => "tether"
99
+ # }],
100
+ # }
101
+ # @example Fetch Bitcoin's tickers from Binance with 2% orderbook depth data.
102
+ # client.get_tickers(id: 'bitcoin', options: { exchange_id: 'binance', depth: true })
103
+ # @example Response object (truncated)
104
+ # {
105
+ # "name" => "Bitcoin",
106
+ # "tickers" => [{
107
+ # "base" => "BTC",
108
+ # "target" => "USDT",
109
+ # "market" => {
110
+ # "name" => "FTX.US",
111
+ # "identifier" => "ftx_us",
112
+ # "has_trading_incentive" => false
113
+ # },
114
+ # "last" => 48953.0,
115
+ # "volume" => 206.41378108798236,
116
+ # "cost_to_move_up_usd" => 41991391.6823387,
117
+ # "cost_to_move_down_usd" => 44281410.3725698,
118
+ # "converted_last" => {
119
+ # "btc" => 0.99774619, "eth" => 12.641434, "usd" => 48956
120
+ # },
121
+ # "converted_volume" => {
122
+ # "btc" => 205.949, "eth" => 2609, "usd" => 10105129
123
+ # },
124
+ # "trust_score" => "green",
125
+ # "bid_ask_spread_percentage" => 0.059238,
126
+ # "timestamp" => "2021-05-16T07:02:40+00:00",
127
+ # "last_traded_at" => "2021-05-16T07:02:40+00:00",
128
+ # "last_fetch_at" => "2021-05-16T07:02:40+00:00",
129
+ # "is_anomaly" => false,
130
+ # "is_stale" => false,
131
+ # "trade_url" => "https://ftx.us/trade/BTC/USDT",
132
+ # "token_info_url" => nil,
133
+ # "coin_id" => "bitcoin",
134
+ # "target_coin_id" => "tether"
135
+ # }],
136
+ # }
137
+ def get_tickers(id:, options: {})
138
+ get "coins/#{id}/tickers", { options: options }
14
139
  end
15
140
 
16
- def get_coin_data(id:)
17
- get("coins/#{id}")
18
- end
19
-
20
- def markets
21
- get('coins/markets')
141
+ # Fetches market data for a coin or a list of coins.
142
+ #
143
+ # @param ids [String] the coin id or ids to fetch.
144
+ # @param currency [String] the currency to display market price data.
145
+ # @option options [String] :category filter results by the given coin category.
146
+ # @option options [String] :order ('market_cap_desc') sets the sort order for results. Valid values: market_cap_desc, gecko_desc, gecko_asc, market_cap_asc, market_cap_desc, volume_asc, volume_desc, id_asc, id_desc.
147
+ # @option options [Integer] :per_page (100) sets the number of results to return per page.
148
+ # @option options [Integer] :page sets the page for results.
149
+ # @option options [Boolean] :sparkline (false) include sparkline data from the last 7 days.
150
+ # @option options [String] :price_change_percentage include price change percentage for each coin. Valid values: 1h, 24h, 7d, 14d, 30d, 200d, 1y.
151
+ #
152
+ # @return [Array<Hash>] returns market data for the given coin or coins.
153
+ #
154
+ # @example Fetch market data for Bitcoin and Ethereum in USD.
155
+ # client.get_markets(ids: 'bitcoin, ethereum', currency: 'gbp')
156
+ # @example Response object
157
+ # [{
158
+ # "id" => "bitcoin",
159
+ # "symbol" => "btc",
160
+ # "name" => "Bitcoin",
161
+ # "image" =>
162
+ # "https://assets.coingecko.com/coins/images/1/large/bitcoin.png?1547033579",
163
+ # "current_price" => 34781,
164
+ # "market_cap" => 651147609834,
165
+ # "market_cap_rank" => 1,
166
+ # "fully_diluted_valuation" => 730792236092,
167
+ # "total_volume" => 47231436126,
168
+ # "high_24h" => 35335,
169
+ # "low_24h" => 33105,
170
+ # "price_change_24h" => 41.43,
171
+ # "price_change_percentage_24h" => 0.11926,
172
+ # "market_cap_change_24h" => 1033983115,
173
+ # "market_cap_change_percentage_24h" => 0.15905,
174
+ # "circulating_supply" => 18711337.0,
175
+ # "total_supply" => 21000000.0,
176
+ # "max_supply" => 21000000.0,
177
+ # "ath" => 47095,
178
+ # "ath_change_percentage" => -26.10691,
179
+ # "ath_date" => "2021-04-14T11:54:46.763Z",
180
+ # "atl" => 43.9,
181
+ # "atl_change_percentage" => 79166.25611,
182
+ # "atl_date" => "2013-07-05T00:00:00.000Z",
183
+ # "roi" => nil,
184
+ # "last_updated" => "2021-05-16T07:07:38.393Z"
185
+ # },
186
+ # {
187
+ # "id" => "ethereum",
188
+ # "symbol" => "eth",
189
+ # "name" => "Ethereum",
190
+ # "image" =>
191
+ # "https://assets.coingecko.com/coins/images/279/large/ethereum.png?1595348880",
192
+ # "current_price" => 2737.81,
193
+ # "market_cap" => 318383298158,
194
+ # "market_cap_rank" => 2,
195
+ # "fully_diluted_valuation" => nil,
196
+ # "total_volume" => 43302287477,
197
+ # "high_24h" => 2812.64,
198
+ # "low_24h" => 2579.9,
199
+ # "price_change_24h" => -67.10729241,
200
+ # "price_change_percentage_24h" => -2.39249,
201
+ # "market_cap_change_24h" => -7076221191.603394,
202
+ # "market_cap_change_percentage_24h" => -2.17422,
203
+ # "circulating_supply" => 115894196.749,
204
+ # "total_supply" => nil,
205
+ # "max_supply" => nil,
206
+ # "ath" => 3090.18,
207
+ # "ath_change_percentage" => -11.07563,
208
+ # "ath_date" => "2021-05-12T14:41:48.623Z",
209
+ # "atl" => 0.280314,
210
+ # "atl_change_percentage" => 980202.46141,
211
+ # "atl_date" => "2015-10-20T00:00:00.000Z",
212
+ # "roi" => {
213
+ # "times" => 104.29403414512163,
214
+ # "currency" => "btc",
215
+ # "percentage" => 10429.403414512162
216
+ # },
217
+ # "last_updated" => "2021-05-16T07:06:00.946Z"
218
+ # }
219
+ # ]
220
+ # @example Fetch market data for every CoinGecko-supported coin in USD.
221
+ # client.get_markets(currency: 'usd')
222
+ def get_markets(ids:, currency: 'usd', options: {})
223
+ get 'coins/markets', { ids: ids, vs_currency: currency, options: options }
22
224
  end
23
225
  end
24
226
  end
@@ -0,0 +1,1600 @@
1
+ module CoingeckoRuby
2
+ class Client
3
+ module Exchanges
4
+ # Fetches complete data for every exchange currently supported by the CoinGecko API.
5
+ #
6
+ # @option options [Integer] :per_page (100) sets the number of results to return per page.
7
+ # @option options [Integer] :page sets the page for results.
8
+ #
9
+ # @return [Array<Hash>] returns an array of hashes of detailed exchange data.
10
+ #
11
+ # @example Fetch complete exchange data with 2 results per page.
12
+ # client.get_exchanges(options: { per_page: 2 })
13
+ # @example Response object
14
+ # [{
15
+ # "id" => "binance",
16
+ # "name" => "Binance",
17
+ # "year_established" => 2017,
18
+ # "country" => "Cayman Islands",
19
+ # "description" => "",
20
+ # "url" => "https://www.binance.com/",
21
+ # "image" => "https://assets.coingecko.com/markets/images/52/small/binance.jpg?1519353250",
22
+ # "has_trading_incentive" => false,
23
+ # "trust_score" => 10,
24
+ # "trust_score_rank" => 1,
25
+ # "trade_volume_24h_btc" => 982949.3975723931,
26
+ # "trade_volume_24h_btc_normalized" => 982949.3975723931
27
+ # }, {
28
+ # "id" => "gdax",
29
+ # "name" => "Coinbase Pro",
30
+ # "year_established" => 2012,
31
+ # "country" => "United States",
32
+ # "description" => "",
33
+ # "url" => "https://www.coinbase.com",
34
+ # "image" => "https://assets.coingecko.com/markets/images/23/small/fe290a14-ac8f-4c90-9aed-5e72abf271f0.jpeg?1527171545",
35
+ # "has_trading_incentive" => false,
36
+ # "trust_score" => 10,
37
+ # "trust_score_rank" => 2,
38
+ # "trade_volume_24h_btc" => 153732.65763353973,
39
+ # "trade_volume_24h_btc_normalized" => 153732.65763353973
40
+ # }]
41
+ def get_exchanges(options: {})
42
+ get 'exchanges', { options: options }
43
+ end
44
+
45
+ # Fetches complete data for a specific exchange.
46
+ #
47
+ # @param id [String] the exchange id to fetch.
48
+ #
49
+ # @return [Hash] returns detailed data for the given exchange.
50
+ #
51
+ # @example Fetch complete exchange data for Binance.
52
+ # client.get_exchange_data(id: 'binance')
53
+ def get_exchange_data(id:)
54
+ get "exchanges/#{id}"
55
+ end
56
+
57
+ # Fetches exchange ids for every exchange currently supported by the CoinGecko API.
58
+ #
59
+ # @return [Array<Hash>] returns an array of hashes of the exchange id and name.
60
+ #
61
+ # @example Fetch all exchange ids.
62
+ # client.get_exchange_ids
63
+ # @example Response object
64
+ # [{
65
+ # "id" => "aave",
66
+ # "name" => "Aave"
67
+ # }, {
68
+ # "id" => "aax",
69
+ # "name" => "AAX"
70
+ # }, {
71
+ # "id" => "aax_futures",
72
+ # "name" => "AAX Futures"
73
+ # }, {
74
+ # "id" => "abcc",
75
+ # "name" => "ABCC"
76
+ # }, {
77
+ # "id" => "abit",
78
+ # "name" => "Abit"
79
+ # }, {
80
+ # "id" => "acdx",
81
+ # "name" => "ACDX"
82
+ # }, {
83
+ # "id" => "acdx_futures",
84
+ # "name" => "ACDX Futures"
85
+ # }, {
86
+ # "id" => "aex",
87
+ # "name" => "AEX"
88
+ # }, {
89
+ # "id" => "allbit",
90
+ # "name" => "Allbit"
91
+ # }, {
92
+ # "id" => "allcoin",
93
+ # "name" => "Allcoin"
94
+ # }, {
95
+ # "id" => "alpha_five",
96
+ # "name" => "Alpha5"
97
+ # }, {
98
+ # "id" => "altcointrader",
99
+ # "name" => "AltcoinTrader"
100
+ # }, {
101
+ # "id" => "alterdice",
102
+ # "name" => "AlterDice"
103
+ # }, {
104
+ # "id" => "altilly",
105
+ # "name" => "Altilly"
106
+ # }, {
107
+ # "id" => "altmarkets",
108
+ # "name" => "Altmarkets"
109
+ # }, {
110
+ # "id" => "anyswap",
111
+ # "name" => "Anyswap"
112
+ # }, {
113
+ # "id" => "apeswap",
114
+ # "name" => "ApeSwap"
115
+ # }, {
116
+ # "id" => "aprobit",
117
+ # "name" => "Aprobit"
118
+ # }, {
119
+ # "id" => "artisturba",
120
+ # "name" => "Artis Turba"
121
+ # }, {
122
+ # "id" => "atomars",
123
+ # "name" => "Atomars"
124
+ # }, {
125
+ # "id" => "b2bx",
126
+ # "name" => "B2BX"
127
+ # }, {
128
+ # "id" => "bakeryswap",
129
+ # "name" => "Bakeryswap"
130
+ # }, {
131
+ # "id" => "bakkt",
132
+ # "name" => "Bakkt"
133
+ # }, {
134
+ # "id" => "balancer",
135
+ # "name" => "Balancer (v2)"
136
+ # }, {
137
+ # "id" => "balancer_v1",
138
+ # "name" => "Balancer (v1)"
139
+ # }, {
140
+ # "id" => "bamboo_relay",
141
+ # "name" => "Bamboo Relay"
142
+ # }, {
143
+ # "id" => "bancor",
144
+ # "name" => "Bancor Network"
145
+ # }, {
146
+ # "id" => "bankera",
147
+ # "name" => "Bankera"
148
+ # }, {
149
+ # "id" => "basefex",
150
+ # "name" => "BaseFEX"
151
+ # }, {
152
+ # "id" => "bcex",
153
+ # "name" => "BCEX"
154
+ # }, {
155
+ # "id" => "beaxy",
156
+ # "name" => "Beaxy"
157
+ # }, {
158
+ # "id" => "bepswap",
159
+ # "name" => "BepSwap"
160
+ # }, {
161
+ # "id" => "bgogo",
162
+ # "name" => "Bgogo"
163
+ # }, {
164
+ # "id" => "bibo",
165
+ # "name" => "Bibo"
166
+ # }, {
167
+ # "id" => "bibox",
168
+ # "name" => "Bibox"
169
+ # }, {
170
+ # "id" => "bibox_futures",
171
+ # "name" => "Bibox (Futures)"
172
+ # }, {
173
+ # "id" => "biconomy",
174
+ # "name" => "Biconomy"
175
+ # }, {
176
+ # "id" => "bidesk",
177
+ # "name" => "Bidesk"
178
+ # }, {
179
+ # "id" => "bigone",
180
+ # "name" => "BigONE"
181
+ # }, {
182
+ # "id" => "bigone_futures",
183
+ # "name" => "BigONE Futures"
184
+ # }, {
185
+ # "id" => "biki",
186
+ # "name" => "BiKi"
187
+ # }, {
188
+ # "id" => "biki_futures",
189
+ # "name" => "Biki (Futures)"
190
+ # }, {
191
+ # "id" => "bilaxy",
192
+ # "name" => "Bilaxy"
193
+ # }, {
194
+ # "id" => "binance",
195
+ # "name" => "Binance"
196
+ # }, {
197
+ # "id" => "binance_dex",
198
+ # "name" => "Binance DEX"
199
+ # }, {
200
+ # "id" => "binance_dex_mini",
201
+ # "name" => "Binance DEX (Mini)"
202
+ # }, {
203
+ # "id" => "binance_futures",
204
+ # "name" => "Binance (Futures)"
205
+ # }, {
206
+ # "id" => "binance_jersey",
207
+ # "name" => "Binance Jersey"
208
+ # }, {
209
+ # "id" => "binance_us",
210
+ # "name" => "Binance US"
211
+ # }, {
212
+ # "id" => "bione",
213
+ # "name" => "BiONE"
214
+ # }, {
215
+ # "id" => "birake",
216
+ # "name" => "Birake"
217
+ # }, {
218
+ # "id" => "bisq",
219
+ # "name" => "Bisq"
220
+ # }, {
221
+ # "id" => "bit2c",
222
+ # "name" => "Bit2c"
223
+ # }, {
224
+ # "id" => "bitalong",
225
+ # "name" => "Bitalong"
226
+ # }, {
227
+ # "id" => "bitbank",
228
+ # "name" => "Bitbank"
229
+ # }, {
230
+ # "id" => "bitbay",
231
+ # "name" => "BitBay"
232
+ # }, {
233
+ # "id" => "bitbns",
234
+ # "name" => "BitBNS"
235
+ # }, {
236
+ # "id" => "bitbox",
237
+ # "name" => "BITFRONT"
238
+ # }, {
239
+ # "id" => "bitci",
240
+ # "name" => "Bitci"
241
+ # }, {
242
+ # "id" => "bitcoin_com",
243
+ # "name" => "Bitcoin.com Exchange"
244
+ # }, {
245
+ # "id" => "bit_com_futures",
246
+ # "name" => "Bit.com"
247
+ # }, {
248
+ # "id" => "bitcratic",
249
+ # "name" => "Bitcratic"
250
+ # }, {
251
+ # "id" => "bitex",
252
+ # "name" => "Bitex.la"
253
+ # }, {
254
+ # "id" => "bitexbook",
255
+ # "name" => "BITEXBOOK"
256
+ # }, {
257
+ # "id" => "bitexlive",
258
+ # "name" => "Bitexlive"
259
+ # }, {
260
+ # "id" => "bitfex",
261
+ # "name" => "Bitfex"
262
+ # }, {
263
+ # "id" => "bitfinex",
264
+ # "name" => "Bitfinex"
265
+ # }, {
266
+ # "id" => "bitfinex_futures",
267
+ # "name" => "Bitfinex (Futures)"
268
+ # }, {
269
+ # "id" => "bitflyer",
270
+ # "name" => "bitFlyer"
271
+ # }, {
272
+ # "id" => "bitflyer_futures",
273
+ # "name" => "Bitflyer (Futures)"
274
+ # }, {
275
+ # "id" => "bitforex",
276
+ # "name" => "Bitforex"
277
+ # }, {
278
+ # "id" => "bitforex_futures",
279
+ # "name" => "Bitforex (Futures)"
280
+ # }, {
281
+ # "id" => "bitget",
282
+ # "name" => "Bitget"
283
+ # }, {
284
+ # "id" => "bitget_futures",
285
+ # "name" => "Bitget Futures"
286
+ # }, {
287
+ # "id" => "bithash",
288
+ # "name" => "BitHash"
289
+ # }, {
290
+ # "id" => "bitholic",
291
+ # "name" => "Bithumb Singapore"
292
+ # }, {
293
+ # "id" => "bithumb",
294
+ # "name" => "Bithumb"
295
+ # }, {
296
+ # "id" => "bithumb_futures",
297
+ # "name" => "Bithumb (Futures)"
298
+ # }, {
299
+ # "id" => "bithumb_global",
300
+ # "name" => "Bithumb Global"
301
+ # }, {
302
+ # "id" => "bitinfi",
303
+ # "name" => "Bitinfi"
304
+ # }, {
305
+ # "id" => "bitkonan",
306
+ # "name" => "BitKonan"
307
+ # }, {
308
+ # "id" => "bitkub",
309
+ # "name" => "Bitkub"
310
+ # }, {
311
+ # "id" => "bitmart",
312
+ # "name" => "BitMart"
313
+ # }, {
314
+ # "id" => "bitmax",
315
+ # "name" => "AscendEX (BitMax)"
316
+ # }, {
317
+ # "id" => "bitmax_futures",
318
+ # "name" => "AscendEX (BitMax) (Futures)"
319
+ # }, {
320
+ # "id" => "bitmesh",
321
+ # "name" => "Bitmesh"
322
+ # }, {
323
+ # "id" => "bitmex",
324
+ # "name" => "BitMEX"
325
+ # }, {
326
+ # "id" => "bitoffer",
327
+ # "name" => "Bitoffer"
328
+ # }, {
329
+ # "id" => "bitonbay",
330
+ # "name" => "BitOnBay"
331
+ # }, {
332
+ # "id" => "bitopro",
333
+ # "name" => "BitoPro"
334
+ # }, {
335
+ # "id" => "bitpanda",
336
+ # "name" => "Bitpanda Pro"
337
+ # }, {
338
+ # "id" => "bitrabbit",
339
+ # "name" => "BitRabbit"
340
+ # }, {
341
+ # "id" => "bitrue",
342
+ # "name" => "Bitrue"
343
+ # }, {
344
+ # "id" => "bits_blockchain",
345
+ # "name" => "Bits Blockchain"
346
+ # }, {
347
+ # "id" => "bitsdaq",
348
+ # "name" => "Bitsdaq"
349
+ # }, {
350
+ # "id" => "bitso",
351
+ # "name" => "Bitso"
352
+ # }, {
353
+ # "id" => "bitsonic",
354
+ # "name" => "Bitsonic"
355
+ # }, {
356
+ # "id" => "bitstamp",
357
+ # "name" => "Bitstamp"
358
+ # }, {
359
+ # "id" => "bitsten",
360
+ # "name" => "Bitsten"
361
+ # }, {
362
+ # "id" => "bitstorage",
363
+ # "name" => "BitStorage"
364
+ # }, {
365
+ # "id" => "bittrex",
366
+ # "name" => "Bittrex"
367
+ # }, {
368
+ # "id" => "bitubu",
369
+ # "name" => "Bitubu Exchange"
370
+ # }, {
371
+ # "id" => "bit_z",
372
+ # "name" => "BitZ"
373
+ # }, {
374
+ # "id" => "bitz_futures",
375
+ # "name" => "BitZ (Futures)"
376
+ # }, {
377
+ # "id" => "bkex",
378
+ # "name" => "BKEX"
379
+ # }, {
380
+ # "id" => "bleutrade",
381
+ # "name" => "bleutrade"
382
+ # }, {
383
+ # "id" => "blockchain_com",
384
+ # "name" => "Blockchain.com"
385
+ # }, {
386
+ # "id" => "blockonix",
387
+ # "name" => "Blockonix"
388
+ # }, {
389
+ # "id" => "boa",
390
+ # "name" => "BOA Exchange"
391
+ # }, {
392
+ # "id" => "braziliex",
393
+ # "name" => "Braziliex"
394
+ # }, {
395
+ # "id" => "bscswap",
396
+ # "name" => "BSCswap"
397
+ # }, {
398
+ # "id" => "btc_alpha",
399
+ # "name" => "BTC-Alpha"
400
+ # }, {
401
+ # "id" => "btcbox",
402
+ # "name" => "BTCBOX"
403
+ # }, {
404
+ # "id" => "btcc",
405
+ # "name" => "BTCC"
406
+ # }, {
407
+ # "id" => "btc_exchange",
408
+ # "name" => "Btc Exchange"
409
+ # }, {
410
+ # "id" => "btcmarkets",
411
+ # "name" => "BTCMarkets"
412
+ # }, {
413
+ # "id" => "btcmex",
414
+ # "name" => "BTCMEX"
415
+ # }, {
416
+ # "id" => "btcnext",
417
+ # "name" => "BTCNEXT"
418
+ # }, {
419
+ # "id" => "btcsquare",
420
+ # "name" => "BTCSquare"
421
+ # }, {
422
+ # "id" => "btc_trade_ua",
423
+ # "name" => "BTC Trade UA"
424
+ # }, {
425
+ # "id" => "btcturk",
426
+ # "name" => "BtcTurk PRO"
427
+ # }, {
428
+ # "id" => "btse",
429
+ # "name" => "BTSE"
430
+ # }, {
431
+ # "id" => "btse_futures",
432
+ # "name" => "BTSE (Futures)"
433
+ # }, {
434
+ # "id" => "burgerswap",
435
+ # "name" => "BurgerSwap"
436
+ # }, {
437
+ # "id" => "buyucoin",
438
+ # "name" => "BuyUcoin"
439
+ # }, {
440
+ # "id" => "bvnex",
441
+ # "name" => "Bvnex"
442
+ # }, {
443
+ # "id" => "bw",
444
+ # "name" => "BW.com"
445
+ # }, {
446
+ # "id" => "bybit",
447
+ # "name" => "Bybit"
448
+ # }, {
449
+ # "id" => "c2cx",
450
+ # "name" => "C2CX"
451
+ # }, {
452
+ # "id" => "catex",
453
+ # "name" => "Catex"
454
+ # }, {
455
+ # "id" => "cbx",
456
+ # "name" => "CBX"
457
+ # }, {
458
+ # "id" => "ccex",
459
+ # "name" => "C-CEX"
460
+ # }, {
461
+ # "id" => "cex",
462
+ # "name" => "CEX.IO"
463
+ # }, {
464
+ # "id" => "chainex",
465
+ # "name" => "ChainEX"
466
+ # }, {
467
+ # "id" => "changelly",
468
+ # "name" => "Changelly PRO"
469
+ # }, {
470
+ # "id" => "chiliz",
471
+ # "name" => "Chiliz"
472
+ # }, {
473
+ # "id" => "citex",
474
+ # "name" => "CITEX"
475
+ # }, {
476
+ # "id" => "cme_futures",
477
+ # "name" => "CME Bitcoin Futures"
478
+ # }, {
479
+ # "id" => "coinasset",
480
+ # "name" => "CoinAsset"
481
+ # }, {
482
+ # "id" => "coinbene",
483
+ # "name" => "CoinBene"
484
+ # }, {
485
+ # "id" => "coinbig",
486
+ # "name" => "COINBIG"
487
+ # }, {
488
+ # "id" => "coinbit",
489
+ # "name" => "Coinbit"
490
+ # }, {
491
+ # "id" => "coincheck",
492
+ # "name" => "Coincheck"
493
+ # }, {
494
+ # "id" => "coindcx",
495
+ # "name" => "CoinDCX"
496
+ # }, {
497
+ # "id" => "coindeal",
498
+ # "name" => "Coindeal"
499
+ # }, {
500
+ # "id" => "coindirect",
501
+ # "name" => "CoinDirect"
502
+ # }, {
503
+ # "id" => "coineal",
504
+ # "name" => "Coineal"
505
+ # }, {
506
+ # "id" => "coin_egg",
507
+ # "name" => "CoinEgg"
508
+ # }, {
509
+ # "id" => "coinex",
510
+ # "name" => "CoinEx"
511
+ # }, {
512
+ # "id" => "coinfalcon",
513
+ # "name" => "Coinfalcon"
514
+ # }, {
515
+ # "id" => "coinfield",
516
+ # "name" => "Coinfield"
517
+ # }, {
518
+ # "id" => "coinflex",
519
+ # "name" => "CoinFLEX"
520
+ # }, {
521
+ # "id" => "coinflex_futures",
522
+ # "name" => "CoinFLEX (Futures)"
523
+ # }, {
524
+ # "id" => "coinfloor",
525
+ # "name" => "Coinfloor"
526
+ # }, {
527
+ # "id" => "coingi",
528
+ # "name" => "Coingi"
529
+ # }, {
530
+ # "id" => "coinhe",
531
+ # "name" => "CoinHe"
532
+ # }, {
533
+ # "id" => "coinhub",
534
+ # "name" => "Coinhub"
535
+ # }, {
536
+ # "id" => "coinjar",
537
+ # "name" => "CoinJar Exchange"
538
+ # }, {
539
+ # "id" => "coinlim",
540
+ # "name" => "Coinlim"
541
+ # }, {
542
+ # "id" => "coinlist",
543
+ # "name" => "Coinlist"
544
+ # }, {
545
+ # "id" => "coinmargin",
546
+ # "name" => "CoinMargin"
547
+ # }, {
548
+ # "id" => "coin_metro",
549
+ # "name" => "CoinMetro"
550
+ # }, {
551
+ # "id" => "coinone",
552
+ # "name" => "Coinone"
553
+ # }, {
554
+ # "id" => "coinpark",
555
+ # "name" => "Coinpark"
556
+ # }, {
557
+ # "id" => "coinplace",
558
+ # "name" => "Coinplace"
559
+ # }, {
560
+ # "id" => "coinsbank",
561
+ # "name" => "Coinsbank"
562
+ # }, {
563
+ # "id" => "coinsbit",
564
+ # "name" => "Coinsbit"
565
+ # }, {
566
+ # "id" => "coinsuper",
567
+ # "name" => "Coinsuper"
568
+ # }, {
569
+ # "id" => "cointiger",
570
+ # "name" => "CoinTiger"
571
+ # }, {
572
+ # "id" => "cointiger_futures",
573
+ # "name" => "CoinTiger (Futures)"
574
+ # }, {
575
+ # "id" => "coinxpro",
576
+ # "name" => "COINX.PRO"
577
+ # }, {
578
+ # "id" => "coinzo",
579
+ # "name" => "Coinzo"
580
+ # }, {
581
+ # "id" => "coinzoom",
582
+ # "name" => "Coinzoom"
583
+ # }, {
584
+ # "id" => "comethswap",
585
+ # "name" => "ComethSwap"
586
+ # }, {
587
+ # "id" => "compound_finance",
588
+ # "name" => "Compound Finance"
589
+ # }, {
590
+ # "id" => "c_patex",
591
+ # "name" => "C-Patex"
592
+ # }, {
593
+ # "id" => "cpdax",
594
+ # "name" => "CPDAX"
595
+ # }, {
596
+ # "id" => "crex24",
597
+ # "name" => "CREX24"
598
+ # }, {
599
+ # "id" => "crxzone",
600
+ # "name" => "CRXzone"
601
+ # }, {
602
+ # "id" => "cryptaldash",
603
+ # "name" => "CryptalDash"
604
+ # }, {
605
+ # "id" => "cryptex",
606
+ # "name" => "Cryptex"
607
+ # }, {
608
+ # "id" => "cryptlocex",
609
+ # "name" => "Cryptlocex"
610
+ # }, {
611
+ # "id" => "crypto_com",
612
+ # "name" => "Crypto.com"
613
+ # }, {
614
+ # "id" => "crypto_com_futures",
615
+ # "name" => "Crypto.com (Futures)"
616
+ # }, {
617
+ # "id" => "cryptology",
618
+ # "name" => "Cryptology"
619
+ # }, {
620
+ # "id" => "crytrex",
621
+ # "name" => "CryTrEx"
622
+ # }, {
623
+ # "id" => "c_trade",
624
+ # "name" => "C-Trade"
625
+ # }, {
626
+ # "id" => "currency",
627
+ # "name" => "Currency.com"
628
+ # }, {
629
+ # "id" => "curve",
630
+ # "name" => "Curve Finance"
631
+ # }, {
632
+ # "id" => "cybex",
633
+ # "name" => "Cybex DEX"
634
+ # }, {
635
+ # "id" => "daofi",
636
+ # "name" => "DAOfi"
637
+ # }, {
638
+ # "id" => "darb_finance",
639
+ # "name" => "Darb Finance"
640
+ # }, {
641
+ # "id" => "daybit",
642
+ # "name" => "Daybit"
643
+ # }, {
644
+ # "id" => "dcoin",
645
+ # "name" => "Dcoin"
646
+ # }, {
647
+ # "id" => "ddex",
648
+ # "name" => "DDEX"
649
+ # }, {
650
+ # "id" => "decoin",
651
+ # "name" => "Decoin"
652
+ # }, {
653
+ # "id" => "defi_swap",
654
+ # "name" => "DeFi Swap"
655
+ # }, {
656
+ # "id" => "delta_futures",
657
+ # "name" => "Delta Exchange (Futures)"
658
+ # }, {
659
+ # "id" => "delta_spot",
660
+ # "name" => "Delta Exchange"
661
+ # }, {
662
+ # "id" => "dem_exchange",
663
+ # "name" => "Demex"
664
+ # }, {
665
+ # "id" => "deribit",
666
+ # "name" => "Deribit"
667
+ # }, {
668
+ # "id" => "deversifi",
669
+ # "name" => "Deversifi "
670
+ # }, {
671
+ # "id" => "dex_blue",
672
+ # "name" => "dex.blue"
673
+ # }, {
674
+ # "id" => "dextrade",
675
+ # "name" => "Dex-Trade"
676
+ # }, {
677
+ # "id" => "digifinex",
678
+ # "name" => "Digifinex"
679
+ # }, {
680
+ # "id" => "dmm",
681
+ # "name" => "DMM"
682
+ # }, {
683
+ # "id" => "dobitrade",
684
+ # "name" => "Dobitrade"
685
+ # }, {
686
+ # "id" => "dodo",
687
+ # "name" => "DODO"
688
+ # }, {
689
+ # "id" => "dodo_bsc",
690
+ # "name" => "Dodo BSC"
691
+ # }, {
692
+ # "id" => "dolomite",
693
+ # "name" => "Dolomite"
694
+ # }, {
695
+ # "id" => "dove_wallet",
696
+ # "name" => "Dove Wallet"
697
+ # }, {
698
+ # "id" => "dragonex",
699
+ # "name" => "DragonEx"
700
+ # }, {
701
+ # "id" => "dsx",
702
+ # "name" => "DSX Global"
703
+ # }, {
704
+ # "id" => "duedex",
705
+ # "name" => "DueDEX"
706
+ # }, {
707
+ # "id" => "dydx",
708
+ # "name" => "dYdX"
709
+ # }, {
710
+ # "id" => "dydx_perpetual",
711
+ # "name" => "dYdX Perpetual"
712
+ # }, {
713
+ # "id" => "dydx_perpetual_l1",
714
+ # "name" => "dYdX Perpetual (L1)"
715
+ # }, {
716
+ # "id" => "ecxx",
717
+ # "name" => "Ecxx"
718
+ # }, {
719
+ # "id" => "elitex",
720
+ # "name" => "Elitex"
721
+ # }, {
722
+ # "id" => "emirex",
723
+ # "name" => "Emirex"
724
+ # }, {
725
+ # "id" => "equos",
726
+ # "name" => "Equos.io"
727
+ # }, {
728
+ # "id" => "equos_perpetual",
729
+ # "name" => "Equos.io (Perpetual)"
730
+ # }, {
731
+ # "id" => "eterbase",
732
+ # "name" => "Eterbase"
733
+ # }, {
734
+ # "id" => "etherflyer",
735
+ # "name" => "EtherFlyer"
736
+ # }, {
737
+ # "id" => "ethex",
738
+ # "name" => "Ethex"
739
+ # }, {
740
+ # "id" => "etorox",
741
+ # "name" => "eToroX"
742
+ # }, {
743
+ # "id" => "everbloom",
744
+ # "name" => "Everbloom"
745
+ # }, {
746
+ # "id" => "exmarkets",
747
+ # "name" => "ExMarkets"
748
+ # }, {
749
+ # "id" => "exmo",
750
+ # "name" => "EXMO"
751
+ # }, {
752
+ # "id" => "exnce",
753
+ # "name" => "EXNCE"
754
+ # }, {
755
+ # "id" => "exrates",
756
+ # "name" => "Exrates"
757
+ # }, {
758
+ # "id" => "exx",
759
+ # "name" => "EXX"
760
+ # }, {
761
+ # "id" => "fatbtc",
762
+ # "name" => "FatBTC"
763
+ # }, {
764
+ # "id" => "fex",
765
+ # "name" => "FEX"
766
+ # }, {
767
+ # "id" => "financex",
768
+ # "name" => "FinanceX"
769
+ # }, {
770
+ # "id" => "finexbox",
771
+ # "name" => "FinexBox"
772
+ # }, {
773
+ # "id" => "floatsv",
774
+ # "name" => "Float SV"
775
+ # }, {
776
+ # "id" => "flybit",
777
+ # "name" => "Flybit"
778
+ # }, {
779
+ # "id" => "forkdelta",
780
+ # "name" => "ForkDelta"
781
+ # }, {
782
+ # "id" => "freiexchange",
783
+ # "name" => "Freiexchange"
784
+ # }, {
785
+ # "id" => "ftx",
786
+ # "name" => "FTX (Derivatives)"
787
+ # }, {
788
+ # "id" => "ftx_spot",
789
+ # "name" => "FTX"
790
+ # }, {
791
+ # "id" => "ftx_us",
792
+ # "name" => "FTX.US"
793
+ # }, {
794
+ # "id" => "futureswap",
795
+ # "name" => "Futureswap"
796
+ # }, {
797
+ # "id" => "gate",
798
+ # "name" => "Gate.io"
799
+ # }, {
800
+ # "id" => "gate_futures",
801
+ # "name" => "Gate.io (Futures)"
802
+ # }, {
803
+ # "id" => "gbx",
804
+ # "name" => "Global Blockchain Exchange"
805
+ # }, {
806
+ # "id" => "gdac",
807
+ # "name" => "GDAC"
808
+ # }, {
809
+ # "id" => "gdax",
810
+ # "name" => "Coinbase Pro"
811
+ # }, {
812
+ # "id" => "gemini",
813
+ # "name" => "Gemini"
814
+ # }, {
815
+ # "id" => "getbtc",
816
+ # "name" => "GetBTC"
817
+ # }, {
818
+ # "id" => "gmo_japan",
819
+ # "name" => "GMO Japan"
820
+ # }, {
821
+ # "id" => "gmo_japan_futures",
822
+ # "name" => "GMO Japan (Futures)"
823
+ # }, {
824
+ # "id" => "gobaba",
825
+ # "name" => "Gobaba"
826
+ # }, {
827
+ # "id" => "goku",
828
+ # "name" => "GokuMarket"
829
+ # }, {
830
+ # "id" => "gopax",
831
+ # "name" => "GoPax"
832
+ # }, {
833
+ # "id" => "graviex",
834
+ # "name" => "Graviex"
835
+ # }, {
836
+ # "id" => "hanbitco",
837
+ # "name" => "Hanbitco"
838
+ # }, {
839
+ # "id" => "hbtc",
840
+ # "name" => "BHEX"
841
+ # }, {
842
+ # "id" => "hbtc_futures",
843
+ # "name" => "HBTC (Futures)"
844
+ # }, {
845
+ # "id" => "hb_top",
846
+ # "name" => "Hb.top"
847
+ # }, {
848
+ # "id" => "hitbtc",
849
+ # "name" => "HitBTC"
850
+ # }, {
851
+ # "id" => "honeyswap",
852
+ # "name" => "Honeyswap"
853
+ # }, {
854
+ # "id" => "hoo",
855
+ # "name" => "Hoo.com"
856
+ # }, {
857
+ # "id" => "hopex",
858
+ # "name" => "Hopex"
859
+ # }, {
860
+ # "id" => "hotbit",
861
+ # "name" => "Hotbit"
862
+ # }, {
863
+ # "id" => "hpx",
864
+ # "name" => "HPX"
865
+ # }, {
866
+ # "id" => "hubi",
867
+ # "name" => "Hubi"
868
+ # }, {
869
+ # "id" => "huobi",
870
+ # "name" => "Huobi Global"
871
+ # }, {
872
+ # "id" => "huobi_dm",
873
+ # "name" => "Huobi Futures"
874
+ # }, {
875
+ # "id" => "huobi_id",
876
+ # "name" => "Huobi Indonesia"
877
+ # }, {
878
+ # "id" => "huobi_japan",
879
+ # "name" => "Huobi Japan"
880
+ # }, {
881
+ # "id" => "huobi_korea",
882
+ # "name" => "Huobi Korea"
883
+ # }, {
884
+ # "id" => "huobi_thailand",
885
+ # "name" => "Huobi Thailand"
886
+ # }, {
887
+ # "id" => "ice3x",
888
+ # "name" => "Ice3x"
889
+ # }, {
890
+ # "id" => "idcm",
891
+ # "name" => "IDCM"
892
+ # }, {
893
+ # "id" => "idex",
894
+ # "name" => "Idex"
895
+ # }, {
896
+ # "id" => "incorex",
897
+ # "name" => "IncoreX"
898
+ # }, {
899
+ # "id" => "independent_reserve",
900
+ # "name" => "Independent Reserve"
901
+ # }, {
902
+ # "id" => "indodax",
903
+ # "name" => "Indodax"
904
+ # }, {
905
+ # "id" => "infinity_coin",
906
+ # "name" => "Infinity Coin"
907
+ # }, {
908
+ # "id" => "instantbitex",
909
+ # "name" => "Instant Bitex"
910
+ # }, {
911
+ # "id" => "iqfinex",
912
+ # "name" => "IQFinex"
913
+ # }, {
914
+ # "id" => "itbit",
915
+ # "name" => "itBit"
916
+ # }, {
917
+ # "id" => "jex",
918
+ # "name" => "Binance JEX"
919
+ # }, {
920
+ # "id" => "jex_futures",
921
+ # "name" => "Binance JEX (Futures)"
922
+ # }, {
923
+ # "id" => "joyso",
924
+ # "name" => "Joyso"
925
+ # }, {
926
+ # "id" => "julswap",
927
+ # "name" => "Julswap"
928
+ # }, {
929
+ # "id" => "justswap",
930
+ # "name" => "JustSwap"
931
+ # }, {
932
+ # "id" => "kickex",
933
+ # "name" => "KickEX"
934
+ # }, {
935
+ # "id" => "kkcoin",
936
+ # "name" => "KKCoin"
937
+ # }, {
938
+ # "id" => "k_kex",
939
+ # "name" => "KKEX"
940
+ # }, {
941
+ # "id" => "korbit",
942
+ # "name" => "Korbit"
943
+ # }, {
944
+ # "id" => "kraken",
945
+ # "name" => "Kraken"
946
+ # }, {
947
+ # "id" => "kraken_futures",
948
+ # "name" => "Kraken (Futures)"
949
+ # }, {
950
+ # "id" => "kucoin",
951
+ # "name" => "KuCoin"
952
+ # }, {
953
+ # "id" => "kumex",
954
+ # "name" => "KuCoin Futures"
955
+ # }, {
956
+ # "id" => "kuna",
957
+ # "name" => "Kuna Exchange"
958
+ # }, {
959
+ # "id" => "kyber_network",
960
+ # "name" => "Kyber Network"
961
+ # }, {
962
+ # "id" => "lakebtc",
963
+ # "name" => "LakeBTC"
964
+ # }, {
965
+ # "id" => "latoken",
966
+ # "name" => "LATOKEN"
967
+ # }, {
968
+ # "id" => "lbank",
969
+ # "name" => "LBank"
970
+ # }, {
971
+ # "id" => "lcx",
972
+ # "name" => "LCX Exchange"
973
+ # }, {
974
+ # "id" => "leverj",
975
+ # "name" => "Leverj"
976
+ # }, {
977
+ # "id" => "linkswap",
978
+ # "name" => "Linkswap"
979
+ # }, {
980
+ # "id" => "liquid_derivatives",
981
+ # "name" => "Liquid Perpetuals"
982
+ # }, {
983
+ # "id" => "localtrade",
984
+ # "name" => "LocalTrade"
985
+ # }, {
986
+ # "id" => "loopring",
987
+ # "name" => "Loopring"
988
+ # }, {
989
+ # "id" => "loopring_amm",
990
+ # "name" => "Loopring AMM"
991
+ # }, {
992
+ # "id" => "luaswap",
993
+ # "name" => "Luaswap"
994
+ # }, {
995
+ # "id" => "lucent",
996
+ # "name" => "Lucent"
997
+ # }, {
998
+ # "id" => "lukki",
999
+ # "name" => "Lukki"
1000
+ # }, {
1001
+ # "id" => "luno",
1002
+ # "name" => "Luno"
1003
+ # }, {
1004
+ # "id" => "lykke",
1005
+ # "name" => "Lykke"
1006
+ # }, {
1007
+ # "id" => "max_maicoin",
1008
+ # "name" => "Max Maicoin"
1009
+ # }, {
1010
+ # "id" => "mcdex",
1011
+ # "name" => "MCDEX"
1012
+ # }, {
1013
+ # "id" => "mdex",
1014
+ # "name" => "Mdex"
1015
+ # }, {
1016
+ # "id" => "mercado_bitcoin",
1017
+ # "name" => "Mercado Bitcoin"
1018
+ # }, {
1019
+ # "id" => "mercatox",
1020
+ # "name" => "Mercatox"
1021
+ # }, {
1022
+ # "id" => "mercuriex",
1023
+ # "name" => "MercuriEx"
1024
+ # }, {
1025
+ # "id" => "mesa",
1026
+ # "name" => " Gnosis Protocol"
1027
+ # }, {
1028
+ # "id" => "mirror",
1029
+ # "name" => "Terraswap"
1030
+ # }, {
1031
+ # "id" => "mooniswap",
1032
+ # "name" => "Mooniswap"
1033
+ # }, {
1034
+ # "id" => "multi",
1035
+ # "name" => "Multi.io"
1036
+ # }, {
1037
+ # "id" => "mxc",
1038
+ # "name" => "MXC"
1039
+ # }, {
1040
+ # "id" => "mxc_futures",
1041
+ # "name" => "MXC (Futures)"
1042
+ # }, {
1043
+ # "id" => "mycoinstory",
1044
+ # "name" => "MyCoinStory"
1045
+ # }, {
1046
+ # "id" => "namebase",
1047
+ # "name" => "Namebase"
1048
+ # }, {
1049
+ # "id" => "nami_exchange",
1050
+ # "name" => "Nami.Exchange"
1051
+ # }, {
1052
+ # "id" => "nanu_exchange",
1053
+ # "name" => "Nanu Exchange"
1054
+ # }, {
1055
+ # "id" => "narkasa",
1056
+ # "name" => "Narkasa"
1057
+ # }, {
1058
+ # "id" => "nash",
1059
+ # "name" => "Nash"
1060
+ # }, {
1061
+ # "id" => "neblidex",
1062
+ # "name" => "Neblidex"
1063
+ # }, {
1064
+ # "id" => "negociecoins",
1065
+ # "name" => "Negociecoins"
1066
+ # }, {
1067
+ # "id" => "neraex",
1068
+ # "name" => "Neraex"
1069
+ # }, {
1070
+ # "id" => "newdex",
1071
+ # "name" => "Newdex"
1072
+ # }, {
1073
+ # "id" => "nexus_mutual",
1074
+ # "name" => "Nexus Mutual"
1075
+ # }, {
1076
+ # "id" => "nice_hash",
1077
+ # "name" => "NiceHash"
1078
+ # }, {
1079
+ # "id" => "niftex",
1080
+ # "name" => "Niftex"
1081
+ # }, {
1082
+ # "id" => "nlexch",
1083
+ # "name" => "NLexch"
1084
+ # }, {
1085
+ # "id" => "nominex",
1086
+ # "name" => "Nominex"
1087
+ # }, {
1088
+ # "id" => "novadax",
1089
+ # "name" => "NovaDAX"
1090
+ # }, {
1091
+ # "id" => "oasis_trade",
1092
+ # "name" => "OasisDEX"
1093
+ # }, {
1094
+ # "id" => "oceanex",
1095
+ # "name" => "Oceanex"
1096
+ # }, {
1097
+ # "id" => "okcoin",
1098
+ # "name" => "Okcoin"
1099
+ # }, {
1100
+ # "id" => "okex",
1101
+ # "name" => "OKEx"
1102
+ # }, {
1103
+ # "id" => "okex_swap",
1104
+ # "name" => "OKEx (Futures)"
1105
+ # }, {
1106
+ # "id" => "omgfin",
1107
+ # "name" => "Omgfin"
1108
+ # }, {
1109
+ # "id" => "omnitrade",
1110
+ # "name" => "OmniTrade"
1111
+ # }, {
1112
+ # "id" => "one_inch",
1113
+ # "name" => "1inch"
1114
+ # }, {
1115
+ # "id" => "one_inch_liquidity_protocol",
1116
+ # "name" => "1inch Liquidity Protocol"
1117
+ # }, {
1118
+ # "id" => "one_inch_liquidity_protocol_bsc",
1119
+ # "name" => "1inch Liquidity Protocol (BSC)"
1120
+ # }, {
1121
+ # "id" => "orderbook",
1122
+ # "name" => "Orderbook.io"
1123
+ # }, {
1124
+ # "id" => "otcbtc",
1125
+ # "name" => "OTCBTC"
1126
+ # }, {
1127
+ # "id" => "ovex",
1128
+ # "name" => "Ovex"
1129
+ # }, {
1130
+ # "id" => "p2pb2b",
1131
+ # "name" => "P2PB2B"
1132
+ # }, {
1133
+ # "id" => "pancakeswap",
1134
+ # "name" => "PancakeSwap (v2)"
1135
+ # }, {
1136
+ # "id" => "pancakeswap_others",
1137
+ # "name" => "Pancakeswap (Others)"
1138
+ # }, {
1139
+ # "id" => "pancakeswap_v1",
1140
+ # "name" => "PancakeSwap (v1)"
1141
+ # }, {
1142
+ # "id" => "pangolin",
1143
+ # "name" => "Pangolin"
1144
+ # }, {
1145
+ # "id" => "paraswap",
1146
+ # "name" => "Paraswap"
1147
+ # }, {
1148
+ # "id" => "paribu",
1149
+ # "name" => "Paribu"
1150
+ # }, {
1151
+ # "id" => "paroexchange",
1152
+ # "name" => "Paro Exchange"
1153
+ # }, {
1154
+ # "id" => "paymium",
1155
+ # "name" => "Paymium"
1156
+ # }, {
1157
+ # "id" => "perpetual_protocol",
1158
+ # "name" => "Perpetual Protocol"
1159
+ # }, {
1160
+ # "id" => "phemex",
1161
+ # "name" => "Phemex"
1162
+ # }, {
1163
+ # "id" => "phemex_futures",
1164
+ # "name" => "Phemex (Futures)"
1165
+ # }, {
1166
+ # "id" => "poloniex",
1167
+ # "name" => "Poloniex"
1168
+ # }, {
1169
+ # "id" => "poloniex_futures",
1170
+ # "name" => "Poloniex Futures"
1171
+ # }, {
1172
+ # "id" => "polyient_dex",
1173
+ # "name" => "Polyient Dex"
1174
+ # }, {
1175
+ # "id" => "prime_xbt",
1176
+ # "name" => "Prime XBT"
1177
+ # }, {
1178
+ # "id" => "probit",
1179
+ # "name" => "ProBit"
1180
+ # }, {
1181
+ # "id" => "qtrade",
1182
+ # "name" => "qTrade"
1183
+ # }, {
1184
+ # "id" => "quickswap",
1185
+ # "name" => "Quickswap"
1186
+ # }, {
1187
+ # "id" => "quoine",
1188
+ # "name" => "Liquid"
1189
+ # }, {
1190
+ # "id" => "radar_relay",
1191
+ # "name" => "Radar Relay"
1192
+ # }, {
1193
+ # "id" => "raydium",
1194
+ # "name" => "Raydium"
1195
+ # }, {
1196
+ # "id" => "resfinex",
1197
+ # "name" => "Resfinex"
1198
+ # }, {
1199
+ # "id" => "rfinex",
1200
+ # "name" => "Rfinex"
1201
+ # }, {
1202
+ # "id" => "safe_trade",
1203
+ # "name" => "SafeTrade"
1204
+ # }, {
1205
+ # "id" => "sakeswap",
1206
+ # "name" => "SakeSwap"
1207
+ # }, {
1208
+ # "id" => "sashimiswap",
1209
+ # "name" => "Sashimiswap"
1210
+ # }, {
1211
+ # "id" => "satoexchange",
1212
+ # "name" => "SatoExchange"
1213
+ # }, {
1214
+ # "id" => "saturn_network",
1215
+ # "name" => "Saturn Network"
1216
+ # }, {
1217
+ # "id" => "secondbtc",
1218
+ # "name" => "SecondBTC"
1219
+ # }, {
1220
+ # "id" => "secretswap",
1221
+ # "name" => "SecretSwap"
1222
+ # }, {
1223
+ # "id" => "serum_dex",
1224
+ # "name" => "Serum DEX"
1225
+ # }, {
1226
+ # "id" => "serumswap",
1227
+ # "name" => "SerumSwap"
1228
+ # }, {
1229
+ # "id" => "shortex",
1230
+ # "name" => "Shortex"
1231
+ # }, {
1232
+ # "id" => "simex",
1233
+ # "name" => "Simex"
1234
+ # }, {
1235
+ # "id" => "sinegy",
1236
+ # "name" => "SINEGY"
1237
+ # }, {
1238
+ # "id" => "sistemkoin",
1239
+ # "name" => "Sistemkoin"
1240
+ # }, {
1241
+ # "id" => "six_x",
1242
+ # "name" => "6x"
1243
+ # }, {
1244
+ # "id" => "south_xchange",
1245
+ # "name" => "SouthXchange"
1246
+ # }, {
1247
+ # "id" => "spiritswap",
1248
+ # "name" => "SpiritSwap"
1249
+ # }, {
1250
+ # "id" => "spookyswap",
1251
+ # "name" => "Spookyswap"
1252
+ # }, {
1253
+ # "id" => "stake_cube",
1254
+ # "name" => "StakeCube Exchange"
1255
+ # }, {
1256
+ # "id" => "stellar_term",
1257
+ # "name" => "StellarTerm"
1258
+ # }, {
1259
+ # "id" => "stocks_exchange",
1260
+ # "name" => "STEX"
1261
+ # }, {
1262
+ # "id" => "stormgain",
1263
+ # "name" => "Stormgain"
1264
+ # }, {
1265
+ # "id" => "stormgain_futures",
1266
+ # "name" => "Stormgain Futures"
1267
+ # }, {
1268
+ # "id" => "sushiswap",
1269
+ # "name" => "Sushiswap"
1270
+ # }, {
1271
+ # "id" => "sushiswap_polygon",
1272
+ # "name" => "Sushiswap (Polygon POS)"
1273
+ # }, {
1274
+ # "id" => "swapr",
1275
+ # "name" => "Swapr"
1276
+ # }, {
1277
+ # "id" => "swiftex",
1278
+ # "name" => "Swiftex"
1279
+ # }, {
1280
+ # "id" => "switcheo",
1281
+ # "name" => "Switcheo"
1282
+ # }, {
1283
+ # "id" => "swop_fi",
1284
+ # "name" => "Swop.Fi"
1285
+ # }, {
1286
+ # "id" => "synthetix",
1287
+ # "name" => "Synthetix Exchange"
1288
+ # }, {
1289
+ # "id" => "tdax",
1290
+ # "name" => "Satang Pro"
1291
+ # }, {
1292
+ # "id" => "therocktrading",
1293
+ # "name" => "TheRockTrading"
1294
+ # }, {
1295
+ # "id" => "thodex",
1296
+ # "name" => "Thodex"
1297
+ # }, {
1298
+ # "id" => "tidebit",
1299
+ # "name" => "Tidebit"
1300
+ # }, {
1301
+ # "id" => "tidex",
1302
+ # "name" => "Tidex"
1303
+ # }, {
1304
+ # "id" => "tokenize",
1305
+ # "name" => "Tokenize"
1306
+ # }, {
1307
+ # "id" => "tokenlon",
1308
+ # "name" => "Tokenlon"
1309
+ # }, {
1310
+ # "id" => "tokenomy",
1311
+ # "name" => "Tokenomy"
1312
+ # }, {
1313
+ # "id" => "token_sets",
1314
+ # "name" => "TokenSets"
1315
+ # }, {
1316
+ # "id" => "tokens_net",
1317
+ # "name" => "TokensNet"
1318
+ # }, {
1319
+ # "id" => "toko_crypto",
1320
+ # "name" => "TokoCrypto"
1321
+ # }, {
1322
+ # "id" => "tokok",
1323
+ # "name" => "TOKOK"
1324
+ # }, {
1325
+ # "id" => "tokpie",
1326
+ # "name" => "Tokpie"
1327
+ # }, {
1328
+ # "id" => "tomodex",
1329
+ # "name" => "TomoDEX"
1330
+ # }, {
1331
+ # "id" => "topbtc",
1332
+ # "name" => "TopBTC"
1333
+ # }, {
1334
+ # "id" => "trade_ogre",
1335
+ # "name" => "TradeOgre"
1336
+ # }, {
1337
+ # "id" => "tron_trade",
1338
+ # "name" => "TronTrade"
1339
+ # }, {
1340
+ # "id" => "trx_market",
1341
+ # "name" => "PoloniDEX"
1342
+ # }, {
1343
+ # "id" => "txbit",
1344
+ # "name" => "Txbit"
1345
+ # }, {
1346
+ # "id" => "ubeswap",
1347
+ # "name" => "Ubeswap"
1348
+ # }, {
1349
+ # "id" => "unicly",
1350
+ # "name" => "Unicly"
1351
+ # }, {
1352
+ # "id" => "uniswap",
1353
+ # "name" => "Uniswap (v3)"
1354
+ # }, {
1355
+ # "id" => "uniswap_v1",
1356
+ # "name" => "Uniswap (v1)"
1357
+ # }, {
1358
+ # "id" => "uniswap_v2",
1359
+ # "name" => "Uniswap (v2)"
1360
+ # }, {
1361
+ # "id" => "unnamed",
1362
+ # "name" => "Unnamed"
1363
+ # }, {
1364
+ # "id" => "upbit",
1365
+ # "name" => "Upbit"
1366
+ # }, {
1367
+ # "id" => "upbit_indonesia",
1368
+ # "name" => "Upbit Indonesia "
1369
+ # }, {
1370
+ # "id" => "value_liquid",
1371
+ # "name" => "Value Liquid"
1372
+ # }, {
1373
+ # "id" => "value_liquid_bsc",
1374
+ # "name" => "vSwap BSC"
1375
+ # }, {
1376
+ # "id" => "vb",
1377
+ # "name" => "VB"
1378
+ # }, {
1379
+ # "id" => "vcc",
1380
+ # "name" => "VCC Exchange"
1381
+ # }, {
1382
+ # "id" => "vebitcoin",
1383
+ # "name" => "Vebitcoin"
1384
+ # }, {
1385
+ # "id" => "velic",
1386
+ # "name" => "Velic"
1387
+ # }, {
1388
+ # "id" => "vindax",
1389
+ # "name" => "Vindax"
1390
+ # }, {
1391
+ # "id" => "vinex",
1392
+ # "name" => "Vinex"
1393
+ # }, {
1394
+ # "id" => "viperswap",
1395
+ # "name" => "ViperSwap"
1396
+ # }, {
1397
+ # "id" => "virgox",
1398
+ # "name" => "Virgox"
1399
+ # }, {
1400
+ # "id" => "vitex",
1401
+ # "name" => "ViteX"
1402
+ # }, {
1403
+ # "id" => "wault_swap",
1404
+ # "name" => "WaultSwap"
1405
+ # }, {
1406
+ # "id" => "waves",
1407
+ # "name" => "Waves.Exchange"
1408
+ # }, {
1409
+ # "id" => "wazirx",
1410
+ # "name" => "WazirX"
1411
+ # }, {
1412
+ # "id" => "whale_ex",
1413
+ # "name" => "WhaleEx"
1414
+ # }, {
1415
+ # "id" => "whitebit",
1416
+ # "name" => "WhiteBIT"
1417
+ # }, {
1418
+ # "id" => "xcoex",
1419
+ # "name" => "XCOEX"
1420
+ # }, {
1421
+ # "id" => "xfutures",
1422
+ # "name" => "xFutures"
1423
+ # }, {
1424
+ # "id" => "xt",
1425
+ # "name" => "XT.COM"
1426
+ # }, {
1427
+ # "id" => "yobit",
1428
+ # "name" => "YoBit"
1429
+ # }, {
1430
+ # "id" => "yunex",
1431
+ # "name" => "Yunex.io"
1432
+ # }, {
1433
+ # "id" => "zaif",
1434
+ # "name" => "Zaif"
1435
+ # }, {
1436
+ # "id" => "zb",
1437
+ # "name" => "ZB"
1438
+ # }, {
1439
+ # "id" => "zbg",
1440
+ # "name" => "ZBG"
1441
+ # }, {
1442
+ # "id" => "zbg_futures",
1443
+ # "name" => "ZBG Futures"
1444
+ # }, {
1445
+ # "id" => "zbx",
1446
+ # "name" => "ZBX"
1447
+ # }, {
1448
+ # "id" => "zebitex",
1449
+ # "name" => "Zebitex"
1450
+ # }, {
1451
+ # "id" => "zebpay",
1452
+ # "name" => "ZebPay"
1453
+ # }, {
1454
+ # "id" => "zero_ex",
1455
+ # "name" => "0x Protocol"
1456
+ # }, {
1457
+ # "id" => "zero_exchange",
1458
+ # "name" => "Zero Exchange"
1459
+ # }, {
1460
+ # "id" => "zg",
1461
+ # "name" => "ZG.com"
1462
+ # }, {
1463
+ # "id" => "zgtop",
1464
+ # "name" => "ZG.TOP"
1465
+ # }, {
1466
+ # "id" => "zilswap",
1467
+ # "name" => "Zilswap"
1468
+ # }, {
1469
+ # "id" => "zipmex",
1470
+ # "name" => "Zipmex"
1471
+ # }, {
1472
+ # "id" => "zkswap",
1473
+ # "name" => "ZKSwap"
1474
+ # }]
1475
+ def get_exchange_ids
1476
+ get 'exchanges/list'
1477
+ end
1478
+
1479
+ # Fetches coin tickers from a specific exchange.
1480
+ #
1481
+ # @param id [String] the exchange id to fetch.
1482
+ # @option options [String] :coin_ids comma-separated list of tickers to fetch from the given exchange id (e.g. 'bitcoin, eth, litecoin').
1483
+ # @option options [String] :include_exchange_logo includes the exchange's logo.
1484
+ # @option options [Integer] :page sets the page for results.
1485
+ # @option options [String] :order ('trust_score_desc') sets the sort order for results. Valid values: trust_score_desc', 'trust_score_asc', 'volume_desc.
1486
+ # @option options [Boolean] :depth (false) displays orderbook depth (2%).
1487
+ #
1488
+ # @return [Hash] the exchange name and tickers as provided or all tickers if coin_ids is not provided.
1489
+ #
1490
+ # @example Get Bitcoin tickers from Binance.
1491
+ # client.get_exchange_tickers(id: 'binance', options: { coin_ids: 'bitcoin' })
1492
+ # @example Response object
1493
+ # {
1494
+ # "name" => "Binance", "tickers" => [{
1495
+ # "base" => "BTC",
1496
+ # "target" => "USDT",
1497
+ # "market" => {
1498
+ # "name" => "Binance", "identifier" => "binance", "has_trading_incentive" => false
1499
+ # },
1500
+ # "last" => 48890.78,
1501
+ # "volume" => 86837.96789156958,
1502
+ # "converted_last" => {
1503
+ # "btc" => 0.99871776, "eth" => 12.706618, "usd" => 48867
1504
+ # },
1505
+ # "converted_volume" => {
1506
+ # "btc" => 86727, "eth" => 1103417, "usd" => 4243490314
1507
+ # },
1508
+ # "trust_score" => "green",
1509
+ # "bid_ask_spread_percentage" => 0.01002,
1510
+ # "timestamp" => "2021-05-16T07:37:00+00:00",
1511
+ # "last_traded_at" => "2021-05-16T07:37:00+00:00",
1512
+ # "last_fetch_at" => "2021-05-16T07:37:00+00:00",
1513
+ # "is_anomaly" => false,
1514
+ # "is_stale" => false,
1515
+ # "trade_url" => "https://www.binance.com/en/trade/BTC_USDT?ref=37754157",
1516
+ # "token_info_url" => nil,
1517
+ # "coin_id" => "bitcoin",
1518
+ # "target_coin_id" => "tether"
1519
+ # }, {
1520
+ # "base" => "BTC",
1521
+ # "target" => "BUSD",
1522
+ # "market" => {
1523
+ # "name" => "Binance", "identifier" => "binance", "has_trading_incentive" => false
1524
+ # },
1525
+ # "last" => 48929.1,
1526
+ # "volume" => 18176.952406055105,
1527
+ # "converted_last" => {
1528
+ # "btc" => 0.9991652, "eth" => 12.710228, "usd" => 48862
1529
+ # },
1530
+ # "converted_volume" => {
1531
+ # "btc" => 18162, "eth" => 231033, "usd" => 888164944
1532
+ # },
1533
+ # "trust_score" => "green",
1534
+ # "bid_ask_spread_percentage" => 0.01002,
1535
+ # "timestamp" => "2021-05-16T07:43:46+00:00",
1536
+ # "last_traded_at" => "2021-05-16T07:43:46+00:00",
1537
+ # "last_fetch_at" => "2021-05-16T07:43:46+00:00",
1538
+ # "is_anomaly" => false,
1539
+ # "is_stale" => false,
1540
+ # "trade_url" => "https://www.binance.com/en/trade/BTC_BUSD?ref=37754157",
1541
+ # "token_info_url" => nil,
1542
+ # "coin_id" => "bitcoin",
1543
+ # "target_coin_id" => "binance-usd"
1544
+ # }]
1545
+ # }
1546
+ def get_exchange_tickers(id:, options: {})
1547
+ get "exchanges/#{id}/tickers", { options: options }
1548
+ end
1549
+
1550
+ # Fetches news,announcments, and updates from a specific exchange.
1551
+ #
1552
+ # @param id [String] the exchange id to fetch.
1553
+ # @option options [Integer] :per_page (100) sets the number of results to return per page.
1554
+ # @option options [Integer] :page sets the page for results.
1555
+ #
1556
+ # @return [Hash] the status update data for the given exchange.
1557
+ #
1558
+ # @example Get the last 3 status updates from Binance.
1559
+ # client.get_exchange_status_updates(id: 'binance', options: { per_page: 1 })
1560
+ # @example Response object
1561
+ # {
1562
+ # "status_updates" => [{
1563
+ # "description" => "Juventus and Paris Saint-Germain Fan Tokens on Binance Launchpool! \r\n\r\nFarm JUV and PSG tokens By Staking BNB, BUSD & CHZ Tokens\r\n\r\nClick here➡️ https://ter.li/JUV-and-PSG-tokens",
1564
+ # "category" => "general",
1565
+ # "created_at" => "2020-12-14T11:18:49.085Z",
1566
+ # "user" => "Darc",
1567
+ # "user_title" => "Marketing",
1568
+ # "pin" => false,
1569
+ # "project" => {
1570
+ # "type" => "Market", "id" => "binance", "name" => "Binance", "image" => {
1571
+ # "thumb" => "https://assets.coingecko.com/markets/images/52/thumb/binance.jpg?1519353250", "small" => "https://assets.coingecko.com/markets/images/52/small/binance.jpg?1519353250", "large" => "https://assets.coingecko.com/markets/images/52/large/binance.jpg?1519353250"
1572
+ # }
1573
+ # }
1574
+ # }]
1575
+ # }
1576
+ def get_exchange_status_updates(id:, options: {})
1577
+ get "exchanges/#{id}/status_updates", { options: options }
1578
+ end
1579
+
1580
+ # Fetches trade volume data from a specific exchange.
1581
+ #
1582
+ # @param id [String] the exchange id to fetch.
1583
+ # @param days [Integer] number of days ago to fetch trade volume data.
1584
+ #
1585
+ # @return [Array<Array<Float, String>>] the exchange's trade volume data in 10-minute intervals, hourly intervals, or daily intervals depending on the number of days given
1586
+ #
1587
+ # @example Get Binance's trade volume from a day ago.
1588
+ # client.get_exchange_volume(id: 'binance', days: 1)
1589
+ # @example Response object (truncated)
1590
+ # [
1591
+ # [1620550200000.0, "1005476.2667217359131632087795432176371669876601688256288859094077173967202827700534809705802"], # [UNIX timestamp for exchange trade volume data, trade volume]
1592
+ # [1620553800000.0, "1018442.2775982988468591292487708941265043962519659923872972786095536137127193126138169804088"],
1593
+ # [1620557400000.0, "1042158.4333253484568599192332614201045319574863305612009609211497295171074087677404153278624"]
1594
+ # ]
1595
+ def get_exchange_volume(id:, days:)
1596
+ get "exchanges/#{id}/volume_chart", { days: days }
1597
+ end
1598
+ end
1599
+ end
1600
+ end