coingecko_ruby 0.1.0 → 0.2.0

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.
@@ -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