├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── pom.xml └── src ├── main └── java │ └── de │ └── elbatya │ └── cryptocoins │ └── bittrexclient │ ├── BittrexClient.java │ ├── api │ ├── BittrexAccountApi.java │ ├── BittrexMarketApi.java │ ├── BittrexPublicApi.java │ └── model │ │ ├── accountapi │ │ ├── Balance.java │ │ ├── DepositAddress.java │ │ ├── DepositHistoryEntry.java │ │ ├── Order.java │ │ ├── OrderHistoryEntry.java │ │ ├── WithdrawalHistoryEntry.java │ │ └── WithdrawalRequested.java │ │ ├── common │ │ ├── ApiResult.java │ │ └── BittrexApiException.java │ │ ├── marketapi │ │ ├── OpenOrder.java │ │ └── OrderCreated.java │ │ └── publicapi │ │ ├── Currency.java │ │ ├── Market.java │ │ ├── MarketHistoryEntry.java │ │ ├── MarketSummary.java │ │ ├── OrderBook.java │ │ ├── OrderBookEntry.java │ │ └── Ticker.java │ ├── config │ ├── ApiBuilderFactory.java │ ├── ApiCredentials.java │ └── ObjectMapperConfigurer.java │ └── util │ └── ApiKeySigningUtil.java └── test ├── java └── de │ └── elbatya │ └── cryptocoins │ └── bittrexclient │ ├── api │ ├── BittrexAccountApiTest.java │ ├── BittrexMarketApiTest.java │ └── BittrexPublicApiTest.java │ └── util │ └── ApiKeySigningUtilTest.java └── resources ├── accountapi ├── getbalance.json ├── getbalances.json ├── getdepositaddress.json ├── getdeposithistory.json ├── getorder.json ├── getorderhistory.json ├── getorderhistoryformarket.json ├── getwithdrawalhistory.json └── withdraw.json ├── log4j.properties ├── marketapi ├── buylimit.json ├── cancelorder.json ├── getopenorders.json └── selllimit.json └── publicapi ├── getcurrencies.json ├── getmarkethistory.json ├── getmarkets.json ├── getmarketsummaries.json ├── getmarketsummary.json ├── getorderbookboth.json ├── getorderbookbuy.json ├── getorderbooksell.json └── getticker.json /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | target/ 3 | *.iml 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | jdk: 3 | - oraclejdk8 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Mohammed El Batya 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | !!! ***This library has been discontinued and archived*** !!! 2 | 3 | 4 | [![Build Status](https://travis-ci.org/forgemo/bittrex-java-client.svg?branch=develop)](https://travis-ci.org/forgemo/bittrex-java-client) 5 | 6 | # bittrex-java-client 7 | 8 | Java client for the bittrex.com api. 9 | It uses the api version 1.1. 10 | 11 | ApiSpec: https://bittrex.com/home/api 12 | 13 | Warning! This library is fairly young and **not considered stable**. 14 | Use it with caution ... especially the market api. 15 | 16 | ## Breaking change in 2.0 17 | For greater precision, double values have been replaced by BigDecimal. 18 | 19 | ## Getting started 20 | 21 | ### Building from code with Maven (preferred) 22 | 1. Clone this repository 23 | 2. Execute 'mvn install' to build the library and install it to your local maven repo 24 | 3. Add the following dependency to your projects pom.xml 25 | 26 | ```xml 27 | 28 | de.elbatya.cryptocoins 29 | bittrex-client 30 | 2.0 31 | 32 | ``` 33 | ### Prebuild binaries via JitPack 34 | Note: Using JitPack is more convenient but less secure. There is no mechanism in place to ensure the authenticity of a downloaded artifact. 35 | 36 | #### Maven via JitPack 37 | 1. Add the JitPack repository to your build file. 38 | 39 | ```xml 40 | 41 | 42 | jitpack.io 43 | https://jitpack.io 44 | 45 | 46 | ``` 47 | 48 | 2. Add the dependency 49 | 50 | ```xml 51 | 52 | com.github.forgemo 53 | bittrex-java-client 54 | v2.0 55 | 56 | ``` 57 | 58 | 59 | 60 | #### Gradle via JitPack 61 | 1. Add the JitPack repository to your build file. Add it in your root build.gradle at the end of repositories: 62 | 63 | ```groovy 64 | allprojects { 65 | repositories { 66 | ... 67 | maven { url 'https://jitpack.io' } 68 | } 69 | } 70 | ``` 71 | 72 | 2. Add the dependency 73 | 74 | ```groovy 75 | dependencies { 76 | compile 'com.github.forgemo:bittrex-java-client:v2.0' 77 | } 78 | ``` 79 | 80 | #### Others via JitPack 81 | https://jitpack.io/#forgemo/bittrex-java-client/v2.0 82 | 83 | 84 | ## Examples 85 | 86 | ### List all markets without credentials 87 | 88 | ```java 89 | 90 | // Create a BittrexClient 91 | BittrexClient bittrexClient = new BittrexClient(); 92 | 93 | // Perform a getMarkets request on the public api 94 | ApiResult> apiResult = bittrexClient.getPublicApi().getMarkets(); 95 | 96 | // Unwrap the results 97 | List markets = apiResult.unwrap(); 98 | ``` 99 | 100 | 101 | ### List all your open orders using credentials 102 | 103 | ```java 104 | 105 | // Ceate ApiCredentials with ApiKey and Secret from bittrex.com 106 | ApiCredentials credentials = new ApiCredentials( 107 | "YourApiKeyFromBittrex.com", 108 | "YourApiKeySecretFromBittrex.com" 109 | ); 110 | 111 | // Create a BittrexClient with the ApiCredentials 112 | BittrexClient bittrexClient = new BittrexClient(credentials); 113 | 114 | // Perform a getOpenOrders request on the market api 115 | ApiResult> apiResult = bittrexClient.getMarketApi().getOpenOrders(); 116 | 117 | // Unwrap the results 118 | List openOrders = apiResult.unwrap(); 119 | ``` 120 | 121 | 122 | ## How to get credentials for the non-public Bittrex api 123 | 124 | 1. Create an account at bittrex.com 125 | 2. Enable Two-Factor-Authentication in your account settings 126 | 3. Create an api key with the required permissions in your account settings 127 | 4. Use the api key and secret like shown in the examples 128 | 4. Read https://bittrex.com/home/api for more infos 129 | 130 | 131 | ## Implementation Status 132 | 133 | ### Public Api 134 | - [X] /public/getmarkets 135 | - [X] /public/getcurrencies 136 | - [X] /public/getticker 137 | - [X] /public/getmarketsummaries 138 | - [X] /public/getmarketsummary 139 | - [X] /public/getorderbook 140 | - [X] /public/getmarkethistory 141 | 142 | ### Market Api (Credentials required) 143 | - [X] /market/buylimit 144 | - [X] /market/selllimit 145 | - [X] /market/cancel 146 | - [X] /market/getopenorders 147 | 148 | ### Account Api (Credentials required) 149 | - [X] /account/getbalances 150 | - [X] /account/getbalance 151 | - [X] /account/getdepositaddress 152 | - [X] /account/withdraw 153 | - [X] /account/getorder 154 | - [X] /account/getorderhistory 155 | - [X] /account/getwithdrawalhistory 156 | - [X] /account/getdeposithistory 157 | 158 | ### Stability 159 | - [X] Public Api - Basic Unit Tests 160 | - [X] Market Api - Basic Unit Tests 161 | - [X] Account Api - Basic Unit Tests 162 | - [ ] Public Api - Advanced Unit Tests 163 | - [ ] Market Api - Advanced Unit Tests 164 | - [ ] Account Api - Advanced Unit Tests 165 | - [X] Public Api - Tested with production backend 166 | - [X] Market Api - Tested with production backend 167 | - [X] Account Api - Tested with production backend 168 | - [X] Used in low budget / low risk real world applications 169 | - [ ] Used in real world applications 170 | 171 | ## Do you like this library? 172 | ### Donate Bitcoins to [18rdYGVpG5BZ7EFRie65E9pfvMSE47EEfV](https://blockexplorer.com/address/18rdYGVpG5BZ7EFRie65E9pfvMSE47EEfV) 173 | ### Donate Ether to [0x10dcd290c3aa2393c005E981DED566C8fB75C182](https://etherscan.io/address/0x10dcd290c3aa2393c005E981DED566C8fB75C182) 174 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | de.elbatya.cryptocoins 8 | bittrex-client 9 | 2.0 10 | 11 | 12 | 13 | 14 | 15 | org.apache.maven.plugins 16 | maven-compiler-plugin 17 | 3.5.1 18 | 19 | 1.8 20 | 1.8 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | io.github.openfeign 29 | feign-core 30 | 9.5.1 31 | 32 | 33 | io.github.openfeign 34 | feign-jackson 35 | 9.5.1 36 | 37 | 38 | com.fasterxml.jackson.core 39 | jackson-databind 40 | 2.8.6 41 | 42 | 43 | com.fasterxml.jackson.module 44 | jackson-module-parameter-names 45 | 2.8.4 46 | 47 | 48 | com.fasterxml.jackson.datatype 49 | jackson-datatype-jdk8 50 | 2.8.4 51 | 52 | 53 | com.fasterxml.jackson.datatype 54 | jackson-datatype-jsr310 55 | 2.8.4 56 | 57 | 58 | io.github.openfeign 59 | feign-slf4j 60 | 9.5.1 61 | 62 | 63 | com.google.code.findbugs 64 | jsr305 65 | 3.0.2 66 | 67 | 68 | 69 | 70 | 71 | org.slf4j 72 | slf4j-log4j12 73 | 1.8.0-alpha2 74 | test 75 | 76 | 77 | junit 78 | junit 79 | 4.12 80 | test 81 | 82 | 83 | org.assertj 84 | assertj-core-java8 85 | 1.0.0m1 86 | test 87 | 88 | 89 | com.marvinformatics.feign 90 | feign-mock 91 | 0.6 92 | test 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/BittrexClient.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient; 2 | 3 | 4 | import de.elbatya.cryptocoins.bittrexclient.api.BittrexAccountApi; 5 | import de.elbatya.cryptocoins.bittrexclient.api.BittrexMarketApi; 6 | import de.elbatya.cryptocoins.bittrexclient.api.BittrexPublicApi; 7 | import de.elbatya.cryptocoins.bittrexclient.config.ApiBuilderFactory; 8 | import de.elbatya.cryptocoins.bittrexclient.config.ApiCredentials; 9 | import feign.Feign; 10 | import feign.Logger; 11 | import feign.Util; 12 | import feign.slf4j.Slf4jLogger; 13 | 14 | import javax.annotation.Nullable; 15 | 16 | /** 17 | * @author contact@elbatya.de 18 | */ 19 | public class BittrexClient { 20 | 21 | public static final String DEFAULT_BASE_URL = "https://bittrex.com/api/v1.1"; 22 | 23 | private BittrexPublicApi publicApi; 24 | private BittrexMarketApi marketApi; 25 | private BittrexAccountApi accountApi; 26 | 27 | private boolean credentialsAvailable = true; 28 | 29 | public BittrexClient() { 30 | this(DEFAULT_BASE_URL, null, null); 31 | } 32 | 33 | public BittrexClient(@Nullable Logger.Level logLevel) { 34 | this(DEFAULT_BASE_URL, null, logLevel); 35 | } 36 | 37 | public BittrexClient(@Nullable ApiCredentials credentials) { 38 | this(DEFAULT_BASE_URL, credentials, null); 39 | } 40 | 41 | public BittrexClient(@Nullable ApiCredentials credentials, @Nullable Logger.Level logLevel) { 42 | this(DEFAULT_BASE_URL, credentials, logLevel); 43 | } 44 | 45 | 46 | public BittrexClient( 47 | String baseUrl, 48 | @Nullable ApiCredentials credentials, 49 | @Nullable Logger.Level logLevel) 50 | { 51 | Util.checkNotNull(baseUrl, "The baseUrl must not be null!"); 52 | 53 | ApiBuilderFactory apiBuilderFactory = new ApiBuilderFactory(baseUrl); 54 | 55 | Feign.Builder apiBuilder = apiBuilderFactory.createApiBuilder(credentials); 56 | 57 | if (logLevel != null) { 58 | apiBuilder 59 | .logger(new Slf4jLogger(BittrexClient.class)) 60 | .logLevel(logLevel); 61 | } 62 | 63 | publicApi = apiBuilder.target(BittrexPublicApi.class, baseUrl); 64 | 65 | credentialsAvailable = credentials != null; 66 | 67 | if(credentialsAvailable) { 68 | marketApi = apiBuilder.target(BittrexMarketApi.class, baseUrl); 69 | accountApi = apiBuilder.target(BittrexAccountApi.class, baseUrl); 70 | } 71 | } 72 | 73 | public BittrexPublicApi getPublicApi() { 74 | return publicApi; 75 | } 76 | public BittrexMarketApi getMarketApi() { 77 | failIfNoCredentials("You can't use the MarketAPI without credentials."); 78 | return marketApi; 79 | } 80 | public BittrexAccountApi getAccountApi() { 81 | failIfNoCredentials("You can't use the AccountAPI without credentials."); 82 | return accountApi; 83 | } 84 | 85 | private void failIfNoCredentials(String message){ 86 | if(!credentialsAvailable){ 87 | throw new RuntimeException(message); 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/BittrexAccountApi.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api; 2 | 3 | import de.elbatya.cryptocoins.bittrexclient.api.model.accountapi.*; 4 | import de.elbatya.cryptocoins.bittrexclient.api.model.common.ApiResult; 5 | import feign.Param; 6 | import feign.RequestLine; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.List; 10 | 11 | /** 12 | * @author contact@elbatya.de 13 | */ 14 | public interface BittrexAccountApi { 15 | 16 | @RequestLine("GET /account/getbalances") 17 | ApiResult> getBalances(); 18 | 19 | @RequestLine("GET /account/getbalance?currency={currency}") 20 | ApiResult getBalance(@Param("currency") String currency); 21 | 22 | @RequestLine("GET /account/getdepositaddress?currency={currency}") 23 | ApiResult getDepositAddress(@Param("currency") String currency); 24 | 25 | @RequestLine("GET /account/withdraw?currency={currency}&quantity={quantity}&address={address}&paymentid={paymentid}") 26 | ApiResult withdraw( 27 | @Param("currency") String currency, 28 | @Param("quantity") BigDecimal quantity, 29 | @Param("address") String address, 30 | @Param("paymentid") String paymentId 31 | ); 32 | 33 | @RequestLine("GET /account/withdraw?currency={currency}&quantity={quantity}&address={address}") 34 | ApiResult withdraw( 35 | @Param("currency") String currency, 36 | @Param("quantity") BigDecimal quantity, 37 | @Param("address") String address 38 | ); 39 | 40 | @RequestLine("GET /account/getorder?uuid={uuid}") 41 | ApiResult getOrder(@Param("uuid") String uuid); 42 | 43 | @RequestLine("GET /account/getorderhistory?market={market}") 44 | ApiResult> getOrderHistory(@Param("market") String market); 45 | 46 | @RequestLine("GET /account/getorderhistory") 47 | ApiResult> getOrderHistory(); 48 | 49 | @RequestLine("GET /account/getwithdrawalhistory?currency={currency}") 50 | ApiResult> getWithdrawalHistory(@Param("currency") String currency); 51 | 52 | @RequestLine("GET /account/getwithdrawalhistory") 53 | ApiResult> getWithdrawalHistory(); 54 | 55 | @RequestLine("GET /account/getdeposithistory?currency={currency}") 56 | ApiResult> getDepositHistory(@Param("currency") String currency); 57 | 58 | @RequestLine("GET /account/getdeposithistory") 59 | ApiResult> getDepositHistory(); 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/BittrexMarketApi.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api; 2 | 3 | import de.elbatya.cryptocoins.bittrexclient.api.model.common.ApiResult; 4 | import de.elbatya.cryptocoins.bittrexclient.api.model.marketapi.OpenOrder; 5 | import de.elbatya.cryptocoins.bittrexclient.api.model.marketapi.OrderCreated; 6 | import feign.Param; 7 | import feign.RequestLine; 8 | 9 | import java.math.BigDecimal; 10 | import java.util.List; 11 | 12 | /** 13 | * @author contact@elbatya.de 14 | */ 15 | public interface BittrexMarketApi { 16 | 17 | @RequestLine("GET /market/getopenorders") 18 | ApiResult> getOpenOrders(); 19 | 20 | @RequestLine("GET /market/getopenorders?market={market}") 21 | ApiResult> getOpenOrders(@Param("market") String market); 22 | 23 | @RequestLine("GET /market/cancel?uuid={orderUuid}") 24 | ApiResult cancelOrder(@Param("orderUuid") String orderUuid); 25 | 26 | @RequestLine("GET /market/selllimit?market={market}&quantity={quantity}&rate={rate}") 27 | ApiResult sellLimit( 28 | @Param("market") String market, 29 | @Param("quantity") BigDecimal quantity, 30 | @Param("rate") BigDecimal rate 31 | ); 32 | 33 | @RequestLine("GET /market/buylimit?market={market}&quantity={quantity}&rate={rate}") 34 | ApiResult buyLimit( 35 | @Param("market") String market, 36 | @Param("quantity") BigDecimal quantity, 37 | @Param("rate") BigDecimal rate 38 | ); 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/BittrexPublicApi.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api; 2 | 3 | import de.elbatya.cryptocoins.bittrexclient.api.model.common.ApiResult; 4 | import de.elbatya.cryptocoins.bittrexclient.api.model.publicapi.*; 5 | import feign.Param; 6 | import feign.RequestLine; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author contact@elbatya.de 12 | */ 13 | public interface BittrexPublicApi { 14 | 15 | @RequestLine("GET /public/getmarkets") 16 | ApiResult> getMarkets(); 17 | 18 | @RequestLine("GET /public/getcurrencies ") 19 | ApiResult> getCurrencies(); 20 | 21 | @RequestLine("GET /public/getticker?market={market}") 22 | ApiResult getTicker(@Param("market") String market); 23 | 24 | @RequestLine("GET /public/getmarketsummaries") 25 | ApiResult> getMarketSummaries(); 26 | 27 | @RequestLine("GET /public/getmarketsummary?market={market}") 28 | ApiResult> getMarketSummary(@Param("market") String market); 29 | 30 | @RequestLine("GET /public/getorderbook?type=both&market={market}&depth={depth}") 31 | ApiResult getOrderBook( 32 | @Param("market") String market, 33 | @Param("depth") int depth 34 | ); 35 | 36 | @RequestLine("GET /public/getorderbook?type=both&market={market}") 37 | ApiResult getOrderBook( 38 | @Param("market") String market 39 | ); 40 | 41 | @RequestLine("GET /public/getorderbook?type=sell&market={market}&depth={depth}") 42 | ApiResult> getOrderBookForSell( 43 | @Param("market") String market, 44 | @Param("depth") int depth 45 | ); 46 | 47 | @RequestLine("GET /public/getorderbook?type=sell&market={market}") 48 | ApiResult> getOrderBookForSell( 49 | @Param("market") String market 50 | ); 51 | 52 | @RequestLine("GET /public/getorderbook?type=buy&market={market}&depth={depth}") 53 | ApiResult> getOrderBookForBuy( 54 | @Param("market") String market, 55 | @Param("depth") int depth 56 | ); 57 | 58 | @RequestLine("GET /public/getorderbook?type=buy&market={market}") 59 | ApiResult> getOrderBookForBuy( 60 | @Param("market") String market 61 | ); 62 | 63 | 64 | @RequestLine("GET /public/getmarkethistory?market={market}") 65 | ApiResult> getMarketHistory(@Param("market") String market); 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/accountapi/Balance.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.accountapi; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * @author contact@elbatya.de 7 | */ 8 | public class Balance { 9 | 10 | private String currency; 11 | private BigDecimal balance; 12 | private BigDecimal available; 13 | private BigDecimal pending; 14 | private String cryptoAddress; 15 | private Boolean requested; 16 | private String uuid; 17 | 18 | public String getCurrency() { 19 | return currency; 20 | } 21 | 22 | public void setCurrency(String currency) { 23 | this.currency = currency; 24 | } 25 | 26 | public BigDecimal getBalance() { 27 | return balance; 28 | } 29 | 30 | public void setBalance(BigDecimal balance) { 31 | this.balance = balance; 32 | } 33 | 34 | public BigDecimal getAvailable() { 35 | return available; 36 | } 37 | 38 | public void setAvailable(BigDecimal available) { 39 | this.available = available; 40 | } 41 | 42 | public BigDecimal getPending() { 43 | return pending; 44 | } 45 | 46 | public void setPending(BigDecimal pending) { 47 | this.pending = pending; 48 | } 49 | 50 | public String getCryptoAddress() { 51 | return cryptoAddress; 52 | } 53 | 54 | public void setCryptoAddress(String cryptoAddress) { 55 | this.cryptoAddress = cryptoAddress; 56 | } 57 | 58 | public Boolean getRequested() { 59 | return requested; 60 | } 61 | 62 | public void setRequested(Boolean requested) { 63 | this.requested = requested; 64 | } 65 | 66 | public String getUuid() { 67 | return uuid; 68 | } 69 | 70 | public void setUuid(String uuid) { 71 | this.uuid = uuid; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/accountapi/DepositAddress.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.accountapi; 2 | 3 | /** 4 | * @author contact@elbatya.de 5 | */ 6 | public class DepositAddress { 7 | 8 | private String currency; 9 | private String address; 10 | 11 | public String getCurrency() { 12 | return currency; 13 | } 14 | 15 | public void setCurrency(String currency) { 16 | this.currency = currency; 17 | } 18 | 19 | public String getAddress() { 20 | return address; 21 | } 22 | 23 | public void setAddress(String address) { 24 | this.address = address; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/accountapi/DepositHistoryEntry.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.accountapi; 2 | 3 | import java.math.BigDecimal; 4 | import java.time.LocalDateTime; 5 | 6 | /** 7 | * @author contact@elbatya.de 8 | */ 9 | public class DepositHistoryEntry { 10 | 11 | private String id; 12 | private Integer confirmations; 13 | private LocalDateTime lastUpdated; 14 | private String paymentUuid; 15 | private String currency; 16 | private BigDecimal amount; 17 | private String cryptoAddress; 18 | private LocalDateTime opened; 19 | private Boolean authorized; 20 | private Boolean pendingPayment; 21 | private BigDecimal txCost; 22 | private String txId; 23 | private Boolean canceled; 24 | private Boolean invalidAddress; 25 | 26 | public String getId() { 27 | return id; 28 | } 29 | 30 | public void setId(String id) { 31 | this.id = id; 32 | } 33 | 34 | public Integer getConfirmations() { 35 | return confirmations; 36 | } 37 | 38 | public void setConfirmations(Integer confirmations) { 39 | this.confirmations = confirmations; 40 | } 41 | 42 | public LocalDateTime getLastUpdated() { 43 | return lastUpdated; 44 | } 45 | 46 | public void setLastUpdated(LocalDateTime lastUpdated) { 47 | this.lastUpdated = lastUpdated; 48 | } 49 | 50 | public Boolean getInvalidAddress() { 51 | return invalidAddress; 52 | } 53 | 54 | public void setInvalidAddress(Boolean invalidAddress) { 55 | this.invalidAddress = invalidAddress; 56 | } 57 | 58 | public String getPaymentUuid() { 59 | return paymentUuid; 60 | } 61 | 62 | public void setPaymentUuid(String paymentUuid) { 63 | this.paymentUuid = paymentUuid; 64 | } 65 | 66 | public String getCurrency() { 67 | return currency; 68 | } 69 | 70 | public void setCurrency(String currency) { 71 | this.currency = currency; 72 | } 73 | 74 | public BigDecimal getAmount() { 75 | return amount; 76 | } 77 | 78 | public void setAmount(BigDecimal amount) { 79 | this.amount = amount; 80 | } 81 | 82 | public String getCryptoAddress() { 83 | return cryptoAddress; 84 | } 85 | 86 | public void setCryptoAddress(String cryptoAddress) { 87 | this.cryptoAddress = cryptoAddress; 88 | } 89 | 90 | public LocalDateTime getOpened() { 91 | return opened; 92 | } 93 | 94 | public void setOpened(LocalDateTime opened) { 95 | this.opened = opened; 96 | } 97 | 98 | public Boolean getAuthorized() { 99 | return authorized; 100 | } 101 | 102 | public void setAuthorized(Boolean authorized) { 103 | this.authorized = authorized; 104 | } 105 | 106 | public Boolean getPendingPayment() { 107 | return pendingPayment; 108 | } 109 | 110 | public void setPendingPayment(Boolean pendingPayment) { 111 | this.pendingPayment = pendingPayment; 112 | } 113 | 114 | public BigDecimal getTxCost() { 115 | return txCost; 116 | } 117 | 118 | public void setTxCost(BigDecimal txCost) { 119 | this.txCost = txCost; 120 | } 121 | 122 | public String getTxId() { 123 | return txId; 124 | } 125 | 126 | public void setTxId(String txId) { 127 | this.txId = txId; 128 | } 129 | 130 | public Boolean getCanceled() { 131 | return canceled; 132 | } 133 | 134 | public void setCanceled(Boolean canceled) { 135 | this.canceled = canceled; 136 | } 137 | 138 | public Boolean getIsInvalidAddress() { 139 | return invalidAddress; 140 | } 141 | 142 | public void setIsInvalidAddress(Boolean invalidAddress) { 143 | this.invalidAddress = invalidAddress; 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/accountapi/Order.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.accountapi; 2 | 3 | import java.math.BigDecimal; 4 | import java.time.LocalDateTime; 5 | 6 | /** 7 | * @author contact@elbatya.de 8 | */ 9 | public class Order { 10 | private String accountId; 11 | private String orderUuid; 12 | private String exchange; 13 | private String type; 14 | private BigDecimal quantity; 15 | private BigDecimal quantityRemaining; 16 | private BigDecimal limit; 17 | private BigDecimal reserved; 18 | private BigDecimal reserveRemaining; 19 | private BigDecimal commissionReserved; 20 | private BigDecimal commissionReserveRemaining; 21 | private BigDecimal commissionPaid; 22 | private BigDecimal price; 23 | private BigDecimal pricePerUnit; 24 | private LocalDateTime opened; 25 | private LocalDateTime closed; 26 | private Boolean isOpen; 27 | private String sentinel; 28 | private Boolean cancelInitiated; 29 | private Boolean immediateOrCancel; 30 | private Boolean isConditional; 31 | private String condition; 32 | private String conditionTarget; 33 | 34 | public String getAccountId() { 35 | return accountId; 36 | } 37 | 38 | public void setAccountId(String accountId) { 39 | this.accountId = accountId; 40 | } 41 | 42 | public String getOrderUuid() { 43 | return orderUuid; 44 | } 45 | 46 | public void setOrderUuid(String orderUuid) { 47 | this.orderUuid = orderUuid; 48 | } 49 | 50 | public String getExchange() { 51 | return exchange; 52 | } 53 | 54 | public void setExchange(String exchange) { 55 | this.exchange = exchange; 56 | } 57 | 58 | public String getType() { 59 | return type; 60 | } 61 | 62 | public void setType(String type) { 63 | this.type = type; 64 | } 65 | 66 | public BigDecimal getQuantity() { 67 | return quantity; 68 | } 69 | 70 | public void setQuantity(BigDecimal quantity) { 71 | this.quantity = quantity; 72 | } 73 | 74 | public BigDecimal getQuantityRemaining() { 75 | return quantityRemaining; 76 | } 77 | 78 | public void setQuantityRemaining(BigDecimal quantityRemaining) { 79 | this.quantityRemaining = quantityRemaining; 80 | } 81 | 82 | public BigDecimal getLimit() { 83 | return limit; 84 | } 85 | 86 | public void setLimit(BigDecimal limit) { 87 | this.limit = limit; 88 | } 89 | 90 | public BigDecimal getReserved() { 91 | return reserved; 92 | } 93 | 94 | public void setReserved(BigDecimal reserved) { 95 | this.reserved = reserved; 96 | } 97 | 98 | public BigDecimal getReserveRemaining() { 99 | return reserveRemaining; 100 | } 101 | 102 | public void setReserveRemaining(BigDecimal reserveRemaining) { 103 | this.reserveRemaining = reserveRemaining; 104 | } 105 | 106 | public BigDecimal getCommissionReserved() { 107 | return commissionReserved; 108 | } 109 | 110 | public void setCommissionReserved(BigDecimal commissionReserved) { 111 | this.commissionReserved = commissionReserved; 112 | } 113 | 114 | public BigDecimal getCommissionReserveRemaining() { 115 | return commissionReserveRemaining; 116 | } 117 | 118 | public void setCommissionReserveRemaining(BigDecimal commissionReserveRemaining) { 119 | this.commissionReserveRemaining = commissionReserveRemaining; 120 | } 121 | 122 | public BigDecimal getCommissionPaid() { 123 | return commissionPaid; 124 | } 125 | 126 | public void setCommissionPaid(BigDecimal commissionPaid) { 127 | this.commissionPaid = commissionPaid; 128 | } 129 | 130 | public BigDecimal getPrice() { 131 | return price; 132 | } 133 | 134 | public void setPrice(BigDecimal price) { 135 | this.price = price; 136 | } 137 | 138 | public BigDecimal getPricePerUnit() { 139 | return pricePerUnit; 140 | } 141 | 142 | public void setPricePerUnit(BigDecimal pricePerUnit) { 143 | this.pricePerUnit = pricePerUnit; 144 | } 145 | 146 | public LocalDateTime getOpened() { 147 | return opened; 148 | } 149 | 150 | public void setOpened(LocalDateTime opened) { 151 | this.opened = opened; 152 | } 153 | 154 | public LocalDateTime getClosed() { 155 | return closed; 156 | } 157 | 158 | public void setClosed(LocalDateTime closed) { 159 | this.closed = closed; 160 | } 161 | 162 | public Boolean getIsOpen() { 163 | return isOpen; 164 | } 165 | 166 | public void setIsOpen(Boolean open) { 167 | isOpen = open; 168 | } 169 | 170 | public String getSentinel() { 171 | return sentinel; 172 | } 173 | 174 | public void setSentinel(String sentinel) { 175 | this.sentinel = sentinel; 176 | } 177 | 178 | public Boolean getCancelInitiated() { 179 | return cancelInitiated; 180 | } 181 | 182 | public void setCancelInitiated(Boolean cancelInitiated) { 183 | this.cancelInitiated = cancelInitiated; 184 | } 185 | 186 | public Boolean getImmediateOrCancel() { 187 | return immediateOrCancel; 188 | } 189 | 190 | public void setImmediateOrCancel(Boolean immediateOrCancel) { 191 | this.immediateOrCancel = immediateOrCancel; 192 | } 193 | 194 | public Boolean getIsConditional() { 195 | return isConditional; 196 | } 197 | 198 | public void setIsConditional(Boolean conditional) { 199 | isConditional = conditional; 200 | } 201 | 202 | public String getCondition() { 203 | return condition; 204 | } 205 | 206 | public void setCondition(String condition) { 207 | this.condition = condition; 208 | } 209 | 210 | public String getConditionTarget() { 211 | return conditionTarget; 212 | } 213 | 214 | public void setConditionTarget(String conditionTarget) { 215 | this.conditionTarget = conditionTarget; 216 | } 217 | } 218 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/accountapi/OrderHistoryEntry.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.accountapi; 2 | 3 | import java.math.BigDecimal; 4 | import java.time.LocalDateTime; 5 | 6 | /** 7 | * @author contact@elbatya.de 8 | */ 9 | public class OrderHistoryEntry { 10 | private String orderUuid; 11 | private String exchange; 12 | private LocalDateTime timeStamp; 13 | private String orderType; 14 | private BigDecimal limit; 15 | private BigDecimal quantity; 16 | private BigDecimal quantityRemaining; 17 | private BigDecimal commission; 18 | private BigDecimal price; 19 | private BigDecimal pricePerUnit; 20 | private Boolean isConditional; 21 | private String condition; 22 | private String conditionTarget; 23 | private Boolean immediateOrCancel; 24 | private LocalDateTime closed; 25 | 26 | public String getOrderUuid() { 27 | return orderUuid; 28 | } 29 | 30 | public void setOrderUuid(String orderUuid) { 31 | this.orderUuid = orderUuid; 32 | } 33 | 34 | public String getExchange() { 35 | return exchange; 36 | } 37 | 38 | public void setExchange(String exchange) { 39 | this.exchange = exchange; 40 | } 41 | 42 | public LocalDateTime getTimeStamp() { 43 | return timeStamp; 44 | } 45 | 46 | public void setTimeStamp(LocalDateTime timeStamp) { 47 | this.timeStamp = timeStamp; 48 | } 49 | 50 | public String getOrderType() { 51 | return orderType; 52 | } 53 | 54 | public void setOrderType(String orderType) { 55 | this.orderType = orderType; 56 | } 57 | 58 | public BigDecimal getLimit() { 59 | return limit; 60 | } 61 | 62 | public void setLimit(BigDecimal limit) { 63 | this.limit = limit; 64 | } 65 | 66 | public BigDecimal getQuantity() { 67 | return quantity; 68 | } 69 | 70 | public void setQuantity(BigDecimal quantity) { 71 | this.quantity = quantity; 72 | } 73 | 74 | public BigDecimal getQuantityRemaining() { 75 | return quantityRemaining; 76 | } 77 | 78 | public void setQuantityRemaining(BigDecimal quantityRemaining) { 79 | this.quantityRemaining = quantityRemaining; 80 | } 81 | 82 | public BigDecimal getCommission() { 83 | return commission; 84 | } 85 | 86 | public void setCommission(BigDecimal commission) { 87 | this.commission = commission; 88 | } 89 | 90 | public BigDecimal getPrice() { 91 | return price; 92 | } 93 | 94 | public void setPrice(BigDecimal price) { 95 | this.price = price; 96 | } 97 | 98 | public BigDecimal getPricePerUnit() { 99 | return pricePerUnit; 100 | } 101 | 102 | public void setPricePerUnit(BigDecimal pricePerUnit) { 103 | this.pricePerUnit = pricePerUnit; 104 | } 105 | 106 | public Boolean getIsConditional() { 107 | return isConditional; 108 | } 109 | 110 | public void setIsConditional(Boolean conditional) { 111 | isConditional = conditional; 112 | } 113 | 114 | public String getCondition() { 115 | return condition; 116 | } 117 | 118 | public void setCondition(String condition) { 119 | this.condition = condition; 120 | } 121 | 122 | public String getConditionTarget() { 123 | return conditionTarget; 124 | } 125 | 126 | public void setConditionTarget(String conditionTarget) { 127 | this.conditionTarget = conditionTarget; 128 | } 129 | 130 | public Boolean getImmediateOrCancel() { 131 | return immediateOrCancel; 132 | } 133 | 134 | public void setImmediateOrCancel(Boolean immediateOrCancel) { 135 | this.immediateOrCancel = immediateOrCancel; 136 | } 137 | 138 | public Boolean getConditional() { 139 | return isConditional; 140 | } 141 | 142 | public void setConditional(Boolean conditional) { 143 | isConditional = conditional; 144 | } 145 | 146 | public LocalDateTime getClosed() { 147 | return closed; 148 | } 149 | 150 | public void setClosed(LocalDateTime closed) { 151 | this.closed = closed; 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/accountapi/WithdrawalHistoryEntry.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.accountapi; 2 | 3 | import java.time.LocalDateTime; 4 | 5 | /** 6 | * @author contact@elbatya.de 7 | */ 8 | public class WithdrawalHistoryEntry { 9 | 10 | private String paymentUuid; 11 | private String currency; 12 | private String amount; 13 | private String address; 14 | private LocalDateTime opened; 15 | private Boolean authorized; 16 | private Boolean pendingPayment; 17 | private Double txCost; 18 | private String txId; 19 | private Boolean canceled; 20 | private Boolean invalidAddress; 21 | 22 | public String getPaymentUuid() { 23 | return paymentUuid; 24 | } 25 | 26 | public void setPaymentUuid(String paymentUuid) { 27 | this.paymentUuid = paymentUuid; 28 | } 29 | 30 | public String getCurrency() { 31 | return currency; 32 | } 33 | 34 | public void setCurrency(String currency) { 35 | this.currency = currency; 36 | } 37 | 38 | public String getAmount() { 39 | return amount; 40 | } 41 | 42 | public void setAmount(String amount) { 43 | this.amount = amount; 44 | } 45 | 46 | public String getAddress() { 47 | return address; 48 | } 49 | 50 | public void setAddress(String address) { 51 | this.address = address; 52 | } 53 | 54 | public LocalDateTime getOpened() { 55 | return opened; 56 | } 57 | 58 | public void setOpened(LocalDateTime opened) { 59 | this.opened = opened; 60 | } 61 | 62 | public Boolean getAuthorized() { 63 | return authorized; 64 | } 65 | 66 | public void setAuthorized(Boolean authorized) { 67 | this.authorized = authorized; 68 | } 69 | 70 | public Boolean getPendingPayment() { 71 | return pendingPayment; 72 | } 73 | 74 | public void setPendingPayment(Boolean pendingPayment) { 75 | this.pendingPayment = pendingPayment; 76 | } 77 | 78 | public Double getTxCost() { 79 | return txCost; 80 | } 81 | 82 | public void setTxCost(Double txCost) { 83 | this.txCost = txCost; 84 | } 85 | 86 | public String getTxId() { 87 | return txId; 88 | } 89 | 90 | public void setTxId(String txId) { 91 | this.txId = txId; 92 | } 93 | 94 | public Boolean getCanceled() { 95 | return canceled; 96 | } 97 | 98 | public void setCanceled(Boolean canceled) { 99 | this.canceled = canceled; 100 | } 101 | 102 | public Boolean getInvalidAddress() { 103 | return invalidAddress; 104 | } 105 | 106 | public void setInvalidAddress(Boolean invalidAddress) { 107 | this.invalidAddress = invalidAddress; 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/accountapi/WithdrawalRequested.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.accountapi; 2 | 3 | /** 4 | * @author contact@elbatya.de 5 | */ 6 | public class WithdrawalRequested { 7 | private String uuid; 8 | 9 | public String getUuid() { 10 | return uuid; 11 | } 12 | 13 | public void setUuid(String uuid) { 14 | this.uuid = uuid; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/common/ApiResult.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.common; 2 | 3 | import java.util.Optional; 4 | 5 | /** 6 | * @author contact@elbatya.de 7 | */ 8 | public class ApiResult { 9 | private boolean success; 10 | private String message; 11 | private T result; 12 | 13 | public boolean isSuccess() { 14 | return success; 15 | } 16 | 17 | public void setSuccess(boolean success) { 18 | this.success = success; 19 | } 20 | 21 | public String getMessage() { 22 | return message; 23 | } 24 | 25 | public void setMessage(String message) { 26 | this.message = message; 27 | } 28 | 29 | public T getResult() { 30 | return result; 31 | } 32 | 33 | public Optional getResultAsOptional() { 34 | return Optional.ofNullable(result); 35 | } 36 | 37 | public T unwrap() throws BittrexApiException { 38 | if (result == null) { 39 | String errorMessage = String.format("Message from Bittrex server: %s", this.message); 40 | throw new BittrexApiException(errorMessage); 41 | } 42 | return result; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/common/BittrexApiException.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.common; 2 | 3 | /** 4 | * @author contact@elbatya.de 5 | */ 6 | public class BittrexApiException extends RuntimeException { 7 | 8 | public BittrexApiException() { 9 | } 10 | 11 | public BittrexApiException(String message) { 12 | super(message); 13 | } 14 | 15 | public BittrexApiException(String message, Throwable cause) { 16 | super(message, cause); 17 | } 18 | 19 | public BittrexApiException(Throwable cause) { 20 | super(cause); 21 | } 22 | 23 | public BittrexApiException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 24 | super(message, cause, enableSuppression, writableStackTrace); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/marketapi/OpenOrder.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.marketapi; 2 | 3 | import java.math.BigDecimal; 4 | import java.time.LocalDateTime; 5 | 6 | /** 7 | * @author contact@elbatya.de 8 | */ 9 | public class OpenOrder { 10 | 11 | private String uuid; 12 | private String orderUuid; 13 | private String exchange; 14 | private String orderType; 15 | private BigDecimal quantity; 16 | private BigDecimal quantityRemaining; 17 | private BigDecimal limit; 18 | private BigDecimal commissionPaid; 19 | private BigDecimal price; 20 | private BigDecimal pricePerUnit; 21 | private LocalDateTime opened; 22 | private LocalDateTime closed; 23 | private Boolean cancelInitiated; 24 | private Boolean immediateOrCancel; 25 | private Boolean isConditional; 26 | private String condition; 27 | private String conditionTarget; 28 | 29 | public String getUuid() { 30 | return uuid; 31 | } 32 | 33 | public void setUuid(String uuid) { 34 | this.uuid = uuid; 35 | } 36 | 37 | public String getOrderUuid() { 38 | return orderUuid; 39 | } 40 | 41 | public void setOrderUuid(String orderUuid) { 42 | this.orderUuid = orderUuid; 43 | } 44 | 45 | public String getExchange() { 46 | return exchange; 47 | } 48 | 49 | public void setExchange(String exchange) { 50 | this.exchange = exchange; 51 | } 52 | 53 | public String getOrderType() { 54 | return orderType; 55 | } 56 | 57 | public void setOrderType(String orderType) { 58 | this.orderType = orderType; 59 | } 60 | 61 | public BigDecimal getQuantity() { 62 | return quantity; 63 | } 64 | 65 | public void setQuantity(BigDecimal quantity) { 66 | this.quantity = quantity; 67 | } 68 | 69 | public BigDecimal getQuantityRemaining() { 70 | return quantityRemaining; 71 | } 72 | 73 | public void setQuantityRemaining(BigDecimal quantityRemaining) { 74 | this.quantityRemaining = quantityRemaining; 75 | } 76 | 77 | public BigDecimal getLimit() { 78 | return limit; 79 | } 80 | 81 | public void setLimit(BigDecimal limit) { 82 | this.limit = limit; 83 | } 84 | 85 | public BigDecimal getCommissionPaid() { 86 | return commissionPaid; 87 | } 88 | 89 | public void setCommissionPaid(BigDecimal commissionPaid) { 90 | this.commissionPaid = commissionPaid; 91 | } 92 | 93 | public BigDecimal getPrice() { 94 | return price; 95 | } 96 | 97 | public void setPrice(BigDecimal price) { 98 | this.price = price; 99 | } 100 | 101 | public BigDecimal getPricePerUnit() { 102 | return pricePerUnit; 103 | } 104 | 105 | public void setPricePerUnit(BigDecimal pricePerUnit) { 106 | this.pricePerUnit = pricePerUnit; 107 | } 108 | 109 | public LocalDateTime getOpened() { 110 | return opened; 111 | } 112 | 113 | public void setOpened(LocalDateTime opened) { 114 | this.opened = opened; 115 | } 116 | 117 | public LocalDateTime getClosed() { 118 | return closed; 119 | } 120 | 121 | public void setClosed(LocalDateTime closed) { 122 | this.closed = closed; 123 | } 124 | 125 | public Boolean getCancelInitiated() { 126 | return cancelInitiated; 127 | } 128 | 129 | public void setCancelInitiated(Boolean cancelInitiated) { 130 | this.cancelInitiated = cancelInitiated; 131 | } 132 | 133 | public Boolean getImmediateOrCancel() { 134 | return immediateOrCancel; 135 | } 136 | 137 | public void setImmediateOrCancel(Boolean immediateOrCancel) { 138 | this.immediateOrCancel = immediateOrCancel; 139 | } 140 | 141 | public Boolean getIsConditional() { 142 | return isConditional; 143 | } 144 | 145 | public void setIsConditional(Boolean conditional) { 146 | isConditional = conditional; 147 | } 148 | 149 | public String getCondition() { 150 | return condition; 151 | } 152 | 153 | public void setCondition(String condition) { 154 | this.condition = condition; 155 | } 156 | 157 | public String getConditionTarget() { 158 | return conditionTarget; 159 | } 160 | 161 | public void setConditionTarget(String conditionTarget) { 162 | this.conditionTarget = conditionTarget; 163 | } 164 | } 165 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/marketapi/OrderCreated.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.marketapi; 2 | 3 | /** 4 | * @author contact@elbatya.de 5 | */ 6 | public class OrderCreated { 7 | 8 | private String uuid; 9 | 10 | public String getUuid() { 11 | return uuid; 12 | } 13 | 14 | public void setUuid(String uuid) { 15 | this.uuid = uuid; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/publicapi/Currency.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.publicapi; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * @author contact@elbatya.de 7 | */ 8 | public class Currency { 9 | 10 | private String currency; 11 | private String currencyLong; 12 | private Integer minConfirmation; 13 | private BigDecimal txFee; 14 | private Boolean isActive; 15 | private String coinType; 16 | private String baseAddress; 17 | private String notice; 18 | 19 | 20 | public String getCurrency() { 21 | return currency; 22 | } 23 | 24 | public void setCurrency(String currency) { 25 | this.currency = currency; 26 | } 27 | 28 | public String getCurrencyLong() { 29 | return currencyLong; 30 | } 31 | 32 | public void setCurrencyLong(String currencyLong) { 33 | this.currencyLong = currencyLong; 34 | } 35 | 36 | public Integer getMinConfirmation() { 37 | return minConfirmation; 38 | } 39 | 40 | public void setMinConfirmation(Integer minConfirmation) { 41 | this.minConfirmation = minConfirmation; 42 | } 43 | 44 | public BigDecimal getTxFee() { 45 | return txFee; 46 | } 47 | 48 | public void setTxFee(BigDecimal txFee) { 49 | this.txFee = txFee; 50 | } 51 | 52 | public Boolean getIsActive() { 53 | return isActive; 54 | } 55 | 56 | public void setIsActive(Boolean active) { 57 | isActive = active; 58 | } 59 | 60 | public String getCoinType() { 61 | return coinType; 62 | } 63 | 64 | public void setCoinType(String coinType) { 65 | this.coinType = coinType; 66 | } 67 | 68 | public String getBaseAddress() { 69 | return baseAddress; 70 | } 71 | 72 | public void setBaseAddress(String baseAddress) { 73 | this.baseAddress = baseAddress; 74 | } 75 | 76 | public String getNotice() { 77 | return notice; 78 | } 79 | 80 | public void setNotice(String notice) { 81 | this.notice = notice; 82 | } 83 | 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/publicapi/Market.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.publicapi; 2 | 3 | import java.math.BigDecimal; 4 | import java.time.LocalDateTime; 5 | 6 | /** 7 | * @author contact@elbatya.de 8 | */ 9 | public class Market { 10 | 11 | private String marketCurrency; 12 | private String marketCurrencyLong; 13 | 14 | private String baseCurrency; 15 | private String baseCurrencyLong; 16 | 17 | private BigDecimal minTradeSize; 18 | 19 | private String marketName; 20 | 21 | private Boolean isActive; 22 | 23 | private LocalDateTime created; 24 | 25 | private String notice; 26 | 27 | private Boolean isSponsored; 28 | 29 | private String logoUrl; 30 | 31 | 32 | public String getMarketCurrency() { 33 | return marketCurrency; 34 | } 35 | 36 | public void setMarketCurrency(String marketCurrency) { 37 | this.marketCurrency = marketCurrency; 38 | } 39 | 40 | public String getMarketCurrencyLong() { 41 | return marketCurrencyLong; 42 | } 43 | 44 | public void setMarketCurrencyLong(String marketCurrencyLong) { 45 | this.marketCurrencyLong = marketCurrencyLong; 46 | } 47 | 48 | public String getBaseCurrency() { 49 | return baseCurrency; 50 | } 51 | 52 | public void setBaseCurrency(String baseCurrency) { 53 | this.baseCurrency = baseCurrency; 54 | } 55 | 56 | public String getBaseCurrencyLong() { 57 | return baseCurrencyLong; 58 | } 59 | 60 | public void setBaseCurrencyLong(String baseCurrencyLong) { 61 | this.baseCurrencyLong = baseCurrencyLong; 62 | } 63 | 64 | public BigDecimal getMinTradeSize() { 65 | return minTradeSize; 66 | } 67 | 68 | public void setMinTradeSize(BigDecimal minTradeSize) { 69 | this.minTradeSize = minTradeSize; 70 | } 71 | 72 | public String getMarketName() { 73 | return marketName; 74 | } 75 | 76 | public void setMarketName(String marketName) { 77 | this.marketName = marketName; 78 | } 79 | 80 | public Boolean getIsActive() { 81 | return isActive; 82 | } 83 | 84 | public void setIsActive(Boolean active) { 85 | isActive = active; 86 | } 87 | 88 | public LocalDateTime getCreated() { 89 | return created; 90 | } 91 | 92 | public void setCreated(LocalDateTime created) { 93 | this.created = created; 94 | } 95 | 96 | public String getNotice() { 97 | return notice; 98 | } 99 | 100 | public void setNotice(String notice) { 101 | this.notice = notice; 102 | } 103 | 104 | public Boolean getIsSponsored() { 105 | return isSponsored; 106 | } 107 | 108 | public void setIsSponsored(Boolean sponsored) { 109 | isSponsored = sponsored; 110 | } 111 | 112 | public String getLogoUrl() { 113 | return logoUrl; 114 | } 115 | 116 | public void setLogoUrl(String logoUrl) { 117 | this.logoUrl = logoUrl; 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/publicapi/MarketHistoryEntry.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.publicapi; 2 | 3 | import java.math.BigDecimal; 4 | import java.time.LocalDateTime; 5 | 6 | /** 7 | * @author contact@elbatya.de 8 | */ 9 | public class MarketHistoryEntry { 10 | 11 | private Long id; 12 | private LocalDateTime timeStamp; 13 | private BigDecimal quantity; 14 | private BigDecimal price; 15 | private BigDecimal total; 16 | private String fillType; 17 | private String orderType; 18 | 19 | public Long getId() { 20 | return id; 21 | } 22 | 23 | public void setId(Long id) { 24 | this.id = id; 25 | } 26 | 27 | public LocalDateTime getTimeStamp() { 28 | return timeStamp; 29 | } 30 | 31 | public void setTimeStamp(LocalDateTime timeStamp) { 32 | this.timeStamp = timeStamp; 33 | } 34 | 35 | public BigDecimal getQuantity() { 36 | return quantity; 37 | } 38 | 39 | public void setQuantity(BigDecimal quantity) { 40 | this.quantity = quantity; 41 | } 42 | 43 | public BigDecimal getPrice() { 44 | return price; 45 | } 46 | 47 | public void setPrice(BigDecimal price) { 48 | this.price = price; 49 | } 50 | 51 | public BigDecimal getTotal() { 52 | return total; 53 | } 54 | 55 | public void setTotal(BigDecimal total) { 56 | this.total = total; 57 | } 58 | 59 | public String getFillType() { 60 | return fillType; 61 | } 62 | 63 | public void setFillType(String fillType) { 64 | this.fillType = fillType; 65 | } 66 | 67 | public String getOrderType() { 68 | return orderType; 69 | } 70 | 71 | public void setOrderType(String orderType) { 72 | this.orderType = orderType; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/publicapi/MarketSummary.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.publicapi; 2 | 3 | import java.math.BigDecimal; 4 | import java.time.LocalDateTime; 5 | 6 | /** 7 | * @author contact@elbatya.de 8 | */ 9 | public class MarketSummary { 10 | 11 | private String marketName; 12 | private BigDecimal high; 13 | private BigDecimal low; 14 | private BigDecimal volume; 15 | private BigDecimal last; 16 | private BigDecimal baseVolume; 17 | private LocalDateTime timeStamp; 18 | private BigDecimal bid; 19 | private BigDecimal ask; 20 | private Integer openBuyOrders; 21 | private Integer openSellOrders; 22 | private BigDecimal prevDay; 23 | private LocalDateTime created; 24 | 25 | public String getMarketName() { 26 | return marketName; 27 | } 28 | 29 | public void setMarketName(String marketName) { 30 | this.marketName = marketName; 31 | } 32 | 33 | public BigDecimal getHigh() { 34 | return high; 35 | } 36 | 37 | public void setHigh(BigDecimal high) { 38 | this.high = high; 39 | } 40 | 41 | public BigDecimal getLow() { 42 | return low; 43 | } 44 | 45 | public void setLow(BigDecimal low) { 46 | this.low = low; 47 | } 48 | 49 | public BigDecimal getVolume() { 50 | return volume; 51 | } 52 | 53 | public void setVolume(BigDecimal volume) { 54 | this.volume = volume; 55 | } 56 | 57 | public BigDecimal getLast() { 58 | return last; 59 | } 60 | 61 | public void setLast(BigDecimal last) { 62 | this.last = last; 63 | } 64 | 65 | public BigDecimal getBaseVolume() { 66 | return baseVolume; 67 | } 68 | 69 | public void setBaseVolume(BigDecimal baseVolume) { 70 | this.baseVolume = baseVolume; 71 | } 72 | 73 | 74 | public BigDecimal getBid() { 75 | return bid; 76 | } 77 | 78 | public void setBid(BigDecimal bid) { 79 | this.bid = bid; 80 | } 81 | 82 | public BigDecimal getAsk() { 83 | return ask; 84 | } 85 | 86 | public void setAsk(BigDecimal ask) { 87 | this.ask = ask; 88 | } 89 | 90 | public Integer getOpenBuyOrders() { 91 | return openBuyOrders; 92 | } 93 | 94 | public void setOpenBuyOrders(Integer openBuyOrders) { 95 | this.openBuyOrders = openBuyOrders; 96 | } 97 | 98 | public Integer getOpenSellOrders() { 99 | return openSellOrders; 100 | } 101 | 102 | public void setOpenSellOrders(Integer openSellOrders) { 103 | this.openSellOrders = openSellOrders; 104 | } 105 | 106 | public BigDecimal getPrevDay() { 107 | return prevDay; 108 | } 109 | 110 | public void setPrevDay(BigDecimal prevDay) { 111 | this.prevDay = prevDay; 112 | } 113 | 114 | public LocalDateTime getTimeStamp() { 115 | return timeStamp; 116 | } 117 | 118 | public void setTimeStamp(LocalDateTime timeStamp) { 119 | this.timeStamp = timeStamp; 120 | } 121 | 122 | public LocalDateTime getCreated() { 123 | return created; 124 | } 125 | 126 | public void setCreated(LocalDateTime created) { 127 | this.created = created; 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/publicapi/OrderBook.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.publicapi; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author contact@elbatya.de 7 | */ 8 | public class OrderBook { 9 | 10 | private List buy; 11 | private List sell; 12 | 13 | public List getBuy() { 14 | return buy; 15 | } 16 | 17 | public void setBuy(List buy) { 18 | this.buy = buy; 19 | } 20 | 21 | public List getSell() { 22 | return sell; 23 | } 24 | 25 | public void setSell(List sell) { 26 | this.sell = sell; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/publicapi/OrderBookEntry.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.publicapi; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * @author contact@elbatya.de 7 | */ 8 | public class OrderBookEntry { 9 | 10 | private BigDecimal Quantity; 11 | private BigDecimal Rate; 12 | 13 | public BigDecimal getQuantity() { 14 | return Quantity; 15 | } 16 | 17 | public void setQuantity(BigDecimal quantity) { 18 | Quantity = quantity; 19 | } 20 | 21 | public BigDecimal getRate() { 22 | return Rate; 23 | } 24 | 25 | public void setRate(BigDecimal rate) { 26 | Rate = rate; 27 | } 28 | } -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/api/model/publicapi/Ticker.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api.model.publicapi; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * @author contact@elbatya.de 7 | */ 8 | public class Ticker { 9 | 10 | private BigDecimal bid; 11 | private BigDecimal ask; 12 | private BigDecimal last; 13 | 14 | public BigDecimal getBid() { 15 | return bid; 16 | } 17 | 18 | public void setBid(BigDecimal bid) { 19 | this.bid = bid; 20 | } 21 | 22 | public BigDecimal getAsk() { 23 | return ask; 24 | } 25 | 26 | public void setAsk(BigDecimal ask) { 27 | this.ask = ask; 28 | } 29 | 30 | public BigDecimal getLast() { 31 | return last; 32 | } 33 | 34 | public void setLast(BigDecimal last) { 35 | this.last = last; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/config/ApiBuilderFactory.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.config; 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; 4 | import de.elbatya.cryptocoins.bittrexclient.util.ApiKeySigningUtil; 5 | import feign.Feign; 6 | import feign.RequestInterceptor; 7 | import feign.jackson.JacksonDecoder; 8 | import feign.jackson.JacksonEncoder; 9 | 10 | import javax.annotation.Nullable; 11 | 12 | /** 13 | * @author contact@elbatya.de 14 | */ 15 | public class ApiBuilderFactory { 16 | 17 | private String baseUrl; 18 | 19 | public ApiBuilderFactory(String baseUrl) { 20 | this.baseUrl = baseUrl; 21 | } 22 | 23 | public Feign.Builder createApiBuilder(){ 24 | return createApiBuilder(null); 25 | } 26 | 27 | 28 | public Feign.Builder createApiBuilder(@Nullable ApiCredentials credentials){ 29 | ObjectMapper mapper = ObjectMapperConfigurer.configure(new ObjectMapper()); 30 | 31 | Feign.Builder apiBuilder = Feign.builder() 32 | .encoder(new JacksonEncoder()) 33 | .decoder(new JacksonDecoder(mapper)); 34 | 35 | signRequestsIfCredentialsNotNull(apiBuilder, credentials); 36 | 37 | return apiBuilder; 38 | } 39 | 40 | private void signRequestsIfCredentialsNotNull(Feign.Builder builder, @Nullable ApiCredentials credentials){ 41 | if (credentials != null) { 42 | RequestInterceptor signAllRequests = requestTemplate -> { 43 | 44 | requestTemplate.query("apikey", credentials.getKey()); 45 | requestTemplate.query("nonce", ApiKeySigningUtil.createNonce()); 46 | 47 | String requestUrl = baseUrl+requestTemplate.request().url(); 48 | String sign = ApiKeySigningUtil.createSign(requestUrl, credentials.getSecret()); 49 | requestTemplate.header("apisign", sign); 50 | }; 51 | 52 | builder.requestInterceptor(signAllRequests); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/config/ApiCredentials.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.config; 2 | 3 | /** 4 | * @author contact@elbatya.de 5 | */ 6 | public class ApiCredentials { 7 | 8 | private String key; 9 | private String secret; 10 | 11 | public ApiCredentials() { 12 | } 13 | 14 | public ApiCredentials(String key, String secret) { 15 | this.key = key; 16 | this.secret = secret; 17 | } 18 | 19 | public String getKey() { 20 | return key; 21 | } 22 | 23 | public void setKey(String key) { 24 | this.key = key; 25 | } 26 | 27 | public String getSecret() { 28 | return secret; 29 | } 30 | 31 | public void setSecret(String secret) { 32 | this.secret = secret; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/config/ObjectMapperConfigurer.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.config; 2 | 3 | 4 | import com.fasterxml.jackson.databind.DeserializationFeature; 5 | import com.fasterxml.jackson.databind.MapperFeature; 6 | import com.fasterxml.jackson.databind.ObjectMapper; 7 | import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; 8 | import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; 9 | import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; 10 | 11 | /** 12 | * @author contact@elbatya.de 13 | */ 14 | public class ObjectMapperConfigurer { 15 | 16 | public static ObjectMapper configure(ObjectMapper mapper){ 17 | 18 | return mapper 19 | .registerModule(new ParameterNamesModule()) 20 | .registerModule(new Jdk8Module()) 21 | .registerModule(new JavaTimeModule()) 22 | .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true) 23 | .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/de/elbatya/cryptocoins/bittrexclient/util/ApiKeySigningUtil.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.util; 2 | 3 | import javax.crypto.Mac; 4 | import javax.crypto.spec.SecretKeySpec; 5 | import java.security.InvalidKeyException; 6 | import java.security.NoSuchAlgorithmException; 7 | import java.security.SecureRandom; 8 | import java.util.Base64; 9 | 10 | /** 11 | * @author contact@elbatya.de 12 | */ 13 | public class ApiKeySigningUtil { 14 | 15 | private static final String ALGORITHM = "HmacSHA512"; 16 | private static final int NONCE_BYTE_LENGTH = 32; 17 | 18 | private static SecureRandom random = new SecureRandom(); 19 | 20 | public static String createNonce(){ 21 | byte[] bytes = new byte[NONCE_BYTE_LENGTH]; 22 | random.nextBytes(bytes); 23 | return Base64.getEncoder().encodeToString(bytes); 24 | } 25 | 26 | public static String createSign(String uri, String apiSecret){ 27 | byte[] signBytes = calculateSignBytes(uri, apiSecret); 28 | return bytesToHexString(signBytes); 29 | } 30 | 31 | private static byte[] calculateSignBytes(String uri, String secret) { 32 | 33 | try { 34 | Mac mac = Mac.getInstance(ALGORITHM); 35 | SecretKeySpec secretKeySpec = new SecretKeySpec(secret.getBytes(), ALGORITHM); 36 | mac.init(secretKeySpec); 37 | return mac.doFinal(uri.getBytes()); 38 | 39 | } catch (NoSuchAlgorithmException | InvalidKeyException e) { 40 | throw new RuntimeException(e); 41 | } 42 | 43 | } 44 | 45 | private static String bytesToHexString(byte[] bytes){ 46 | StringBuilder stringBuilder = new StringBuilder(); 47 | for (byte b : bytes) { 48 | stringBuilder.append(String.format("%02x", b)); 49 | } 50 | return stringBuilder.toString(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/test/java/de/elbatya/cryptocoins/bittrexclient/api/BittrexAccountApiTest.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api; 2 | 3 | import com.fasterxml.jackson.databind.DeserializationFeature; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import de.elbatya.cryptocoins.bittrexclient.api.model.accountapi.*; 6 | import de.elbatya.cryptocoins.bittrexclient.api.model.common.ApiResult; 7 | import de.elbatya.cryptocoins.bittrexclient.config.ObjectMapperConfigurer; 8 | import feign.Feign; 9 | import feign.jackson.JacksonDecoder; 10 | import feign.jackson.JacksonEncoder; 11 | import feign.mock.HttpMethod; 12 | import feign.mock.MockClient; 13 | import feign.mock.MockTarget; 14 | import org.junit.Before; 15 | import org.junit.Test; 16 | 17 | import java.io.InputStream; 18 | import java.math.BigDecimal; 19 | import java.util.List; 20 | 21 | import static org.assertj.core.api.Assertions.assertThat; 22 | 23 | /** 24 | * @author contact@elbatya.de 25 | */ 26 | public class BittrexAccountApiTest { 27 | 28 | public static final String MARKET = "btc-eth"; 29 | public static final String CURRENCY = "btc"; 30 | 31 | private MockClient mockClient; 32 | private BittrexAccountApi api; 33 | 34 | private InputStream load(String file) { 35 | return getClass().getClassLoader().getResourceAsStream("accountapi/"+file); 36 | } 37 | 38 | @Before 39 | public void setUp() throws Exception { 40 | ClassLoader cl = getClass().getClassLoader(); 41 | 42 | mockClient = new MockClient() 43 | .ok(HttpMethod.GET, "/account/getbalances", load("getbalances.json")) 44 | .ok(HttpMethod.GET, "/account/getbalance?currency=btc", load("getbalance.json")) 45 | .ok(HttpMethod.GET, "/account/getdepositaddress?currency=btc", load("getdepositaddress.json")) 46 | .ok(HttpMethod.GET, "/account/getdeposithistory", load("getdeposithistory.json")) 47 | .ok(HttpMethod.GET, "/account/getdeposithistory?currency=btc", load("getdeposithistory.json")) 48 | .ok(HttpMethod.GET, "/account/getorder?uuid=1234", load("getorder.json")) 49 | .ok(HttpMethod.GET, "/account/getorderhistory", load("getorderhistory.json")) 50 | .ok(HttpMethod.GET, "/account/getorderhistory?market=btc-eth", load("getorderhistoryformarket.json")) 51 | .ok(HttpMethod.GET, "/account/getwithdrawalhistory?currency=btc", load("getwithdrawalhistory.json")) 52 | .ok(HttpMethod.GET, "/account/getwithdrawalhistory", load("getwithdrawalhistory.json")) 53 | .ok(HttpMethod.GET, "/account/withdraw?currency=btc&quantity=11.0&address=BTC_ADDRESS", load("withdraw.json")) 54 | .ok(HttpMethod.GET, "/account/withdraw?currency=btc&quantity=11.0&address=BTC_ADDRESS&paymentid=note", load("withdraw.json")) 55 | ; 56 | 57 | ObjectMapper strictMapper = ObjectMapperConfigurer.configure(new ObjectMapper()); 58 | strictMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); 59 | 60 | api = Feign.builder() 61 | .encoder(new JacksonEncoder()) 62 | .decoder(new JacksonDecoder(strictMapper)) 63 | .client(mockClient) 64 | .target(new MockTarget<>(BittrexAccountApi.class)); 65 | } 66 | 67 | @Test 68 | public void getBalances() throws Exception { 69 | ApiResult> balances = api.getBalances(); 70 | assertThat(balances).isNotNull(); 71 | assertThat(balances.isSuccess()).isTrue(); 72 | assertThat(balances.getResult()).isNotEmpty(); 73 | } 74 | 75 | @Test 76 | public void getBalance() throws Exception { 77 | ApiResult balance = api.getBalance(CURRENCY); 78 | assertThat(balance).isNotNull(); 79 | assertThat(balance.isSuccess()).isTrue(); 80 | assertThat(balance.getResult()).isNotNull(); 81 | } 82 | 83 | @Test 84 | public void getDepositAddress() throws Exception { 85 | ApiResult depositAddress = api.getDepositAddress(CURRENCY); 86 | assertThat(depositAddress).isNotNull(); 87 | assertThat(depositAddress.isSuccess()).isTrue(); 88 | assertThat(depositAddress.getResult()).isNotNull(); 89 | } 90 | 91 | @Test 92 | public void getOrder() throws Exception { 93 | ApiResult order = api.getOrder("1234"); 94 | assertThat(order).isNotNull(); 95 | assertThat(order.isSuccess()).isTrue(); 96 | assertThat(order.getResult()).isNotNull(); 97 | } 98 | 99 | @Test 100 | public void getOrderHistory() throws Exception { 101 | ApiResult> orderHistory = api.getOrderHistory(); 102 | assertThat(orderHistory).isNotNull(); 103 | assertThat(orderHistory.isSuccess()).isTrue(); 104 | assertThat(orderHistory.getResult()).isNotEmpty(); 105 | } 106 | 107 | @Test 108 | public void getOrderHistoryForMarket() throws Exception { 109 | ApiResult> orderHistory = api.getOrderHistory(MARKET); 110 | assertThat(orderHistory).isNotNull(); 111 | assertThat(orderHistory.isSuccess()).isTrue(); 112 | assertThat(orderHistory.getResult()).isNotEmpty(); 113 | } 114 | 115 | @Test 116 | public void getWithdrawalHistory() throws Exception { 117 | ApiResult> orderHistory = api.getWithdrawalHistory(); 118 | assertThat(orderHistory).isNotNull(); 119 | assertThat(orderHistory.isSuccess()).isTrue(); 120 | assertThat(orderHistory.getResult()).isNotEmpty(); 121 | } 122 | 123 | @Test 124 | public void getWithdrawalHistoryForMarket() throws Exception { 125 | ApiResult> orderHistory = api.getWithdrawalHistory(CURRENCY); 126 | assertThat(orderHistory).isNotNull(); 127 | assertThat(orderHistory.isSuccess()).isTrue(); 128 | assertThat(orderHistory.getResult()).isNotEmpty(); 129 | } 130 | 131 | @Test 132 | public void getDepositHistory() throws Exception { 133 | ApiResult> depositHistory = api.getDepositHistory(); 134 | assertThat(depositHistory).isNotNull(); 135 | assertThat(depositHistory.isSuccess()).isTrue(); 136 | assertThat(depositHistory.getResult()).isNotEmpty(); 137 | } 138 | 139 | @Test 140 | public void getDepositHistoryForCurrency() throws Exception { 141 | ApiResult> depositHistory = api.getDepositHistory(CURRENCY); 142 | assertThat(depositHistory).isNotNull(); 143 | assertThat(depositHistory.isSuccess()).isTrue(); 144 | assertThat(depositHistory.getResult()).isNotEmpty(); 145 | } 146 | 147 | 148 | @Test 149 | public void withdraw() throws Exception { 150 | ApiResult depositHistory = api.withdraw( 151 | CURRENCY, 152 | BigDecimal.valueOf(11.0), 153 | "BTC_ADDRESS"); 154 | assertThat(depositHistory).isNotNull(); 155 | assertThat(depositHistory.isSuccess()).isTrue(); 156 | assertThat(depositHistory.getResult()).isNotNull(); 157 | } 158 | 159 | 160 | @Test 161 | public void withdrawWithPaymentId() throws Exception { 162 | ApiResult depositHistory = api.withdraw( 163 | CURRENCY, 164 | BigDecimal.valueOf(11.0), 165 | "BTC_ADDRESS", 166 | "note" 167 | ); 168 | assertThat(depositHistory).isNotNull(); 169 | assertThat(depositHistory.isSuccess()).isTrue(); 170 | assertThat(depositHistory.getResult()).isNotNull(); 171 | } 172 | 173 | 174 | 175 | } -------------------------------------------------------------------------------- /src/test/java/de/elbatya/cryptocoins/bittrexclient/api/BittrexMarketApiTest.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api; 2 | 3 | import com.fasterxml.jackson.databind.DeserializationFeature; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import de.elbatya.cryptocoins.bittrexclient.api.model.common.ApiResult; 6 | import de.elbatya.cryptocoins.bittrexclient.api.model.marketapi.OpenOrder; 7 | import de.elbatya.cryptocoins.bittrexclient.api.model.marketapi.OrderCreated; 8 | import de.elbatya.cryptocoins.bittrexclient.config.ObjectMapperConfigurer; 9 | import feign.Feign; 10 | import feign.jackson.JacksonDecoder; 11 | import feign.jackson.JacksonEncoder; 12 | import feign.mock.HttpMethod; 13 | import feign.mock.MockClient; 14 | import feign.mock.MockTarget; 15 | import org.junit.Before; 16 | import org.junit.Test; 17 | 18 | import java.io.InputStream; 19 | import java.math.BigDecimal; 20 | import java.util.List; 21 | 22 | import static org.assertj.core.api.Assertions.assertThat; 23 | 24 | /** 25 | * @author contact@elbatya.de 26 | */ 27 | public class BittrexMarketApiTest { 28 | 29 | 30 | public static final String MARKET = "btc-eth"; 31 | private MockClient mockClient; 32 | private BittrexMarketApi api; 33 | 34 | private InputStream load(String file) { 35 | return getClass().getClassLoader().getResourceAsStream("marketapi/"+file); 36 | } 37 | 38 | @Before 39 | public void setUp() throws Exception { 40 | ClassLoader cl = getClass().getClassLoader(); 41 | 42 | mockClient = new MockClient() 43 | .ok(HttpMethod.GET, "/market/getopenorders", load("getopenorders.json")) 44 | .ok(HttpMethod.GET, "/market/getopenorders?market=btc-eth", load("getopenorders.json")) 45 | .ok(HttpMethod.GET, "/market/cancel?uuid=1234", load("cancelorder.json")) 46 | .ok(HttpMethod.GET, "/market/selllimit?market=btc-eth&quantity=1&rate=2", load("selllimit.json")) 47 | .ok(HttpMethod.GET, "/market/buylimit?market=btc-eth&quantity=3&rate=4", load("buylimit.json")); 48 | 49 | ObjectMapper strictMapper = ObjectMapperConfigurer.configure(new ObjectMapper()); 50 | strictMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); 51 | 52 | api = Feign.builder() 53 | .encoder(new JacksonEncoder()) 54 | .decoder(new JacksonDecoder(strictMapper)) 55 | .client(mockClient) 56 | .target(new MockTarget<>(BittrexMarketApi.class)); 57 | } 58 | 59 | @Test 60 | public void getOpenOrders() throws Exception { 61 | ApiResult> openOrders = api.getOpenOrders(); 62 | assertThat(openOrders).isNotNull(); 63 | assertThat(openOrders.isSuccess()).isTrue(); 64 | assertThat(openOrders.getResult()).isNotEmpty(); 65 | } 66 | 67 | @Test 68 | public void getOpenOrdersForMarket() throws Exception { 69 | ApiResult> openOrders = api.getOpenOrders(MARKET); 70 | assertThat(openOrders).isNotNull(); 71 | assertThat(openOrders.isSuccess()).isTrue(); 72 | assertThat(openOrders.getResult()).isNotEmpty(); 73 | } 74 | 75 | @Test 76 | public void cancelOrder() throws Exception { 77 | ApiResult openOrders = api.cancelOrder("1234"); 78 | assertThat(openOrders).isNotNull(); 79 | assertThat(openOrders.isSuccess()).isTrue(); 80 | } 81 | 82 | @Test 83 | public void sellLimit() throws Exception { 84 | ApiResult sellOrder = api.sellLimit(MARKET, BigDecimal.ONE, BigDecimal.valueOf(2)); 85 | assertThat(sellOrder).isNotNull(); 86 | assertThat(sellOrder.isSuccess()).isTrue(); 87 | assertThat(sellOrder.unwrap().getUuid()).isEqualTo("selluuid"); 88 | } 89 | 90 | @Test 91 | public void buyLimit() throws Exception { 92 | ApiResult buyOrder = api.buyLimit(MARKET, BigDecimal.valueOf(3), BigDecimal.valueOf(4)); 93 | assertThat(buyOrder).isNotNull(); 94 | assertThat(buyOrder.isSuccess()).isTrue(); 95 | assertThat(buyOrder.unwrap().getUuid()).isEqualTo("buyuuid"); 96 | } 97 | 98 | 99 | } -------------------------------------------------------------------------------- /src/test/java/de/elbatya/cryptocoins/bittrexclient/api/BittrexPublicApiTest.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.api; 2 | 3 | import com.fasterxml.jackson.databind.DeserializationFeature; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import de.elbatya.cryptocoins.bittrexclient.api.model.common.ApiResult; 6 | import de.elbatya.cryptocoins.bittrexclient.api.model.publicapi.*; 7 | import de.elbatya.cryptocoins.bittrexclient.config.ObjectMapperConfigurer; 8 | import feign.Feign; 9 | import feign.jackson.JacksonDecoder; 10 | import feign.jackson.JacksonEncoder; 11 | import feign.mock.HttpMethod; 12 | import feign.mock.MockClient; 13 | import feign.mock.MockTarget; 14 | import org.junit.Before; 15 | import org.junit.Test; 16 | 17 | import java.io.InputStream; 18 | import java.util.List; 19 | 20 | import static org.assertj.core.api.Assertions.assertThat; 21 | 22 | 23 | /** 24 | * @author contact@elbatya.de 25 | */ 26 | public class BittrexPublicApiTest { 27 | 28 | private MockClient mockClient; 29 | private BittrexPublicApi api; 30 | private final static String MARKET = "btc-eth"; 31 | 32 | private InputStream load(String file) { 33 | return getClass().getClassLoader().getResourceAsStream("publicapi/"+file); 34 | } 35 | 36 | @Before 37 | public void setUp() throws Exception { 38 | 39 | ClassLoader cl = getClass().getClassLoader(); 40 | 41 | mockClient = new MockClient() 42 | .ok(HttpMethod.GET, "/public/getmarkets", load("getmarkets.json")) 43 | .ok(HttpMethod.GET, "/public/getcurrencies", load("getcurrencies.json")) 44 | .ok(HttpMethod.GET, "/public/getticker?market=btc-eth", load("getticker.json")) 45 | .ok(HttpMethod.GET, "/public/getmarketsummaries", load("getmarketsummaries.json")) 46 | .ok(HttpMethod.GET, "/public/getmarketsummary?market=btc-eth", load("getmarketsummary.json")) 47 | .ok(HttpMethod.GET, "/public/getorderbook?type=both&market=btc-eth", load("getorderbookboth.json")) 48 | .ok(HttpMethod.GET, "/public/getorderbook?type=both&market=btc-eth&depth=10", load("getorderbookboth.json")) 49 | .ok(HttpMethod.GET, "/public/getorderbook?type=sell&market=btc-eth", load("getorderbooksell.json")) 50 | .ok(HttpMethod.GET, "/public/getorderbook?type=sell&market=btc-eth&depth=10", load("getorderbooksell.json")) 51 | .ok(HttpMethod.GET, "/public/getorderbook?type=buy&market=btc-eth", load("getorderbookbuy.json")) 52 | .ok(HttpMethod.GET, "/public/getorderbook?type=buy&market=btc-eth&depth=10", load("getorderbookbuy.json")) 53 | .ok(HttpMethod.GET, "/public/getmarkethistory?market=btc-eth", load("getmarkethistory.json")); 54 | 55 | 56 | ObjectMapper strictMapper = ObjectMapperConfigurer.configure(new ObjectMapper()); 57 | strictMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); 58 | 59 | api = Feign.builder() 60 | .encoder(new JacksonEncoder()) 61 | .decoder(new JacksonDecoder(strictMapper)) 62 | .client(mockClient) 63 | .target(new MockTarget<>(BittrexPublicApi.class)); 64 | } 65 | 66 | @Test 67 | public void getMarkets() throws Exception { 68 | ApiResult> markets = api.getMarkets(); 69 | assertThat(markets).isNotNull(); 70 | assertThat(markets.isSuccess()).isTrue(); 71 | assertThat(markets.getResult()).isNotEmpty(); 72 | } 73 | 74 | @Test 75 | public void getCurrencies() throws Exception { 76 | ApiResult> currencies = api.getCurrencies(); 77 | assertThat(currencies).isNotNull(); 78 | assertThat(currencies.isSuccess()).isTrue(); 79 | assertThat(currencies.getResult()).isNotEmpty(); 80 | } 81 | 82 | @Test 83 | public void getTicker() throws Exception { 84 | ApiResult ticker = api.getTicker(MARKET); 85 | assertThat(ticker).isNotNull(); 86 | assertThat(ticker.isSuccess()).isTrue(); 87 | assertThat(ticker.getResult()).isNotNull(); 88 | } 89 | 90 | @Test 91 | public void getMarketSummaries() throws Exception { 92 | ApiResult> marketSummaries = api.getMarketSummaries(); 93 | assertThat(marketSummaries).isNotNull(); 94 | assertThat(marketSummaries.isSuccess()).isTrue(); 95 | assertThat(marketSummaries.getResult()).isNotEmpty(); 96 | } 97 | 98 | @Test 99 | public void getMarketSummary() throws Exception { 100 | ApiResult> marketSummary = api.getMarketSummary(MARKET); 101 | assertThat(marketSummary).isNotNull(); 102 | assertThat(marketSummary.isSuccess()).isTrue(); 103 | assertThat(marketSummary.getResult()).isNotEmpty(); 104 | } 105 | 106 | @Test 107 | public void getOrderBook() throws Exception { 108 | ApiResult orderBook = api.getOrderBook(MARKET); 109 | assertThat(orderBook).isNotNull(); 110 | assertThat(orderBook.isSuccess()).isTrue(); 111 | assertThat(orderBook.getResult()).isNotNull(); 112 | assertThat(orderBook.getResult().getBuy()).isNotEmpty(); 113 | assertThat(orderBook.getResult().getSell()).isNotEmpty(); 114 | } 115 | 116 | @Test 117 | public void getOrderBookWithDepth() throws Exception { 118 | ApiResult orderBook = api.getOrderBook(MARKET, 10); 119 | assertThat(orderBook).isNotNull(); 120 | assertThat(orderBook.isSuccess()).isTrue(); 121 | assertThat(orderBook.getResult()).isNotNull(); 122 | } 123 | 124 | @Test 125 | public void getOrderBookForSell() throws Exception { 126 | ApiResult> orderBookForSell = api.getOrderBookForSell(MARKET); 127 | assertThat(orderBookForSell).isNotNull(); 128 | assertThat(orderBookForSell.isSuccess()).isTrue(); 129 | assertThat(orderBookForSell.getResult()).isNotEmpty(); 130 | } 131 | 132 | @Test 133 | public void getOrderBookForSellWithDepth() throws Exception { 134 | ApiResult> orderBookForSell = api.getOrderBookForSell(MARKET, 10); 135 | assertThat(orderBookForSell).isNotNull(); 136 | assertThat(orderBookForSell.isSuccess()).isTrue(); 137 | assertThat(orderBookForSell.getResult()).isNotEmpty(); 138 | } 139 | 140 | @Test 141 | public void getOrderBookForBuy() throws Exception { 142 | ApiResult> orderBookForBuy = api.getOrderBookForBuy(MARKET); 143 | assertThat(orderBookForBuy).isNotNull(); 144 | assertThat(orderBookForBuy.isSuccess()).isTrue(); 145 | assertThat(orderBookForBuy.getResult()).isNotEmpty(); 146 | } 147 | 148 | @Test 149 | public void getOrderBookForBuyWithDepth() throws Exception { 150 | ApiResult> orderBookForBuy = api.getOrderBookForBuy(MARKET, 10); 151 | assertThat(orderBookForBuy).isNotNull(); 152 | assertThat(orderBookForBuy.isSuccess()).isTrue(); 153 | assertThat(orderBookForBuy.getResult()).isNotEmpty(); 154 | } 155 | 156 | @Test 157 | public void getMarketHistory() throws Exception { 158 | ApiResult> marketHistory = api.getMarketHistory(MARKET); 159 | assertThat(marketHistory).isNotNull(); 160 | assertThat(marketHistory.isSuccess()).isTrue(); 161 | assertThat(marketHistory.getResult()).isNotEmpty(); 162 | } 163 | 164 | } -------------------------------------------------------------------------------- /src/test/java/de/elbatya/cryptocoins/bittrexclient/util/ApiKeySigningUtilTest.java: -------------------------------------------------------------------------------- 1 | package de.elbatya.cryptocoins.bittrexclient.util; 2 | 3 | import org.junit.Test; 4 | 5 | import java.util.stream.IntStream; 6 | 7 | import static org.assertj.core.api.Assertions.assertThat; 8 | 9 | 10 | /** 11 | * @author contact@elbatya.de 12 | */ 13 | public class ApiKeySigningUtilTest { 14 | 15 | @Test 16 | public void createNonce() throws Exception { 17 | long count = IntStream.range(0,100000) 18 | .mapToObj(i -> ApiKeySigningUtil.createNonce()) 19 | .distinct() 20 | .count(); 21 | 22 | assertThat(count).isEqualTo(100000L); 23 | } 24 | 25 | @Test 26 | public void createSign() throws Exception { 27 | String sign = ApiKeySigningUtil.createSign("test","secret"); 28 | String expectedSign = 29 | "f8a4f0a209167bc192a1bffaa01ecdb0" + 30 | "9e06c57f96530d92ec9ccea0090d290e" + 31 | "55071306d6b654f26ae0c8721f7e48a2" + 32 | "d7130b881151f2cec8d61d941a6be88a"; 33 | 34 | assertThat(sign).isEqualTo(expectedSign); 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/getbalance.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": { 5 | "Currency": "BTC", 6 | "Balance": 0.00000038, 7 | "Available": 0.00000038, 8 | "Pending": 0.00000000, 9 | "CryptoAddress": "0000000AAAA00000AAA00000AAA0000AAA" 10 | 11 | } 12 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/getbalances.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": [ 5 | { 6 | "Currency": "BTC", 7 | "Balance": 0.00000038, 8 | "Available": 0.00000038, 9 | "Pending": 0.00000000, 10 | "CryptoAddress": "0000000AAAA00000AAA00000AAA0000AAA" 11 | }, 12 | { 13 | "Currency": "ETH", 14 | "Balance": 0.00000000, 15 | "Available": 0.00000000, 16 | "Pending": 0.00000000, 17 | "CryptoAddress": "0x000000AAAA00000AAA00000AAA0000AAA" 18 | }, 19 | { 20 | "Currency": "VRM", 21 | "Balance": 0.00000000, 22 | "Available": 0.00000000, 23 | "Pending": 0.00000000, 24 | "CryptoAddress": "0000000AAAA00000AAA00000AAA0000AAA" 25 | }, 26 | { 27 | "Currency": "WINGS", 28 | "Balance": 188.35687667, 29 | "Available": 158.35687667, 30 | "Pending": 0.00000000, 31 | "CryptoAddress": null 32 | } 33 | ] 34 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/getdepositaddress.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": { 5 | "Currency": "BTC", 6 | "Address": "0000000AAAA00000AAA00000AAA0000AAA" 7 | } 8 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/getdeposithistory.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": [ 5 | { 6 | "Id": 19418817, 7 | "Amount": 0.05929229, 8 | "Currency": "BTC", 9 | "Confirmations": 2, 10 | "LastUpdated": "2017-06-06T21:26:52.423", 11 | "TxId": "4bf29f18a6364691000254eb6c3485b8555a6fec4bf2dd440d20ecd41eb34c0d", 12 | "CryptoAddress": "0000000AAAA00000AAA00000AAA0000AAA" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/getorder.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": { 5 | "AccountId": null, 6 | "OrderUuid": "aaaaaaaa-cbe8-4c57-b9de-c71194db3bd1", 7 | "Exchange": "BTC-WINGS", 8 | "Type": "LIMIT_SELL", 9 | "Quantity": 30.00000000, 10 | "QuantityRemaining": 30.00000000, 11 | "Limit": 0.00050000, 12 | "Reserved": 30.00000000, 13 | "ReserveRemaining": 30.00000000, 14 | "CommissionReserved": 0.00000000, 15 | "CommissionReserveRemaining": 0.00000000, 16 | "CommissionPaid": 0.00000000, 17 | "Price": 0.00000000, 18 | "PricePerUnit": null, 19 | "Opened": "2017-06-09T22:45:26.743", 20 | "Closed": null, 21 | "IsOpen": true, 22 | "Sentinel": "aaaaaaa-c6c5-4760-8fb1-3f5645d15893", 23 | "CancelInitiated": false, 24 | "ImmediateOrCancel": false, 25 | "IsConditional": true, 26 | "Condition": "GREATER_THAN", 27 | "ConditionTarget": 0.00050000 28 | } 29 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/getorderhistory.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": [ 5 | { 6 | "OrderUuid": "aaaaaaaa-bbbb-cccc-dddd-cccccccccccc", 7 | "Exchange": "BTC-WINGS", 8 | "TimeStamp": "2017-06-06T21:59:40.713", 9 | "OrderType": "LIMIT_BUY", 10 | "Limit": 0.00031400, 11 | "Quantity": 188.35687667, 12 | "QuantityRemaining": 0.00000000, 13 | "Commission": 0.00014786, 14 | "Price": 0.05914405, 15 | "PricePerUnit": 0.00031399000000000000, 16 | "IsConditional": false, 17 | "Condition": "NONE", 18 | "ConditionTarget": null, 19 | "ImmediateOrCancel": false, 20 | "Closed": "2017-06-06T21:40:48.07" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/getorderhistoryformarket.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": [ 5 | { 6 | "OrderUuid": "aaaaaaaa-bbbb-cccc-dddd-cccccccccccc", 7 | "Exchange": "BTC-WINGS", 8 | "TimeStamp": "2017-06-06T21:59:40.713", 9 | "OrderType": "LIMIT_BUY", 10 | "Limit": 0.00031400, 11 | "Quantity": 123.35, 12 | "QuantityRemaining": 0.00000000, 13 | "Commission": 0.00014786, 14 | "Price": 0.05914405, 15 | "PricePerUnit": 0.00031199000000000000, 16 | "IsConditional": false, 17 | "Condition": "NONE", 18 | "ConditionTarget": null, 19 | "ImmediateOrCancel": false, 20 | "Closed": "2017-06-04T21:39:48.07" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/getwithdrawalhistory.json: -------------------------------------------------------------------------------- 1 | { 2 | "success" : true, 3 | "message" : "", 4 | "result" : [{ 5 | "PaymentUuid" : "aaaaaaaa-bbbb-cccc-dddd-cccccccccccc", 6 | "Currency" : "BTC", 7 | "Amount" : 1300000000, 8 | "Address" : "aaaaaFBdbB34rHj43x3NHS4onvw1GP23Au", 9 | "Opened" : "2014-06-01T04:24:37.217", 10 | "Authorized" : true, 11 | "PendingPayment" : false, 12 | "TxCost" : 0.00020000, 13 | "TxId" : null, 14 | "Canceled" : true, 15 | "InvalidAddress" : false 16 | }, { 17 | "PaymentUuid" : "aaaaaaaa-bbbb-cccc-dddd-ccccccccccce", 18 | "Currency" : "XC", 19 | "Amount" : 512.75325, 20 | "Address" : "XVnSMgAd7234iaegc4c9K23412RB235S5J", 21 | "Opened" : "2014-07-02T23:13:31.83", 22 | "Authorized" : true, 23 | "PendingPayment" : false, 24 | "TxCost" : 0.00002000, 25 | "TxId" : "b3a57234a71c7e56d02348e26bb1e9236732394f6ca2116476a569c1e84f6e", 26 | "Canceled" : false, 27 | "InvalidAddress" : false 28 | } 29 | ] 30 | } -------------------------------------------------------------------------------- /src/test/resources/accountapi/withdraw.json: -------------------------------------------------------------------------------- 1 | { 2 | "success" : true, 3 | "message" : "", 4 | "result" : { 5 | "uuid" : "68b5a16c-92de-11e3-ba3b-425861b86ab6" 6 | } 7 | } -------------------------------------------------------------------------------- /src/test/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | # Root logger option 2 | log4j.rootLogger=DEBUG, stdout 3 | 4 | # Direct log messages to stdout 5 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 6 | log4j.appender.stdout.Target=System.out 7 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 8 | log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n -------------------------------------------------------------------------------- /src/test/resources/marketapi/buylimit.json: -------------------------------------------------------------------------------- 1 | { 2 | "success" : true, 3 | "message" : "", 4 | "result" : { 5 | "uuid" : "buyuuid" 6 | } 7 | } -------------------------------------------------------------------------------- /src/test/resources/marketapi/cancelorder.json: -------------------------------------------------------------------------------- 1 | { 2 | "success" : true, 3 | "message" : "", 4 | "result" : null 5 | } -------------------------------------------------------------------------------- /src/test/resources/marketapi/getopenorders.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": [ 5 | { 6 | "Uuid": null, 7 | "OrderUuid": "12345t3n-nnnn-3333-2222-c11111111112", 8 | "Exchange": "BTC-ETH", 9 | "OrderType": "LIMIT_SELL", 10 | "Quantity": 20.00000000, 11 | "QuantityRemaining": 20.00000000, 12 | "Limit": 0.00050000, 13 | "CommissionPaid": 0.00000000, 14 | "Price": 0.00000000, 15 | "PricePerUnit": null, 16 | "Opened": "2017-06-03T22:15:26.743", 17 | "Closed": null, 18 | "CancelInitiated": false, 19 | "ImmediateOrCancel": false, 20 | "IsConditional": true, 21 | "Condition": "GREATER_THAN", 22 | "ConditionTarget": 0.00050000 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /src/test/resources/marketapi/selllimit.json: -------------------------------------------------------------------------------- 1 | { 2 | "success" : true, 3 | "message" : "", 4 | "result" : { 5 | "uuid" : "selluuid" 6 | } 7 | } -------------------------------------------------------------------------------- /src/test/resources/publicapi/getcurrencies.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": [ 5 | { 6 | "Currency": "BTC", 7 | "CurrencyLong": "Bitcoin", 8 | "MinConfirmation": 2, 9 | "TxFee": 0.001, 10 | "IsActive": true, 11 | "CoinType": "BITCOIN", 12 | "BaseAddress": "1N52wHoVR79PMDishab2XmRHsbekCdGquK", 13 | "Notice": null 14 | }, 15 | { 16 | "Currency": "LTC", 17 | "CurrencyLong": "Litecoin", 18 | "MinConfirmation": 6, 19 | "TxFee": 0.002, 20 | "IsActive": true, 21 | "CoinType": "BITCOIN", 22 | "BaseAddress": "LhyLNfBkoKshT7R8Pce6vkB9T2cP2o84hx", 23 | "Notice": null 24 | }, 25 | { 26 | "Currency": "DOGE", 27 | "CurrencyLong": "Dogecoin", 28 | "MinConfirmation": 6, 29 | "TxFee": 2, 30 | "IsActive": true, 31 | "CoinType": "BITCOIN", 32 | "BaseAddress": "D9GqmkGCpgtnXP7xMD78v9xfqeDkqBZBMT", 33 | "Notice": null 34 | }, 35 | { 36 | "Currency": "VTC", 37 | "CurrencyLong": "Vertcoin", 38 | "MinConfirmation": 6, 39 | "TxFee": 0.02, 40 | "IsActive": true, 41 | "CoinType": "BITCOIN", 42 | "BaseAddress": null, 43 | "Notice": null 44 | }, 45 | { 46 | "Currency": "PPC", 47 | "CurrencyLong": "Peercoin", 48 | "MinConfirmation": 6, 49 | "TxFee": 0.02, 50 | "IsActive": true, 51 | "CoinType": "BITCOIN", 52 | "BaseAddress": null, 53 | "Notice": null 54 | }, 55 | { 56 | "Currency": "FTC", 57 | "CurrencyLong": "Feathercoin", 58 | "MinConfirmation": 20, 59 | "TxFee": 0.2, 60 | "IsActive": true, 61 | "CoinType": "BITCOIN", 62 | "BaseAddress": null, 63 | "Notice": null 64 | }, 65 | { 66 | "Currency": "RDD", 67 | "CurrencyLong": "ReddCoin", 68 | "MinConfirmation": 20, 69 | "TxFee": 2, 70 | "IsActive": true, 71 | "CoinType": "BITCOIN", 72 | "BaseAddress": null, 73 | "Notice": null 74 | }, 75 | { 76 | "Currency": "NXT", 77 | "CurrencyLong": "NXT", 78 | "MinConfirmation": 8, 79 | "TxFee": 2, 80 | "IsActive": true, 81 | "CoinType": "NXT", 82 | "BaseAddress": "NXT-97H4-KRWL-A53G-7GVRG", 83 | "Notice": null 84 | }, 85 | { 86 | "Currency": "DASH", 87 | "CurrencyLong": "Dash", 88 | "MinConfirmation": 6, 89 | "TxFee": 0.002, 90 | "IsActive": true, 91 | "CoinType": "BITCOIN", 92 | "BaseAddress": null, 93 | "Notice": null 94 | }, 95 | { 96 | "Currency": "POT", 97 | "CurrencyLong": "PotCoin", 98 | "MinConfirmation": 20, 99 | "TxFee": 0.002, 100 | "IsActive": true, 101 | "CoinType": "BITCOIN", 102 | "BaseAddress": null, 103 | "Notice": null 104 | }, 105 | { 106 | "Currency": "BLK", 107 | "CurrencyLong": "BlackCoin", 108 | "MinConfirmation": 6, 109 | "TxFee": 0.02, 110 | "IsActive": true, 111 | "CoinType": "BITCOIN", 112 | "BaseAddress": null, 113 | "Notice": null 114 | }, 115 | { 116 | "Currency": "EMC2", 117 | "CurrencyLong": "Einsteinium", 118 | "MinConfirmation": 5, 119 | "TxFee": 0.2, 120 | "IsActive": false, 121 | "CoinType": "BITCOIN", 122 | "BaseAddress": null, 123 | "Notice": "Automated Maintenance." 124 | }, 125 | { 126 | "Currency": "MYR", 127 | "CurrencyLong": "MyriadCoin", 128 | "MinConfirmation": 20, 129 | "TxFee": 0.2, 130 | "IsActive": true, 131 | "CoinType": "BITCOIN", 132 | "BaseAddress": null, 133 | "Notice": null 134 | }, 135 | { 136 | "Currency": "AUR", 137 | "CurrencyLong": "AuroraCoin", 138 | "MinConfirmation": 5, 139 | "TxFee": 0.002, 140 | "IsActive": true, 141 | "CoinType": "BITCOIN", 142 | "BaseAddress": null, 143 | "Notice": null 144 | }, 145 | { 146 | "Currency": "UTC", 147 | "CurrencyLong": "UltraCoin", 148 | "MinConfirmation": 5, 149 | "TxFee": 0.02, 150 | "IsActive": true, 151 | "CoinType": "BITCOIN", 152 | "BaseAddress": null, 153 | "Notice": null 154 | }, 155 | { 156 | "Currency": "MZC", 157 | "CurrencyLong": "MazaCoin", 158 | "MinConfirmation": 6, 159 | "TxFee": 0.2, 160 | "IsActive": true, 161 | "CoinType": "BITCOIN", 162 | "BaseAddress": null, 163 | "Notice": null 164 | }, 165 | { 166 | "Currency": "EFL", 167 | "CurrencyLong": "ElectronicGulden", 168 | "MinConfirmation": 256, 169 | "TxFee": 0.2, 170 | "IsActive": false, 171 | "CoinType": "BITCOIN", 172 | "BaseAddress": null, 173 | "Notice": "Automated Maintenance." 174 | }, 175 | { 176 | "Currency": "GLD", 177 | "CurrencyLong": "GoldCoin", 178 | "MinConfirmation": 20, 179 | "TxFee": 0.0002, 180 | "IsActive": true, 181 | "CoinType": "BITCOIN", 182 | "BaseAddress": null, 183 | "Notice": null 184 | }, 185 | { 186 | "Currency": "FAIR", 187 | "CurrencyLong": "FairCoin", 188 | "MinConfirmation": 20, 189 | "TxFee": 0.02, 190 | "IsActive": true, 191 | "CoinType": "BITCOIN", 192 | "BaseAddress": null, 193 | "Notice": null 194 | }, 195 | { 196 | "Currency": "SLR", 197 | "CurrencyLong": "SolarCoin", 198 | "MinConfirmation": 20, 199 | "TxFee": 0.2, 200 | "IsActive": true, 201 | "CoinType": "BITCOIN", 202 | "BaseAddress": null, 203 | "Notice": null 204 | }, 205 | { 206 | "Currency": "PTC", 207 | "CurrencyLong": "PesetaCoin ", 208 | "MinConfirmation": 40, 209 | "TxFee": 0.002, 210 | "IsActive": true, 211 | "CoinType": "BITCOIN", 212 | "BaseAddress": null, 213 | "Notice": null 214 | }, 215 | { 216 | "Currency": "GRS", 217 | "CurrencyLong": "Groestlcoin", 218 | "MinConfirmation": 20, 219 | "TxFee": 0.2, 220 | "IsActive": true, 221 | "CoinType": "BITCOIN", 222 | "BaseAddress": null, 223 | "Notice": null 224 | }, 225 | { 226 | "Currency": "NLG", 227 | "CurrencyLong": "Gulden", 228 | "MinConfirmation": 10, 229 | "TxFee": 0.2, 230 | "IsActive": true, 231 | "CoinType": "BITCOINEX", 232 | "BaseAddress": null, 233 | "Notice": null 234 | }, 235 | { 236 | "Currency": "RBY", 237 | "CurrencyLong": "RubyCoin", 238 | "MinConfirmation": 10, 239 | "TxFee": 0.02, 240 | "IsActive": true, 241 | "CoinType": "BITCOIN", 242 | "BaseAddress": null, 243 | "Notice": null 244 | }, 245 | { 246 | "Currency": "XWC", 247 | "CurrencyLong": "WhiteCoin", 248 | "MinConfirmation": 20, 249 | "TxFee": 0.2, 250 | "IsActive": true, 251 | "CoinType": "BITCOIN", 252 | "BaseAddress": null, 253 | "Notice": null 254 | }, 255 | { 256 | "Currency": "MONA", 257 | "CurrencyLong": "MonaCoin", 258 | "MinConfirmation": 5, 259 | "TxFee": 0.2, 260 | "IsActive": true, 261 | "CoinType": "BITCOIN", 262 | "BaseAddress": null, 263 | "Notice": null 264 | }, 265 | { 266 | "Currency": "BITS", 267 | "CurrencyLong": "BitStarCoin", 268 | "MinConfirmation": 20, 269 | "TxFee": 0.002, 270 | "IsActive": true, 271 | "CoinType": "BITCOIN", 272 | "BaseAddress": null, 273 | "Notice": null 274 | }, 275 | { 276 | "Currency": "OC", 277 | "CurrencyLong": "OrangeCoin", 278 | "MinConfirmation": 20, 279 | "TxFee": 0.2, 280 | "IsActive": true, 281 | "CoinType": "BITCOIN", 282 | "BaseAddress": null, 283 | "Notice": null 284 | }, 285 | { 286 | "Currency": "THC", 287 | "CurrencyLong": "HempCoin", 288 | "MinConfirmation": 14, 289 | "TxFee": 0.2, 290 | "IsActive": true, 291 | "CoinType": "BITCOIN", 292 | "BaseAddress": "HCt5LgCkUX39ekrQdEHaN8Rp5AHZP3MKTj", 293 | "Notice": null 294 | }, 295 | { 296 | "Currency": "ENRG", 297 | "CurrencyLong": "EnergyCoin", 298 | "MinConfirmation": 20, 299 | "TxFee": 0.2, 300 | "IsActive": true, 301 | "CoinType": "BITCOIN", 302 | "BaseAddress": null, 303 | "Notice": null 304 | }, 305 | { 306 | "Currency": "SFR", 307 | "CurrencyLong": "SaffronCoin", 308 | "MinConfirmation": 20, 309 | "TxFee": 0.2, 310 | "IsActive": true, 311 | "CoinType": "BITCOIN", 312 | "BaseAddress": null, 313 | "Notice": null 314 | }, 315 | { 316 | "Currency": "ERC", 317 | "CurrencyLong": "EuropeCoin", 318 | "MinConfirmation": 20, 319 | "TxFee": 0.2, 320 | "IsActive": true, 321 | "CoinType": "BITCOIN", 322 | "BaseAddress": null, 323 | "Notice": null 324 | }, 325 | { 326 | "Currency": "NAUT", 327 | "CurrencyLong": "NautilusCoin", 328 | "MinConfirmation": 10, 329 | "TxFee": 2, 330 | "IsActive": true, 331 | "CoinType": "NXT_MS", 332 | "BaseAddress": "NXT-5BDK-RF4B-TAXN-92836", 333 | "Notice": null 334 | }, 335 | { 336 | "Currency": "VRC", 337 | "CurrencyLong": "VeriCoin", 338 | "MinConfirmation": 5, 339 | "TxFee": 0.0002, 340 | "IsActive": true, 341 | "CoinType": "BITCOIN", 342 | "BaseAddress": null, 343 | "Notice": null 344 | }, 345 | { 346 | "Currency": "CURE", 347 | "CurrencyLong": "CureCoin", 348 | "MinConfirmation": 6, 349 | "TxFee": 0.0002, 350 | "IsActive": true, 351 | "CoinType": "BITCOIN", 352 | "BaseAddress": null, 353 | "Notice": null 354 | }, 355 | { 356 | "Currency": "BLC", 357 | "CurrencyLong": "BlakeCoin", 358 | "MinConfirmation": 20, 359 | "TxFee": 0.2, 360 | "IsActive": true, 361 | "CoinType": "BITCOIN", 362 | "BaseAddress": null, 363 | "Notice": null 364 | }, 365 | { 366 | "Currency": "XC", 367 | "CurrencyLong": "XCurrency", 368 | "MinConfirmation": 20, 369 | "TxFee": 0.00002, 370 | "IsActive": true, 371 | "CoinType": "BITCOIN", 372 | "BaseAddress": null, 373 | "Notice": null 374 | }, 375 | { 376 | "Currency": "XDQ", 377 | "CurrencyLong": "Dirac", 378 | "MinConfirmation": 6, 379 | "TxFee": 0.02, 380 | "IsActive": true, 381 | "CoinType": "BITCOIN", 382 | "BaseAddress": null, 383 | "Notice": null 384 | }, 385 | { 386 | "Currency": "XBB", 387 | "CurrencyLong": "Boolberry", 388 | "MinConfirmation": 15, 389 | "TxFee": 0.0002, 390 | "IsActive": true, 391 | "CoinType": "CRYPTO_NOTE_PAYMENTID", 392 | "BaseAddress": "1AxQp4KrZbETL4HHgh5PksNsdcUregZoSEsWvYWgUaMAMayq1ddWdFrQEg5DfUod4Ud6Sz2z6vQMAcMWRdLDTSmy2Conhvk", 393 | "Notice": null 394 | }, 395 | { 396 | "Currency": "HYPER", 397 | "CurrencyLong": "Hyper", 398 | "MinConfirmation": 20, 399 | "TxFee": 0.02, 400 | "IsActive": true, 401 | "CoinType": "BITCOIN", 402 | "BaseAddress": null, 403 | "Notice": null 404 | }, 405 | { 406 | "Currency": "CCN", 407 | "CurrencyLong": "CannaCoin", 408 | "MinConfirmation": 10, 409 | "TxFee": 0.02, 410 | "IsActive": true, 411 | "CoinType": "BITCOIN", 412 | "BaseAddress": null, 413 | "Notice": null 414 | }, 415 | { 416 | "Currency": "XMR", 417 | "CurrencyLong": "Monero", 418 | "MinConfirmation": 8, 419 | "TxFee": 0.04, 420 | "IsActive": true, 421 | "CoinType": "CRYPTO_NOTE_PAYMENTID", 422 | "BaseAddress": "463tWEBn5XZJSxLU6uLQnQ2iY9xuNcDbjLSjkn3XAXHCbLrTTErJrBWYgHJQyrCwkNgYvyV3z8zctJLPCZy24jvb3NiTcTJ", 423 | "Notice": null 424 | }, 425 | { 426 | "Currency": "CLOAK", 427 | "CurrencyLong": "CloakCoin", 428 | "MinConfirmation": 5, 429 | "TxFee": 0.02, 430 | "IsActive": true, 431 | "CoinType": "BITCOIN", 432 | "BaseAddress": null, 433 | "Notice": null 434 | }, 435 | { 436 | "Currency": "BSD", 437 | "CurrencyLong": "BitSend", 438 | "MinConfirmation": 20, 439 | "TxFee": 0.002, 440 | "IsActive": true, 441 | "CoinType": "BITCOIN", 442 | "BaseAddress": null, 443 | "Notice": null 444 | }, 445 | { 446 | "Currency": "CRYPT", 447 | "CurrencyLong": "CryptCoin", 448 | "MinConfirmation": 15, 449 | "TxFee": 0.02, 450 | "IsActive": true, 451 | "CoinType": "BITCOIN", 452 | "BaseAddress": null, 453 | "Notice": null 454 | }, 455 | { 456 | "Currency": "START", 457 | "CurrencyLong": "StartCoin", 458 | "MinConfirmation": 120, 459 | "TxFee": 0.02, 460 | "IsActive": true, 461 | "CoinType": "BITCOIN", 462 | "BaseAddress": null, 463 | "Notice": null 464 | }, 465 | { 466 | "Currency": "KORE", 467 | "CurrencyLong": "KoreCoin", 468 | "MinConfirmation": 6, 469 | "TxFee": 0.02, 470 | "IsActive": true, 471 | "CoinType": "BITCOIN", 472 | "BaseAddress": null, 473 | "Notice": null 474 | }, 475 | { 476 | "Currency": "XDN", 477 | "CurrencyLong": "DigitalNote", 478 | "MinConfirmation": 15, 479 | "TxFee": 0.01, 480 | "IsActive": true, 481 | "CoinType": "CRYPTO_NOTE_PAYMENTID", 482 | "BaseAddress": "dddpmAwrXsaHVTBMMpsHfERfBsJ348x77QR6wpQFJ4zqDoXdF4vxJEK6ar8rmvrL6AZRWMh8AE1pDbWvY9EdpXN638mpYCJ62", 483 | "Notice": null 484 | }, 485 | { 486 | "Currency": "TRK", 487 | "CurrencyLong": "TruckCoin", 488 | "MinConfirmation": 20, 489 | "TxFee": 0.02, 490 | "IsActive": true, 491 | "CoinType": "BITCOIN", 492 | "BaseAddress": null, 493 | "Notice": null 494 | }, 495 | { 496 | "Currency": "QTL", 497 | "CurrencyLong": "Quatloo", 498 | "MinConfirmation": 6, 499 | "TxFee": 0.02, 500 | "IsActive": false, 501 | "CoinType": "BITCOIN", 502 | "BaseAddress": null, 503 | "Notice": "Automated Maintenance." 504 | }, 505 | { 506 | "Currency": "TRUST", 507 | "CurrencyLong": "TrustPlus", 508 | "MinConfirmation": 20, 509 | "TxFee": 0.02, 510 | "IsActive": true, 511 | "CoinType": "BITCOIN", 512 | "BaseAddress": null, 513 | "Notice": null 514 | }, 515 | { 516 | "Currency": "NAV", 517 | "CurrencyLong": "NAVCoin", 518 | "MinConfirmation": 20, 519 | "TxFee": 0.2, 520 | "IsActive": true, 521 | "CoinType": "BITCOIN", 522 | "BaseAddress": null, 523 | "Notice": null 524 | }, 525 | { 526 | "Currency": "XST", 527 | "CurrencyLong": "StealthCoin", 528 | "MinConfirmation": 20, 529 | "TxFee": 0.02, 530 | "IsActive": true, 531 | "CoinType": "BITCOIN", 532 | "BaseAddress": null, 533 | "Notice": null 534 | }, 535 | { 536 | "Currency": "APEX", 537 | "CurrencyLong": "ApexCoin", 538 | "MinConfirmation": 20, 539 | "TxFee": 0.02, 540 | "IsActive": true, 541 | "CoinType": "BITCOIN", 542 | "BaseAddress": null, 543 | "Notice": null 544 | }, 545 | { 546 | "Currency": "BTCD", 547 | "CurrencyLong": "BitcoinDark", 548 | "MinConfirmation": 20, 549 | "TxFee": 0.02, 550 | "IsActive": true, 551 | "CoinType": "BITCOIN", 552 | "BaseAddress": null, 553 | "Notice": null 554 | }, 555 | { 556 | "Currency": "VIA", 557 | "CurrencyLong": "ViaCoin", 558 | "MinConfirmation": 20, 559 | "TxFee": 0.2, 560 | "IsActive": true, 561 | "CoinType": "BITCOIN", 562 | "BaseAddress": null, 563 | "Notice": null 564 | }, 565 | { 566 | "Currency": "TRI", 567 | "CurrencyLong": "Triangles", 568 | "MinConfirmation": 6, 569 | "TxFee": 0.0002, 570 | "IsActive": true, 571 | "CoinType": "BITCOIN", 572 | "BaseAddress": null, 573 | "Notice": null 574 | }, 575 | { 576 | "Currency": "UNO", 577 | "CurrencyLong": "Unobtanium", 578 | "MinConfirmation": 6, 579 | "TxFee": 0.0002, 580 | "IsActive": true, 581 | "CoinType": "BITCOIN", 582 | "BaseAddress": null, 583 | "Notice": null 584 | }, 585 | { 586 | "Currency": "PINK", 587 | "CurrencyLong": "PinkCoin", 588 | "MinConfirmation": 6, 589 | "TxFee": 0.2, 590 | "IsActive": true, 591 | "CoinType": "BITCOIN", 592 | "BaseAddress": null, 593 | "Notice": null 594 | }, 595 | { 596 | "Currency": "IOC", 597 | "CurrencyLong": "I/OCoin", 598 | "MinConfirmation": 6, 599 | "TxFee": 0.2, 600 | "IsActive": true, 601 | "CoinType": "BITCOIN", 602 | "BaseAddress": null, 603 | "Notice": null 604 | }, 605 | { 606 | "Currency": "SDC", 607 | "CurrencyLong": "ShadowCash", 608 | "MinConfirmation": 20, 609 | "TxFee": 0.02, 610 | "IsActive": true, 611 | "CoinType": "BITCOIN", 612 | "BaseAddress": null, 613 | "Notice": "The SDC wallet will be shut down on Jun 9th, 2017." 614 | }, 615 | { 616 | "Currency": "MAX", 617 | "CurrencyLong": "MaxCoin", 618 | "MinConfirmation": 6, 619 | "TxFee": 0.2, 620 | "IsActive": true, 621 | "CoinType": "BITCOIN", 622 | "BaseAddress": null, 623 | "Notice": null 624 | }, 625 | { 626 | "Currency": "LXC", 627 | "CurrencyLong": "LibrexCoin", 628 | "MinConfirmation": 20, 629 | "TxFee": 0.02, 630 | "IsActive": true, 631 | "CoinType": "BITCOIN", 632 | "BaseAddress": null, 633 | "Notice": null 634 | }, 635 | { 636 | "Currency": "BOB", 637 | "CurrencyLong": "DobbsCoin", 638 | "MinConfirmation": 6, 639 | "TxFee": 0.02, 640 | "IsActive": true, 641 | "CoinType": "BITCOIN", 642 | "BaseAddress": null, 643 | "Notice": null 644 | }, 645 | { 646 | "Currency": "CANN", 647 | "CurrencyLong": "CannabisCoin", 648 | "MinConfirmation": 100, 649 | "TxFee": 0.2, 650 | "IsActive": false, 651 | "CoinType": "BITCOIN", 652 | "BaseAddress": null, 653 | "Notice": "Automated Maintenance." 654 | }, 655 | { 656 | "Currency": "FC2", 657 | "CurrencyLong": "FuelCoin", 658 | "MinConfirmation": 6, 659 | "TxFee": 0.02, 660 | "IsActive": true, 661 | "CoinType": "BITCOIN", 662 | "BaseAddress": null, 663 | "Notice": null 664 | }, 665 | { 666 | "Currency": "SSD", 667 | "CurrencyLong": "SonicCoin", 668 | "MinConfirmation": 6, 669 | "TxFee": 0.02, 670 | "IsActive": true, 671 | "CoinType": "BITCOIN", 672 | "BaseAddress": null, 673 | "Notice": null 674 | }, 675 | { 676 | "Currency": "J", 677 | "CurrencyLong": "JoinCoin", 678 | "MinConfirmation": 6, 679 | "TxFee": 0.02, 680 | "IsActive": true, 681 | "CoinType": "BITCOIN", 682 | "BaseAddress": null, 683 | "Notice": null 684 | }, 685 | { 686 | "Currency": "SYS", 687 | "CurrencyLong": "SysCoin", 688 | "MinConfirmation": 20, 689 | "TxFee": 0.0002, 690 | "IsActive": true, 691 | "CoinType": "BITCOIN", 692 | "BaseAddress": null, 693 | "Notice": null 694 | }, 695 | { 696 | "Currency": "NEOS", 697 | "CurrencyLong": "NeosCoin", 698 | "MinConfirmation": 3, 699 | "TxFee": 0.02, 700 | "IsActive": true, 701 | "CoinType": "BITCOIN", 702 | "BaseAddress": null, 703 | "Notice": null 704 | }, 705 | { 706 | "Currency": "DGB", 707 | "CurrencyLong": "Digibyte", 708 | "MinConfirmation": 6, 709 | "TxFee": 0.2, 710 | "IsActive": true, 711 | "CoinType": "BITCOIN", 712 | "BaseAddress": null, 713 | "Notice": null 714 | }, 715 | { 716 | "Currency": "ROOT", 717 | "CurrencyLong": "RootCoin", 718 | "MinConfirmation": 6, 719 | "TxFee": 0.2, 720 | "IsActive": true, 721 | "CoinType": "BITCOIN", 722 | "BaseAddress": null, 723 | "Notice": null 724 | }, 725 | { 726 | "Currency": "BTS", 727 | "CurrencyLong": "BitShares", 728 | "MinConfirmation": 2, 729 | "TxFee": 5, 730 | "IsActive": true, 731 | "CoinType": "BITSHAREX", 732 | "BaseAddress": "bittrex-deposit", 733 | "Notice": null 734 | }, 735 | { 736 | "Currency": "BURST", 737 | "CurrencyLong": "BURST", 738 | "MinConfirmation": 10, 739 | "TxFee": 2, 740 | "IsActive": true, 741 | "CoinType": "NXT", 742 | "BaseAddress": "BURST-HK9D-P74Q-XDEJ-D6PGM", 743 | "Notice": null 744 | }, 745 | { 746 | "Currency": "TIT", 747 | "CurrencyLong": "TitCoin", 748 | "MinConfirmation": 6, 749 | "TxFee": 0.2, 750 | "IsActive": true, 751 | "CoinType": "BITCOIN", 752 | "BaseAddress": null, 753 | "Notice": null 754 | }, 755 | { 756 | "Currency": "BSTY", 757 | "CurrencyLong": "GlobalBoost-Y", 758 | "MinConfirmation": 6, 759 | "TxFee": 0.2, 760 | "IsActive": true, 761 | "CoinType": "BITCOIN", 762 | "BaseAddress": null, 763 | "Notice": null 764 | }, 765 | { 766 | "Currency": "PXI", 767 | "CurrencyLong": "Prime-XI", 768 | "MinConfirmation": 6, 769 | "TxFee": 0.2, 770 | "IsActive": true, 771 | "CoinType": "BITCOIN", 772 | "BaseAddress": null, 773 | "Notice": null 774 | }, 775 | { 776 | "Currency": "DGC", 777 | "CurrencyLong": "DigitalCoin", 778 | "MinConfirmation": 6, 779 | "TxFee": 0.2, 780 | "IsActive": true, 781 | "CoinType": "BITCOIN", 782 | "BaseAddress": null, 783 | "Notice": null 784 | }, 785 | { 786 | "Currency": "SLG", 787 | "CurrencyLong": "Sterlingcoin", 788 | "MinConfirmation": 6, 789 | "TxFee": 0.2, 790 | "IsActive": true, 791 | "CoinType": "BITCOIN", 792 | "BaseAddress": null, 793 | "Notice": null 794 | }, 795 | { 796 | "Currency": "STV", 797 | "CurrencyLong": "SativaCoin", 798 | "MinConfirmation": 6, 799 | "TxFee": 0.2, 800 | "IsActive": true, 801 | "CoinType": "BITCOIN", 802 | "BaseAddress": null, 803 | "Notice": null 804 | }, 805 | { 806 | "Currency": "EXCL", 807 | "CurrencyLong": "ExclusiveCoin", 808 | "MinConfirmation": 6, 809 | "TxFee": 0.2, 810 | "IsActive": true, 811 | "CoinType": "BITCOIN", 812 | "BaseAddress": null, 813 | "Notice": null 814 | }, 815 | { 816 | "Currency": "SWIFT", 817 | "CurrencyLong": "Bitswift", 818 | "MinConfirmation": 6, 819 | "TxFee": 0.2, 820 | "IsActive": true, 821 | "CoinType": "BITCOIN", 822 | "BaseAddress": null, 823 | "Notice": null 824 | }, 825 | { 826 | "Currency": "ARCH", 827 | "CurrencyLong": "ArchCoin", 828 | "MinConfirmation": 6, 829 | "TxFee": 0.002, 830 | "IsActive": true, 831 | "CoinType": "BITCOIN", 832 | "BaseAddress": null, 833 | "Notice": null 834 | }, 835 | { 836 | "Currency": "NET", 837 | "CurrencyLong": "NetCoin", 838 | "MinConfirmation": 6, 839 | "TxFee": 0.2, 840 | "IsActive": true, 841 | "CoinType": "BITCOIN", 842 | "BaseAddress": null, 843 | "Notice": null 844 | }, 845 | { 846 | "Currency": "GHC", 847 | "CurrencyLong": "GamerholicCoin", 848 | "MinConfirmation": 6, 849 | "TxFee": 0.2, 850 | "IsActive": true, 851 | "CoinType": "BITCOIN", 852 | "BaseAddress": null, 853 | "Notice": null 854 | }, 855 | { 856 | "Currency": "DOPE", 857 | "CurrencyLong": "DopeCoin", 858 | "MinConfirmation": 6, 859 | "TxFee": 0.002, 860 | "IsActive": true, 861 | "CoinType": "BITCOIN", 862 | "BaseAddress": null, 863 | "Notice": null 864 | }, 865 | { 866 | "Currency": "BLOCK", 867 | "CurrencyLong": "BlockNet", 868 | "MinConfirmation": 6, 869 | "TxFee": 0.2, 870 | "IsActive": true, 871 | "CoinType": "BITCOIN", 872 | "BaseAddress": null, 873 | "Notice": null 874 | }, 875 | { 876 | "Currency": "ABY", 877 | "CurrencyLong": "ArtByte", 878 | "MinConfirmation": 6, 879 | "TxFee": 0.2, 880 | "IsActive": true, 881 | "CoinType": "BITCOIN", 882 | "BaseAddress": null, 883 | "Notice": null 884 | }, 885 | { 886 | "Currency": "VIOR", 887 | "CurrencyLong": "ViorCoin", 888 | "MinConfirmation": 6, 889 | "TxFee": 0.2, 890 | "IsActive": true, 891 | "CoinType": "BITCOIN", 892 | "BaseAddress": null, 893 | "Notice": null 894 | }, 895 | { 896 | "Currency": "BYC", 897 | "CurrencyLong": "Bytecent", 898 | "MinConfirmation": 20, 899 | "TxFee": 0.02, 900 | "IsActive": true, 901 | "CoinType": "BITCOIN", 902 | "BaseAddress": null, 903 | "Notice": null 904 | }, 905 | { 906 | "Currency": "UFO", 907 | "CurrencyLong": "UFOCoin", 908 | "MinConfirmation": 6, 909 | "TxFee": 0.2, 910 | "IsActive": true, 911 | "CoinType": "BITCOIN", 912 | "BaseAddress": null, 913 | "Notice": null 914 | }, 915 | { 916 | "Currency": "XMG", 917 | "CurrencyLong": "Magi", 918 | "MinConfirmation": 6, 919 | "TxFee": 0.0002, 920 | "IsActive": true, 921 | "CoinType": "BITCOIN", 922 | "BaseAddress": null, 923 | "Notice": null 924 | }, 925 | { 926 | "Currency": "XQN", 927 | "CurrencyLong": "Quotient", 928 | "MinConfirmation": 6, 929 | "TxFee": 0.02, 930 | "IsActive": true, 931 | "CoinType": "BITCOIN", 932 | "BaseAddress": null, 933 | "Notice": null 934 | }, 935 | { 936 | "Currency": "BLITZ", 937 | "CurrencyLong": "Blitzcash", 938 | "MinConfirmation": 6, 939 | "TxFee": 0.02, 940 | "IsActive": true, 941 | "CoinType": "BITCOIN", 942 | "BaseAddress": null, 943 | "Notice": null 944 | }, 945 | { 946 | "Currency": "VPN", 947 | "CurrencyLong": "VPNCoin", 948 | "MinConfirmation": 6, 949 | "TxFee": 0.2, 950 | "IsActive": true, 951 | "CoinType": "BITCOIN", 952 | "BaseAddress": null, 953 | "Notice": null 954 | }, 955 | { 956 | "Currency": "BAY", 957 | "CurrencyLong": "BitBay", 958 | "MinConfirmation": 6, 959 | "TxFee": 0.2, 960 | "IsActive": true, 961 | "CoinType": "BITCOIN", 962 | "BaseAddress": null, 963 | "Notice": null 964 | }, 965 | { 966 | "Currency": "DTC", 967 | "CurrencyLong": "DayTraderCoin", 968 | "MinConfirmation": 6, 969 | "TxFee": 0.2, 970 | "IsActive": true, 971 | "CoinType": "BITCOIN", 972 | "BaseAddress": null, 973 | "Notice": null 974 | }, 975 | { 976 | "Currency": "AM", 977 | "CurrencyLong": "AeroME", 978 | "MinConfirmation": 6, 979 | "TxFee": 0.2, 980 | "IsActive": true, 981 | "CoinType": "BITCOIN", 982 | "BaseAddress": null, 983 | "Notice": null 984 | }, 985 | { 986 | "Currency": "METAL", 987 | "CurrencyLong": "MetalCoin", 988 | "MinConfirmation": 2, 989 | "TxFee": 20, 990 | "IsActive": true, 991 | "CoinType": "COUNTERPARTY", 992 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 993 | "Notice": null 994 | }, 995 | { 996 | "Currency": "SPR", 997 | "CurrencyLong": "SpreadCoin", 998 | "MinConfirmation": 6, 999 | "TxFee": 0.2, 1000 | "IsActive": true, 1001 | "CoinType": "BITCOIN", 1002 | "BaseAddress": null, 1003 | "Notice": null 1004 | }, 1005 | { 1006 | "Currency": "VTR", 1007 | "CurrencyLong": "vTorrent", 1008 | "MinConfirmation": 6, 1009 | "TxFee": 0.02, 1010 | "IsActive": true, 1011 | "CoinType": "BITCOIN_STEALTH", 1012 | "BaseAddress": null, 1013 | "Notice": null 1014 | }, 1015 | { 1016 | "Currency": "XPY", 1017 | "CurrencyLong": "Paycoin", 1018 | "MinConfirmation": 6, 1019 | "TxFee": 0.002, 1020 | "IsActive": true, 1021 | "CoinType": "BITCOIN", 1022 | "BaseAddress": null, 1023 | "Notice": null 1024 | }, 1025 | { 1026 | "Currency": "XRP", 1027 | "CurrencyLong": "Ripple", 1028 | "MinConfirmation": 10, 1029 | "TxFee": 0.02, 1030 | "IsActive": true, 1031 | "CoinType": "RIPPLE", 1032 | "BaseAddress": "rPVMhWBsfF9iMXYj3aAzJVkPDTFNSyWdKy", 1033 | "Notice": null 1034 | }, 1035 | { 1036 | "Currency": "GAME", 1037 | "CurrencyLong": "GameCredits", 1038 | "MinConfirmation": 6, 1039 | "TxFee": 0.2, 1040 | "IsActive": true, 1041 | "CoinType": "BITCOIN", 1042 | "BaseAddress": null, 1043 | "Notice": null 1044 | }, 1045 | { 1046 | "Currency": "GP", 1047 | "CurrencyLong": "GoldPieces", 1048 | "MinConfirmation": 6, 1049 | "TxFee": 0.2, 1050 | "IsActive": true, 1051 | "CoinType": "BITCOIN", 1052 | "BaseAddress": null, 1053 | "Notice": null 1054 | }, 1055 | { 1056 | "Currency": "NXS", 1057 | "CurrencyLong": "Nexus", 1058 | "MinConfirmation": 6, 1059 | "TxFee": 0.2, 1060 | "IsActive": true, 1061 | "CoinType": "BITCOIN", 1062 | "BaseAddress": null, 1063 | "Notice": null 1064 | }, 1065 | { 1066 | "Currency": "COVAL", 1067 | "CurrencyLong": "Circuits of Value", 1068 | "MinConfirmation": 2, 1069 | "TxFee": 200, 1070 | "IsActive": true, 1071 | "CoinType": "COUNTERPARTY", 1072 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 1073 | "Notice": null 1074 | }, 1075 | { 1076 | "Currency": "FSC2", 1077 | "CurrencyLong": "FriendshipCoin2", 1078 | "MinConfirmation": 6, 1079 | "TxFee": 0.2, 1080 | "IsActive": true, 1081 | "CoinType": "BITCOIN", 1082 | "BaseAddress": null, 1083 | "Notice": null 1084 | }, 1085 | { 1086 | "Currency": "SOON", 1087 | "CurrencyLong": "SoonCoin", 1088 | "MinConfirmation": 6, 1089 | "TxFee": 0.2, 1090 | "IsActive": true, 1091 | "CoinType": "BITCOIN", 1092 | "BaseAddress": null, 1093 | "Notice": null 1094 | }, 1095 | { 1096 | "Currency": "HZ", 1097 | "CurrencyLong": "Horizon", 1098 | "MinConfirmation": 10, 1099 | "TxFee": 2, 1100 | "IsActive": true, 1101 | "CoinType": "NXT", 1102 | "BaseAddress": "NHZ-7ANN-LUFR-CCZU-6K44J", 1103 | "Notice": null 1104 | }, 1105 | { 1106 | "Currency": "XCP", 1107 | "CurrencyLong": "Counterparty", 1108 | "MinConfirmation": 2, 1109 | "TxFee": 0.2, 1110 | "IsActive": true, 1111 | "CoinType": "COUNTERPARTY", 1112 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 1113 | "Notice": null 1114 | }, 1115 | { 1116 | "Currency": "SJCX", 1117 | "CurrencyLong": "StorjCoinX", 1118 | "MinConfirmation": 2, 1119 | "TxFee": 2, 1120 | "IsActive": true, 1121 | "CoinType": "COUNTERPARTY", 1122 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 1123 | "Notice": null 1124 | }, 1125 | { 1126 | "Currency": "BITB", 1127 | "CurrencyLong": "BitBean", 1128 | "MinConfirmation": 6, 1129 | "TxFee": 0.2, 1130 | "IsActive": true, 1131 | "CoinType": "BITCOIN", 1132 | "BaseAddress": null, 1133 | "Notice": null 1134 | }, 1135 | { 1136 | "Currency": "XTC", 1137 | "CurrencyLong": "TileCoin", 1138 | "MinConfirmation": 2, 1139 | "TxFee": 100, 1140 | "IsActive": true, 1141 | "CoinType": "COUNTERPARTY", 1142 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 1143 | "Notice": null 1144 | }, 1145 | { 1146 | "Currency": "XVG", 1147 | "CurrencyLong": "Verge", 1148 | "MinConfirmation": 30, 1149 | "TxFee": 0.2, 1150 | "IsActive": true, 1151 | "CoinType": "BITCOIN", 1152 | "BaseAddress": null, 1153 | "Notice": null 1154 | }, 1155 | { 1156 | "Currency": "GEO", 1157 | "CurrencyLong": "GeoCoin", 1158 | "MinConfirmation": 120, 1159 | "TxFee": 0.002, 1160 | "IsActive": true, 1161 | "CoinType": "BITCOIN", 1162 | "BaseAddress": null, 1163 | "Notice": null 1164 | }, 1165 | { 1166 | "Currency": "FLDC", 1167 | "CurrencyLong": "FoldingCoin", 1168 | "MinConfirmation": 2, 1169 | "TxFee": 150, 1170 | "IsActive": true, 1171 | "CoinType": "COUNTERPARTY", 1172 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 1173 | "Notice": null 1174 | }, 1175 | { 1176 | "Currency": "WBB", 1177 | "CurrencyLong": "Wild Beast Block", 1178 | "MinConfirmation": 30, 1179 | "TxFee": 0.02, 1180 | "IsActive": true, 1181 | "CoinType": "BITCOIN", 1182 | "BaseAddress": null, 1183 | "Notice": "Wallet will be removed on 6/23 - We are processing WITHDRAWALS ONLY. Deposits will not be credited - https://twitter.com/WildBeastBTC/status/871389558990139392" 1184 | }, 1185 | { 1186 | "Currency": "GEMZ", 1187 | "CurrencyLong": "Gemz", 1188 | "MinConfirmation": 2, 1189 | "TxFee": 5, 1190 | "IsActive": true, 1191 | "CoinType": "COUNTERPARTY", 1192 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 1193 | "Notice": null 1194 | }, 1195 | { 1196 | "Currency": "GRC", 1197 | "CurrencyLong": "GridCoin", 1198 | "MinConfirmation": 6, 1199 | "TxFee": 0.2, 1200 | "IsActive": true, 1201 | "CoinType": "BITCOIN", 1202 | "BaseAddress": null, 1203 | "Notice": null 1204 | }, 1205 | { 1206 | "Currency": "XCO", 1207 | "CurrencyLong": "X-Coin", 1208 | "MinConfirmation": 6, 1209 | "TxFee": 0.02, 1210 | "IsActive": true, 1211 | "CoinType": "BITCOIN", 1212 | "BaseAddress": null, 1213 | "Notice": null 1214 | }, 1215 | { 1216 | "Currency": "MTR", 1217 | "CurrencyLong": "MasterTraderCoin", 1218 | "MinConfirmation": 6, 1219 | "TxFee": 0.2, 1220 | "IsActive": true, 1221 | "CoinType": "BITCOIN", 1222 | "BaseAddress": null, 1223 | "Notice": null 1224 | }, 1225 | { 1226 | "Currency": "FLO", 1227 | "CurrencyLong": "Florin", 1228 | "MinConfirmation": 6, 1229 | "TxFee": 0.2, 1230 | "IsActive": true, 1231 | "CoinType": "BITCOIN", 1232 | "BaseAddress": null, 1233 | "Notice": null 1234 | }, 1235 | { 1236 | "Currency": "U", 1237 | "CurrencyLong": "UCoin", 1238 | "MinConfirmation": 6, 1239 | "TxFee": 0.2, 1240 | "IsActive": true, 1241 | "CoinType": "BITCOIN", 1242 | "BaseAddress": null, 1243 | "Notice": null 1244 | }, 1245 | { 1246 | "Currency": "NBT", 1247 | "CurrencyLong": "Nubits", 1248 | "MinConfirmation": 6, 1249 | "TxFee": 0.02, 1250 | "IsActive": true, 1251 | "CoinType": "BITCOIN", 1252 | "BaseAddress": null, 1253 | "Notice": null 1254 | }, 1255 | { 1256 | "Currency": "XEM", 1257 | "CurrencyLong": "NewEconomyMovement", 1258 | "MinConfirmation": 10, 1259 | "TxFee": 15, 1260 | "IsActive": true, 1261 | "CoinType": "NEM", 1262 | "BaseAddress": "ND2JRPQIWXHKAA26INVGA7SREEUMX5QAI6VU7HNR", 1263 | "Notice": null 1264 | }, 1265 | { 1266 | "Currency": "MUE", 1267 | "CurrencyLong": "MonetaryUnit", 1268 | "MinConfirmation": 20, 1269 | "TxFee": 0.2, 1270 | "IsActive": true, 1271 | "CoinType": "BITCOIN", 1272 | "BaseAddress": null, 1273 | "Notice": null 1274 | }, 1275 | { 1276 | "Currency": "XVC", 1277 | "CurrencyLong": "Vcash", 1278 | "MinConfirmation": 2, 1279 | "TxFee": 0.002, 1280 | "IsActive": true, 1281 | "CoinType": "BITCOIN", 1282 | "BaseAddress": null, 1283 | "Notice": null 1284 | }, 1285 | { 1286 | "Currency": "8BIT", 1287 | "CurrencyLong": "8bit", 1288 | "MinConfirmation": 30, 1289 | "TxFee": 0.002, 1290 | "IsActive": true, 1291 | "CoinType": "BITCOIN", 1292 | "BaseAddress": null, 1293 | "Notice": null 1294 | }, 1295 | { 1296 | "Currency": "CLAM", 1297 | "CurrencyLong": "CLAMs", 1298 | "MinConfirmation": 6, 1299 | "TxFee": 0.02, 1300 | "IsActive": true, 1301 | "CoinType": "BITCOIN", 1302 | "BaseAddress": "xHWM9sQVJS3WgLm88j29tpFfZw17TmbRoq", 1303 | "Notice": null 1304 | }, 1305 | { 1306 | "Currency": "XSEED", 1307 | "CurrencyLong": "BitSeeds", 1308 | "MinConfirmation": 6, 1309 | "TxFee": 0.002, 1310 | "IsActive": true, 1311 | "CoinType": "BITCOIN", 1312 | "BaseAddress": null, 1313 | "Notice": null 1314 | }, 1315 | { 1316 | "Currency": "NTRN", 1317 | "CurrencyLong": "Neutron", 1318 | "MinConfirmation": 6, 1319 | "TxFee": 0.02, 1320 | "IsActive": true, 1321 | "CoinType": "BITCOIN", 1322 | "BaseAddress": null, 1323 | "Notice": null 1324 | }, 1325 | { 1326 | "Currency": "SLING", 1327 | "CurrencyLong": "Sling", 1328 | "MinConfirmation": 6, 1329 | "TxFee": 0.002, 1330 | "IsActive": true, 1331 | "CoinType": "BITCOIN", 1332 | "BaseAddress": null, 1333 | "Notice": null 1334 | }, 1335 | { 1336 | "Currency": "DMD", 1337 | "CurrencyLong": "Diamond", 1338 | "MinConfirmation": 6, 1339 | "TxFee": 0.002, 1340 | "IsActive": true, 1341 | "CoinType": "BITCOIN", 1342 | "BaseAddress": null, 1343 | "Notice": null 1344 | }, 1345 | { 1346 | "Currency": "GAM", 1347 | "CurrencyLong": "Gambit", 1348 | "MinConfirmation": 6, 1349 | "TxFee": 0.02, 1350 | "IsActive": true, 1351 | "CoinType": "BITCOIN", 1352 | "BaseAddress": null, 1353 | "Notice": null 1354 | }, 1355 | { 1356 | "Currency": "UNIT", 1357 | "CurrencyLong": "UniversalCurrency", 1358 | "MinConfirmation": 6, 1359 | "TxFee": 2, 1360 | "IsActive": true, 1361 | "CoinType": "BITCOIN", 1362 | "BaseAddress": null, 1363 | "Notice": null 1364 | }, 1365 | { 1366 | "Currency": "GRT", 1367 | "CurrencyLong": "Grantcoin", 1368 | "MinConfirmation": 6, 1369 | "TxFee": 2, 1370 | "IsActive": true, 1371 | "CoinType": "BITCOIN", 1372 | "BaseAddress": null, 1373 | "Notice": null 1374 | }, 1375 | { 1376 | "Currency": "VIRAL", 1377 | "CurrencyLong": "Viral", 1378 | "MinConfirmation": 6, 1379 | "TxFee": 0.002, 1380 | "IsActive": true, 1381 | "CoinType": "BITCOIN", 1382 | "BaseAddress": null, 1383 | "Notice": null 1384 | }, 1385 | { 1386 | "Currency": "SPHR", 1387 | "CurrencyLong": "Sphere", 1388 | "MinConfirmation": 6, 1389 | "TxFee": 0.002, 1390 | "IsActive": true, 1391 | "CoinType": "BITCOIN", 1392 | "BaseAddress": null, 1393 | "Notice": null 1394 | }, 1395 | { 1396 | "Currency": "ARB", 1397 | "CurrencyLong": "ArbitCoin", 1398 | "MinConfirmation": 6, 1399 | "TxFee": 0.02, 1400 | "IsActive": true, 1401 | "CoinType": "BITCOIN", 1402 | "BaseAddress": null, 1403 | "Notice": null 1404 | }, 1405 | { 1406 | "Currency": "OK", 1407 | "CurrencyLong": "OkCash", 1408 | "MinConfirmation": 6, 1409 | "TxFee": 0.2, 1410 | "IsActive": true, 1411 | "CoinType": "BITCOIN", 1412 | "BaseAddress": null, 1413 | "Notice": null 1414 | }, 1415 | { 1416 | "Currency": "ADC", 1417 | "CurrencyLong": "AudioCoin", 1418 | "MinConfirmation": 6, 1419 | "TxFee": 2, 1420 | "IsActive": true, 1421 | "CoinType": "BITCOIN", 1422 | "BaseAddress": null, 1423 | "Notice": null 1424 | }, 1425 | { 1426 | "Currency": "SNRG", 1427 | "CurrencyLong": "Synergy", 1428 | "MinConfirmation": 6, 1429 | "TxFee": 0.002, 1430 | "IsActive": true, 1431 | "CoinType": "BITCOIN", 1432 | "BaseAddress": null, 1433 | "Notice": null 1434 | }, 1435 | { 1436 | "Currency": "PKB", 1437 | "CurrencyLong": "ParkByte", 1438 | "MinConfirmation": 6, 1439 | "TxFee": 0.02, 1440 | "IsActive": true, 1441 | "CoinType": "BITCOIN", 1442 | "BaseAddress": null, 1443 | "Notice": null 1444 | }, 1445 | { 1446 | "Currency": "TES", 1447 | "CurrencyLong": "TeslaCoin", 1448 | "MinConfirmation": 15, 1449 | "TxFee": 0.2, 1450 | "IsActive": true, 1451 | "CoinType": "BITCOIN", 1452 | "BaseAddress": null, 1453 | "Notice": null 1454 | }, 1455 | { 1456 | "Currency": "CPC", 1457 | "CurrencyLong": "CapriCoin", 1458 | "MinConfirmation": 6, 1459 | "TxFee": 0.2, 1460 | "IsActive": true, 1461 | "CoinType": "BITCOIN", 1462 | "BaseAddress": null, 1463 | "Notice": null 1464 | }, 1465 | { 1466 | "Currency": "AEON", 1467 | "CurrencyLong": "Aeon", 1468 | "MinConfirmation": 15, 1469 | "TxFee": 0.1, 1470 | "IsActive": true, 1471 | "CoinType": "CRYPTO_NOTE_PAYMENTID", 1472 | "BaseAddress": "WmtK9TQ6yd2ZWZDAkRsebc2ppzUq2Wuo9XRRjHMH2fvqM3ARVqk3styJ6AavJFcpJFPFtxRGAqGFoJMZGJ6YYzQ61TYGfpykX", 1473 | "Notice": null 1474 | }, 1475 | { 1476 | "Currency": "BITZ", 1477 | "CurrencyLong": "Bitz", 1478 | "MinConfirmation": 6, 1479 | "TxFee": 0.02, 1480 | "IsActive": true, 1481 | "CoinType": "BITCOIN", 1482 | "BaseAddress": null, 1483 | "Notice": null 1484 | }, 1485 | { 1486 | "Currency": "ETH", 1487 | "CurrencyLong": "Ethereum", 1488 | "MinConfirmation": 36, 1489 | "TxFee": 0.001, 1490 | "IsActive": true, 1491 | "CoinType": "ETH", 1492 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 1493 | "Notice": null 1494 | }, 1495 | { 1496 | "Currency": "GCR", 1497 | "CurrencyLong": "GlobalCurrencyReserve", 1498 | "MinConfirmation": 60, 1499 | "TxFee": 0.02, 1500 | "IsActive": true, 1501 | "CoinType": "BITCOIN", 1502 | "BaseAddress": null, 1503 | "Notice": null 1504 | }, 1505 | { 1506 | "Currency": "TX", 1507 | "CurrencyLong": "TransferCoin", 1508 | "MinConfirmation": 6, 1509 | "TxFee": 0.02, 1510 | "IsActive": true, 1511 | "CoinType": "BITCOIN", 1512 | "BaseAddress": null, 1513 | "Notice": null 1514 | }, 1515 | { 1516 | "Currency": "BCY", 1517 | "CurrencyLong": "BitCrystals", 1518 | "MinConfirmation": 2, 1519 | "TxFee": 5, 1520 | "IsActive": true, 1521 | "CoinType": "COUNTERPARTY", 1522 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 1523 | "Notice": null 1524 | }, 1525 | { 1526 | "Currency": "PRIME", 1527 | "CurrencyLong": "PrimeChain", 1528 | "MinConfirmation": 6, 1529 | "TxFee": 0.02, 1530 | "IsActive": true, 1531 | "CoinType": "BITCOIN", 1532 | "BaseAddress": null, 1533 | "Notice": null 1534 | }, 1535 | { 1536 | "Currency": "EXP", 1537 | "CurrencyLong": "Expanse", 1538 | "MinConfirmation": 60, 1539 | "TxFee": 0.01, 1540 | "IsActive": true, 1541 | "CoinType": "ETH", 1542 | "BaseAddress": "0xc9710872d3e65edbf7f8776829dd7b21f2085e40", 1543 | "Notice": null 1544 | }, 1545 | { 1546 | "Currency": "NEU", 1547 | "CurrencyLong": "NeuCoin", 1548 | "MinConfirmation": 6, 1549 | "TxFee": 0.02, 1550 | "IsActive": true, 1551 | "CoinType": "BITCOIN", 1552 | "BaseAddress": null, 1553 | "Notice": null 1554 | }, 1555 | { 1556 | "Currency": "SWING", 1557 | "CurrencyLong": "SwingCoin", 1558 | "MinConfirmation": 6, 1559 | "TxFee": 0.1, 1560 | "IsActive": true, 1561 | "CoinType": "BITCOIN", 1562 | "BaseAddress": null, 1563 | "Notice": null 1564 | }, 1565 | { 1566 | "Currency": "INFX", 1567 | "CurrencyLong": "InfluxCoin", 1568 | "MinConfirmation": 6, 1569 | "TxFee": 0.1, 1570 | "IsActive": true, 1571 | "CoinType": "BITCOIN", 1572 | "BaseAddress": null, 1573 | "Notice": null 1574 | }, 1575 | { 1576 | "Currency": "SOIL", 1577 | "CurrencyLong": "SOILcoin", 1578 | "MinConfirmation": 60, 1579 | "TxFee": 0.1, 1580 | "IsActive": true, 1581 | "CoinType": "ETH", 1582 | "BaseAddress": "0x6b8c05cfa77258c5c7ba42b0467f5c00ce3eed02", 1583 | "Notice": null 1584 | }, 1585 | { 1586 | "Currency": "OMNI", 1587 | "CurrencyLong": "OmniCoin", 1588 | "MinConfirmation": 1, 1589 | "TxFee": 0.1, 1590 | "IsActive": true, 1591 | "CoinType": "OMNI", 1592 | "BaseAddress": "1DUb2YYbQA1jjaNYzVXLZ7ZioEhLXtbUru", 1593 | "Notice": null 1594 | }, 1595 | { 1596 | "Currency": "USDT", 1597 | "CurrencyLong": "Tether", 1598 | "MinConfirmation": 1, 1599 | "TxFee": 5, 1600 | "IsActive": true, 1601 | "CoinType": "OMNI", 1602 | "BaseAddress": "1DUb2YYbQA1jjaNYzVXLZ7ZioEhLXtbUru", 1603 | "Notice": null 1604 | }, 1605 | { 1606 | "Currency": "AMP", 1607 | "CurrencyLong": "SynereoAmp", 1608 | "MinConfirmation": 1, 1609 | "TxFee": 0.1, 1610 | "IsActive": true, 1611 | "CoinType": "OMNI", 1612 | "BaseAddress": "1DUb2YYbQA1jjaNYzVXLZ7ZioEhLXtbUru", 1613 | "Notice": null 1614 | }, 1615 | { 1616 | "Currency": "AGRS", 1617 | "CurrencyLong": "IDNI Agoras", 1618 | "MinConfirmation": 1, 1619 | "TxFee": 0.1, 1620 | "IsActive": true, 1621 | "CoinType": "OMNI", 1622 | "BaseAddress": "1DUb2YYbQA1jjaNYzVXLZ7ZioEhLXtbUru", 1623 | "Notice": null 1624 | }, 1625 | { 1626 | "Currency": "XLM", 1627 | "CurrencyLong": "Lumen", 1628 | "MinConfirmation": 2, 1629 | "TxFee": 0.01, 1630 | "IsActive": true, 1631 | "CoinType": "LUMEN", 1632 | "BaseAddress": "GB6YPGW5JFMMP2QB2USQ33EUWTXVL4ZT5ITUNCY3YKVWOJPP57CANOF3", 1633 | "Notice": null 1634 | }, 1635 | { 1636 | "Currency": "SPRTS", 1637 | "CurrencyLong": "Sprouts", 1638 | "MinConfirmation": 6, 1639 | "TxFee": 1, 1640 | "IsActive": true, 1641 | "CoinType": "BITCOIN", 1642 | "BaseAddress": null, 1643 | "Notice": null 1644 | }, 1645 | { 1646 | "Currency": "YBC", 1647 | "CurrencyLong": "YBCoin", 1648 | "MinConfirmation": 6, 1649 | "TxFee": 1, 1650 | "IsActive": true, 1651 | "CoinType": "BITCOIN", 1652 | "BaseAddress": null, 1653 | "Notice": null 1654 | }, 1655 | { 1656 | "Currency": "BTA", 1657 | "CurrencyLong": "Bata", 1658 | "MinConfirmation": 12, 1659 | "TxFee": 1, 1660 | "IsActive": false, 1661 | "CoinType": "BITCOIN", 1662 | "BaseAddress": null, 1663 | "Notice": "Wallet Maintenance" 1664 | }, 1665 | { 1666 | "Currency": "MEC", 1667 | "CurrencyLong": "MegaCoin", 1668 | "MinConfirmation": 6, 1669 | "TxFee": 1, 1670 | "IsActive": true, 1671 | "CoinType": "BITCOIN", 1672 | "BaseAddress": null, 1673 | "Notice": null 1674 | }, 1675 | { 1676 | "Currency": "BITCNY", 1677 | "CurrencyLong": "BitCNY", 1678 | "MinConfirmation": 2, 1679 | "TxFee": 1.5, 1680 | "IsActive": true, 1681 | "CoinType": "BITSHAREX", 1682 | "BaseAddress": "bittrex-deposit", 1683 | "Notice": null 1684 | }, 1685 | { 1686 | "Currency": "AMS", 1687 | "CurrencyLong": "AmsterdamCoin", 1688 | "MinConfirmation": 6, 1689 | "TxFee": 1, 1690 | "IsActive": true, 1691 | "CoinType": "BITCOIN", 1692 | "BaseAddress": null, 1693 | "Notice": null 1694 | }, 1695 | { 1696 | "Currency": "SCRT", 1697 | "CurrencyLong": "SecretCoin", 1698 | "MinConfirmation": 6, 1699 | "TxFee": 1, 1700 | "IsActive": true, 1701 | "CoinType": "BITCOIN", 1702 | "BaseAddress": null, 1703 | "Notice": null 1704 | }, 1705 | { 1706 | "Currency": "SCOT", 1707 | "CurrencyLong": "ScotCoin", 1708 | "MinConfirmation": 2, 1709 | "TxFee": 5, 1710 | "IsActive": true, 1711 | "CoinType": "COUNTERPARTY", 1712 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 1713 | "Notice": null 1714 | }, 1715 | { 1716 | "Currency": "CLUB", 1717 | "CurrencyLong": "ClubCoin", 1718 | "MinConfirmation": 6, 1719 | "TxFee": 0.02, 1720 | "IsActive": true, 1721 | "CoinType": "BITCOIN", 1722 | "BaseAddress": null, 1723 | "Notice": null 1724 | }, 1725 | { 1726 | "Currency": "BNT", 1727 | "CurrencyLong": "Bantam", 1728 | "MinConfirmation": 6, 1729 | "TxFee": 1, 1730 | "IsActive": true, 1731 | "CoinType": "BITCOIN", 1732 | "BaseAddress": null, 1733 | "Notice": null 1734 | }, 1735 | { 1736 | "Currency": "VOX", 1737 | "CurrencyLong": "Voxels", 1738 | "MinConfirmation": 6, 1739 | "TxFee": 0.1, 1740 | "IsActive": true, 1741 | "CoinType": "BITCOIN", 1742 | "BaseAddress": null, 1743 | "Notice": null 1744 | }, 1745 | { 1746 | "Currency": "MND", 1747 | "CurrencyLong": "MindCoin", 1748 | "MinConfirmation": 6, 1749 | "TxFee": 1, 1750 | "IsActive": true, 1751 | "CoinType": "BITCOIN", 1752 | "BaseAddress": null, 1753 | "Notice": null 1754 | }, 1755 | { 1756 | "Currency": "EMC", 1757 | "CurrencyLong": "EmerCoin", 1758 | "MinConfirmation": 6, 1759 | "TxFee": 0.02, 1760 | "IsActive": true, 1761 | "CoinType": "BITCOIN", 1762 | "BaseAddress": null, 1763 | "Notice": null 1764 | }, 1765 | { 1766 | "Currency": "FCT", 1767 | "CurrencyLong": "Factom", 1768 | "MinConfirmation": 2, 1769 | "TxFee": 0.1, 1770 | "IsActive": false, 1771 | "CoinType": "FACTOM", 1772 | "BaseAddress": "FA2MZs5wASMo9cCiKezdiQKCd8KA6Zbg2xKXKGmYEZBqon9J3ZKv", 1773 | "Notice": "Wallet Maintenance" 1774 | }, 1775 | { 1776 | "Currency": "MAID", 1777 | "CurrencyLong": "MaidSafeCoin", 1778 | "MinConfirmation": 1, 1779 | "TxFee": 1, 1780 | "IsActive": true, 1781 | "CoinType": "OMNI", 1782 | "BaseAddress": "1DUb2YYbQA1jjaNYzVXLZ7ZioEhLXtbUru", 1783 | "Notice": null 1784 | }, 1785 | { 1786 | "Currency": "FRK", 1787 | "CurrencyLong": "Franko", 1788 | "MinConfirmation": 30, 1789 | "TxFee": 0.002, 1790 | "IsActive": true, 1791 | "CoinType": "BITCOIN", 1792 | "BaseAddress": null, 1793 | "Notice": null 1794 | }, 1795 | { 1796 | "Currency": "EGC", 1797 | "CurrencyLong": "EverGreenCoin", 1798 | "MinConfirmation": 6, 1799 | "TxFee": 0.2, 1800 | "IsActive": true, 1801 | "CoinType": "BITCOIN", 1802 | "BaseAddress": null, 1803 | "Notice": null 1804 | }, 1805 | { 1806 | "Currency": "SLS", 1807 | "CurrencyLong": "SaluS", 1808 | "MinConfirmation": 6, 1809 | "TxFee": 0.002, 1810 | "IsActive": true, 1811 | "CoinType": "BITCOIN", 1812 | "BaseAddress": null, 1813 | "Notice": null 1814 | }, 1815 | { 1816 | "Currency": "ORB", 1817 | "CurrencyLong": "OrbitCoin", 1818 | "MinConfirmation": 6, 1819 | "TxFee": 0.2, 1820 | "IsActive": true, 1821 | "CoinType": "BITCOIN", 1822 | "BaseAddress": null, 1823 | "Notice": null 1824 | }, 1825 | { 1826 | "Currency": "STEPS", 1827 | "CurrencyLong": "Steps", 1828 | "MinConfirmation": 6, 1829 | "TxFee": 0.2, 1830 | "IsActive": true, 1831 | "CoinType": "BITCOIN", 1832 | "BaseAddress": null, 1833 | "Notice": null 1834 | }, 1835 | { 1836 | "Currency": "RADS", 1837 | "CurrencyLong": "Radium", 1838 | "MinConfirmation": 6, 1839 | "TxFee": 0.2, 1840 | "IsActive": true, 1841 | "CoinType": "BITCOIN", 1842 | "BaseAddress": null, 1843 | "Notice": null 1844 | }, 1845 | { 1846 | "Currency": "DCR", 1847 | "CurrencyLong": "Decred", 1848 | "MinConfirmation": 6, 1849 | "TxFee": 0.03, 1850 | "IsActive": true, 1851 | "CoinType": "BITCOIN", 1852 | "BaseAddress": null, 1853 | "Notice": null 1854 | }, 1855 | { 1856 | "Currency": "SEC", 1857 | "CurrencyLong": "SafeExchangeCoin", 1858 | "MinConfirmation": 1, 1859 | "TxFee": 1, 1860 | "IsActive": true, 1861 | "CoinType": "OMNI", 1862 | "BaseAddress": "1DUb2YYbQA1jjaNYzVXLZ7ZioEhLXtbUru", 1863 | "Notice": null 1864 | }, 1865 | { 1866 | "Currency": "PIVX", 1867 | "CurrencyLong": "Pivx", 1868 | "MinConfirmation": 6, 1869 | "TxFee": 0.02, 1870 | "IsActive": true, 1871 | "CoinType": "BITCOIN", 1872 | "BaseAddress": null, 1873 | "Notice": null 1874 | }, 1875 | { 1876 | "Currency": "WARP", 1877 | "CurrencyLong": "WarpCoin", 1878 | "MinConfirmation": 6, 1879 | "TxFee": 0.02, 1880 | "IsActive": true, 1881 | "CoinType": "BITCOIN", 1882 | "BaseAddress": null, 1883 | "Notice": null 1884 | }, 1885 | { 1886 | "Currency": "CRBIT", 1887 | "CurrencyLong": "CreditBit", 1888 | "MinConfirmation": 6, 1889 | "TxFee": 1, 1890 | "IsActive": true, 1891 | "CoinType": "BITCOIN", 1892 | "BaseAddress": null, 1893 | "Notice": null 1894 | }, 1895 | { 1896 | "Currency": "MEME", 1897 | "CurrencyLong": "Memetic", 1898 | "MinConfirmation": 6, 1899 | "TxFee": 0.02, 1900 | "IsActive": true, 1901 | "CoinType": "BITCOIN", 1902 | "BaseAddress": null, 1903 | "Notice": null 1904 | }, 1905 | { 1906 | "Currency": "STEEM", 1907 | "CurrencyLong": "STEEM", 1908 | "MinConfirmation": 20, 1909 | "TxFee": 0.01, 1910 | "IsActive": true, 1911 | "CoinType": "STEEM", 1912 | "BaseAddress": "bittrex", 1913 | "Notice": null 1914 | }, 1915 | { 1916 | "Currency": "2GIVE", 1917 | "CurrencyLong": "2GIVE", 1918 | "MinConfirmation": 6, 1919 | "TxFee": 0.01, 1920 | "IsActive": true, 1921 | "CoinType": "BITCOIN_PERCENTAGE_FEE", 1922 | "BaseAddress": null, 1923 | "Notice": null 1924 | }, 1925 | { 1926 | "Currency": "LSK", 1927 | "CurrencyLong": "Lisk", 1928 | "MinConfirmation": 77, 1929 | "TxFee": 0.1, 1930 | "IsActive": true, 1931 | "CoinType": "LISK", 1932 | "BaseAddress": "6687808873757044786L", 1933 | "Notice": null 1934 | }, 1935 | { 1936 | "Currency": "KR", 1937 | "CurrencyLong": "Krypton", 1938 | "MinConfirmation": 20, 1939 | "TxFee": 0.01, 1940 | "IsActive": true, 1941 | "CoinType": "BITCOIN", 1942 | "BaseAddress": null, 1943 | "Notice": null 1944 | }, 1945 | { 1946 | "Currency": "PDC", 1947 | "CurrencyLong": "Project Decorum", 1948 | "MinConfirmation": 1, 1949 | "TxFee": 1, 1950 | "IsActive": true, 1951 | "CoinType": "OMNI", 1952 | "BaseAddress": "1DUb2YYbQA1jjaNYzVXLZ7ZioEhLXtbUru", 1953 | "Notice": null 1954 | }, 1955 | { 1956 | "Currency": "DGD", 1957 | "CurrencyLong": "Digix DAO", 1958 | "MinConfirmation": 36, 1959 | "TxFee": 0.01, 1960 | "IsActive": true, 1961 | "CoinType": "ETH_CONTRACT", 1962 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 1963 | "Notice": null 1964 | }, 1965 | { 1966 | "Currency": "BRK", 1967 | "CurrencyLong": "Breakout", 1968 | "MinConfirmation": 6, 1969 | "TxFee": 0.02, 1970 | "IsActive": true, 1971 | "CoinType": "BITCOIN", 1972 | "BaseAddress": null, 1973 | "Notice": null 1974 | }, 1975 | { 1976 | "Currency": "WAVES", 1977 | "CurrencyLong": "Waves", 1978 | "MinConfirmation": 20, 1979 | "TxFee": 0.001, 1980 | "IsActive": true, 1981 | "CoinType": "WAVES", 1982 | "BaseAddress": "3P31zvGdh6ai6JK6zZ18TjYzJsa1B83YPoj", 1983 | "Notice": null 1984 | }, 1985 | { 1986 | "Currency": "RISE", 1987 | "CurrencyLong": "Rise", 1988 | "MinConfirmation": 77, 1989 | "TxFee": 0.1, 1990 | "IsActive": true, 1991 | "CoinType": "LISK", 1992 | "BaseAddress": "1644223775232371040R", 1993 | "Notice": null 1994 | }, 1995 | { 1996 | "Currency": "LBC", 1997 | "CurrencyLong": "LBRY Credits", 1998 | "MinConfirmation": 6, 1999 | "TxFee": 0.02, 2000 | "IsActive": true, 2001 | "CoinType": "BITCOIN", 2002 | "BaseAddress": null, 2003 | "Notice": null 2004 | }, 2005 | { 2006 | "Currency": "SBD", 2007 | "CurrencyLong": "SteemDollars", 2008 | "MinConfirmation": 20, 2009 | "TxFee": 0.01, 2010 | "IsActive": true, 2011 | "CoinType": "STEEM", 2012 | "BaseAddress": "bittrex", 2013 | "Notice": null 2014 | }, 2015 | { 2016 | "Currency": "BRX", 2017 | "CurrencyLong": "Breakout Stake", 2018 | "MinConfirmation": 6, 2019 | "TxFee": 0.02, 2020 | "IsActive": true, 2021 | "CoinType": "BITCOIN", 2022 | "BaseAddress": null, 2023 | "Notice": "" 2024 | }, 2025 | { 2026 | "Currency": "DRACO", 2027 | "CurrencyLong": "DT Token", 2028 | "MinConfirmation": 10, 2029 | "TxFee": 2, 2030 | "IsActive": true, 2031 | "CoinType": "NXT_MS", 2032 | "BaseAddress": "NXT-BAVX-TWZC-C9GH-FW9LJ", 2033 | "Notice": null 2034 | }, 2035 | { 2036 | "Currency": "ETC", 2037 | "CurrencyLong": "Ethereum Classic", 2038 | "MinConfirmation": 72, 2039 | "TxFee": 0.01, 2040 | "IsActive": true, 2041 | "CoinType": "ETH", 2042 | "BaseAddress": "0xe592b0d8baa2cb677034389b76a71b0d1823e0d1", 2043 | "Notice": null 2044 | }, 2045 | { 2046 | "Currency": "UNIQ", 2047 | "CurrencyLong": "Uniqredit", 2048 | "MinConfirmation": 6, 2049 | "TxFee": 0.1, 2050 | "IsActive": true, 2051 | "CoinType": "BITCOIN", 2052 | "BaseAddress": null, 2053 | "Notice": null 2054 | }, 2055 | { 2056 | "Currency": "STRAT", 2057 | "CurrencyLong": "Stratis", 2058 | "MinConfirmation": 6, 2059 | "TxFee": 0.2, 2060 | "IsActive": true, 2061 | "CoinType": "BITCOIN", 2062 | "BaseAddress": null, 2063 | "Notice": null 2064 | }, 2065 | { 2066 | "Currency": "UNB", 2067 | "CurrencyLong": "UnbreakableCoin", 2068 | "MinConfirmation": 6, 2069 | "TxFee": 0.2, 2070 | "IsActive": false, 2071 | "CoinType": "BITCOIN", 2072 | "BaseAddress": null, 2073 | "Notice": "Automated Maintenance." 2074 | }, 2075 | { 2076 | "Currency": "SYNX", 2077 | "CurrencyLong": "Syndicate", 2078 | "MinConfirmation": 6, 2079 | "TxFee": 0.2, 2080 | "IsActive": true, 2081 | "CoinType": "BITCOIN", 2082 | "BaseAddress": null, 2083 | "Notice": null 2084 | }, 2085 | { 2086 | "Currency": "TRIG", 2087 | "CurrencyLong": "TRIG Token", 2088 | "MinConfirmation": 2, 2089 | "TxFee": 50, 2090 | "IsActive": true, 2091 | "CoinType": "COUNTERPARTY", 2092 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 2093 | "Notice": null 2094 | }, 2095 | { 2096 | "Currency": "EBST", 2097 | "CurrencyLong": "eBoost", 2098 | "MinConfirmation": 2, 2099 | "TxFee": 0.1, 2100 | "IsActive": true, 2101 | "CoinType": "BITCOIN", 2102 | "BaseAddress": null, 2103 | "Notice": null 2104 | }, 2105 | { 2106 | "Currency": "VRM", 2107 | "CurrencyLong": "Verium", 2108 | "MinConfirmation": 6, 2109 | "TxFee": 0.4, 2110 | "IsActive": true, 2111 | "CoinType": "BITCOIN", 2112 | "BaseAddress": null, 2113 | "Notice": null 2114 | }, 2115 | { 2116 | "Currency": "XAUR", 2117 | "CurrencyLong": "Xaurum", 2118 | "MinConfirmation": 36, 2119 | "TxFee": 0.1, 2120 | "IsActive": true, 2121 | "CoinType": "ETH_CONTRACT", 2122 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2123 | "Notice": null 2124 | }, 2125 | { 2126 | "Currency": "SEQ", 2127 | "CurrencyLong": "Sequence", 2128 | "MinConfirmation": 6, 2129 | "TxFee": 0.2, 2130 | "IsActive": true, 2131 | "CoinType": "BITCOIN", 2132 | "BaseAddress": null, 2133 | "Notice": null 2134 | }, 2135 | { 2136 | "Currency": "SNGLS", 2137 | "CurrencyLong": "SingularDTV", 2138 | "MinConfirmation": 36, 2139 | "TxFee": 1, 2140 | "IsActive": true, 2141 | "CoinType": "ETH_CONTRACT", 2142 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2143 | "Notice": null 2144 | }, 2145 | { 2146 | "Currency": "JWL", 2147 | "CurrencyLong": "Jewel", 2148 | "MinConfirmation": 6, 2149 | "TxFee": 0.2, 2150 | "IsActive": true, 2151 | "CoinType": "BITCOIN", 2152 | "BaseAddress": null, 2153 | "Notice": null 2154 | }, 2155 | { 2156 | "Currency": "REP", 2157 | "CurrencyLong": "Augur", 2158 | "MinConfirmation": 36, 2159 | "TxFee": 0.1, 2160 | "IsActive": true, 2161 | "CoinType": "ETH_CONTRACT", 2162 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2163 | "Notice": null 2164 | }, 2165 | { 2166 | "Currency": "SHIFT", 2167 | "CurrencyLong": "Shift", 2168 | "MinConfirmation": 77, 2169 | "TxFee": 0.1, 2170 | "IsActive": true, 2171 | "CoinType": "LISK", 2172 | "BaseAddress": "15128408768964966812S", 2173 | "Notice": null 2174 | }, 2175 | { 2176 | "Currency": "ARDR", 2177 | "CurrencyLong": "Ardor", 2178 | "MinConfirmation": 10, 2179 | "TxFee": 2, 2180 | "IsActive": true, 2181 | "CoinType": "NXT_ASSET", 2182 | "BaseAddress": "NXT-XK2L-Z7NK-VNKM-AZYVT", 2183 | "Notice": null 2184 | }, 2185 | { 2186 | "Currency": "XZC", 2187 | "CurrencyLong": "ZCoin", 2188 | "MinConfirmation": 6, 2189 | "TxFee": 0.02, 2190 | "IsActive": true, 2191 | "CoinType": "BITCOIN", 2192 | "BaseAddress": null, 2193 | "Notice": null 2194 | }, 2195 | { 2196 | "Currency": "ANS", 2197 | "CurrencyLong": "AntShares", 2198 | "MinConfirmation": 10, 2199 | "TxFee": 1, 2200 | "IsActive": true, 2201 | "CoinType": "ANTSHARES", 2202 | "BaseAddress": null, 2203 | "Notice": null 2204 | }, 2205 | { 2206 | "Currency": "ZEC", 2207 | "CurrencyLong": "ZCash", 2208 | "MinConfirmation": 30, 2209 | "TxFee": 0.0002, 2210 | "IsActive": true, 2211 | "CoinType": "BITCOINEX", 2212 | "BaseAddress": null, 2213 | "Notice": null 2214 | }, 2215 | { 2216 | "Currency": "ZCL", 2217 | "CurrencyLong": "Zclassic", 2218 | "MinConfirmation": 30, 2219 | "TxFee": 0.002, 2220 | "IsActive": false, 2221 | "CoinType": "BITCOINEX", 2222 | "BaseAddress": null, 2223 | "Notice": null 2224 | }, 2225 | { 2226 | "Currency": "IOP", 2227 | "CurrencyLong": "Internet Of People", 2228 | "MinConfirmation": 6, 2229 | "TxFee": 0.2, 2230 | "IsActive": true, 2231 | "CoinType": "BITCOIN", 2232 | "BaseAddress": null, 2233 | "Notice": null 2234 | }, 2235 | { 2236 | "Currency": "DAR", 2237 | "CurrencyLong": "Darcrus", 2238 | "MinConfirmation": 10, 2239 | "TxFee": 1, 2240 | "IsActive": true, 2241 | "CoinType": "NXT_ASSET", 2242 | "BaseAddress": "NXT-4GT5-5AA2-T2KH-67YMX", 2243 | "Notice": null 2244 | }, 2245 | { 2246 | "Currency": "GOLOS", 2247 | "CurrencyLong": "Golos", 2248 | "MinConfirmation": 20, 2249 | "TxFee": 0.01, 2250 | "IsActive": false, 2251 | "CoinType": "STEEM", 2252 | "BaseAddress": "bittrex", 2253 | "Notice": "Wallet Maintenance" 2254 | }, 2255 | { 2256 | "Currency": "GBG", 2257 | "CurrencyLong": "Gbg", 2258 | "MinConfirmation": 20, 2259 | "TxFee": 0.01, 2260 | "IsActive": false, 2261 | "CoinType": "STEEM", 2262 | "BaseAddress": "bittrex", 2263 | "Notice": "Wallet Maintenance" 2264 | }, 2265 | { 2266 | "Currency": "UBQ", 2267 | "CurrencyLong": "Ubiq", 2268 | "MinConfirmation": 80, 2269 | "TxFee": 0.01, 2270 | "IsActive": true, 2271 | "CoinType": "ETH", 2272 | "BaseAddress": "0xb3c4e9ca7c12a6277deb9eef2dece65953d1c864", 2273 | "Notice": null 2274 | }, 2275 | { 2276 | "Currency": "HKG", 2277 | "CurrencyLong": "HackerGold", 2278 | "MinConfirmation": 36, 2279 | "TxFee": 0.1, 2280 | "IsActive": true, 2281 | "CoinType": "ETH_CONTRACT", 2282 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2283 | "Notice": null 2284 | }, 2285 | { 2286 | "Currency": "KMD", 2287 | "CurrencyLong": "Komodo", 2288 | "MinConfirmation": 30, 2289 | "TxFee": 0.002, 2290 | "IsActive": true, 2291 | "CoinType": "BITCOINEX", 2292 | "BaseAddress": null, 2293 | "Notice": null 2294 | }, 2295 | { 2296 | "Currency": "SIB", 2297 | "CurrencyLong": "Siberian Chervonets", 2298 | "MinConfirmation": 6, 2299 | "TxFee": 0.2, 2300 | "IsActive": true, 2301 | "CoinType": "BITCOIN", 2302 | "BaseAddress": null, 2303 | "Notice": null 2304 | }, 2305 | { 2306 | "Currency": "ION", 2307 | "CurrencyLong": "Ion", 2308 | "MinConfirmation": 6, 2309 | "TxFee": 0.2, 2310 | "IsActive": true, 2311 | "CoinType": "BITCOIN", 2312 | "BaseAddress": null, 2313 | "Notice": null 2314 | }, 2315 | { 2316 | "Currency": "LMC", 2317 | "CurrencyLong": "Lomocoin", 2318 | "MinConfirmation": 6, 2319 | "TxFee": 0.2, 2320 | "IsActive": true, 2321 | "CoinType": "BITCOIN", 2322 | "BaseAddress": null, 2323 | "Notice": null 2324 | }, 2325 | { 2326 | "Currency": "QWARK", 2327 | "CurrencyLong": "Qwark", 2328 | "MinConfirmation": 36, 2329 | "TxFee": 0.1, 2330 | "IsActive": true, 2331 | "CoinType": "ETH_CONTRACT", 2332 | "BaseAddress": "0xb3c4e9ca7c12a6277deb9eef2dece65953d1c864", 2333 | "Notice": null 2334 | }, 2335 | { 2336 | "Currency": "CRW", 2337 | "CurrencyLong": "Crown", 2338 | "MinConfirmation": 10, 2339 | "TxFee": 0.2, 2340 | "IsActive": true, 2341 | "CoinType": "BITCOIN", 2342 | "BaseAddress": null, 2343 | "Notice": null 2344 | }, 2345 | { 2346 | "Currency": "SWT", 2347 | "CurrencyLong": "Swarm City Token", 2348 | "MinConfirmation": 36, 2349 | "TxFee": 0.1, 2350 | "IsActive": true, 2351 | "CoinType": "ETH_CONTRACT", 2352 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2353 | "Notice": null 2354 | }, 2355 | { 2356 | "Currency": "TIME", 2357 | "CurrencyLong": "Chronobank Time", 2358 | "MinConfirmation": 36, 2359 | "TxFee": 0.1, 2360 | "IsActive": true, 2361 | "CoinType": "ETH_CONTRACT", 2362 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2363 | "Notice": null 2364 | }, 2365 | { 2366 | "Currency": "MLN", 2367 | "CurrencyLong": "Melon", 2368 | "MinConfirmation": 36, 2369 | "TxFee": 0.003, 2370 | "IsActive": true, 2371 | "CoinType": "ETH_CONTRACT", 2372 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2373 | "Notice": null 2374 | }, 2375 | { 2376 | "Currency": "TKS", 2377 | "CurrencyLong": "Tokes", 2378 | "MinConfirmation": 20, 2379 | "TxFee": 0.1, 2380 | "IsActive": true, 2381 | "CoinType": "WAVES_ASSET", 2382 | "BaseAddress": "3P31zvGdh6ai6JK6zZ18TjYzJsa1B83YPoj", 2383 | "Notice": null 2384 | }, 2385 | { 2386 | "Currency": "ARK", 2387 | "CurrencyLong": "Ark", 2388 | "MinConfirmation": 51, 2389 | "TxFee": 0.1, 2390 | "IsActive": true, 2391 | "CoinType": "LISK", 2392 | "BaseAddress": "AUexKjGtgsSpVzPLs6jNMM6vJ6znEVTQWK", 2393 | "Notice": null 2394 | }, 2395 | { 2396 | "Currency": "DYN", 2397 | "CurrencyLong": "Dynamic", 2398 | "MinConfirmation": 10, 2399 | "TxFee": 0.02, 2400 | "IsActive": true, 2401 | "CoinType": "BITCOIN", 2402 | "BaseAddress": null, 2403 | "Notice": null 2404 | }, 2405 | { 2406 | "Currency": "MUSIC", 2407 | "CurrencyLong": "Musicoin", 2408 | "MinConfirmation": 36, 2409 | "TxFee": 0.01, 2410 | "IsActive": true, 2411 | "CoinType": "ETH", 2412 | "BaseAddress": "0xea62a60b127efd524b6e19791bcb374a49302c71", 2413 | "Notice": null 2414 | }, 2415 | { 2416 | "Currency": "DTB", 2417 | "CurrencyLong": "Databits", 2418 | "MinConfirmation": 2, 2419 | "TxFee": 5, 2420 | "IsActive": true, 2421 | "CoinType": "COUNTERPARTY", 2422 | "BaseAddress": "1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6", 2423 | "Notice": null 2424 | }, 2425 | { 2426 | "Currency": "INCNT", 2427 | "CurrencyLong": "Incent", 2428 | "MinConfirmation": 20, 2429 | "TxFee": 0.1, 2430 | "IsActive": true, 2431 | "CoinType": "WAVES_ASSET", 2432 | "BaseAddress": "3P31zvGdh6ai6JK6zZ18TjYzJsa1B83YPoj", 2433 | "Notice": null 2434 | }, 2435 | { 2436 | "Currency": "GBYTE", 2437 | "CurrencyLong": "Byteball", 2438 | "MinConfirmation": 1, 2439 | "TxFee": 0.002, 2440 | "IsActive": true, 2441 | "CoinType": "BYTEBALL", 2442 | "BaseAddress": null, 2443 | "Notice": null 2444 | }, 2445 | { 2446 | "Currency": "GNT", 2447 | "CurrencyLong": "Golem", 2448 | "MinConfirmation": 36, 2449 | "TxFee": 0.01, 2450 | "IsActive": true, 2451 | "CoinType": "ETH_CONTRACT", 2452 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2453 | "Notice": null 2454 | }, 2455 | { 2456 | "Currency": "NXC", 2457 | "CurrencyLong": "Nexium", 2458 | "MinConfirmation": 36, 2459 | "TxFee": 0.01, 2460 | "IsActive": true, 2461 | "CoinType": "ETH_CONTRACT", 2462 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2463 | "Notice": null 2464 | }, 2465 | { 2466 | "Currency": "EDG", 2467 | "CurrencyLong": "Edgeless", 2468 | "MinConfirmation": 36, 2469 | "TxFee": 1, 2470 | "IsActive": true, 2471 | "CoinType": "ETH_CONTRACT", 2472 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2473 | "Notice": null 2474 | }, 2475 | { 2476 | "Currency": "LGD", 2477 | "CurrencyLong": "Legends", 2478 | "MinConfirmation": 36, 2479 | "TxFee": 0.01, 2480 | "IsActive": true, 2481 | "CoinType": "ETH_CONTRACT", 2482 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2483 | "Notice": null 2484 | }, 2485 | { 2486 | "Currency": "TRST", 2487 | "CurrencyLong": "Trustcoin", 2488 | "MinConfirmation": 36, 2489 | "TxFee": 0.01, 2490 | "IsActive": true, 2491 | "CoinType": "ETH_CONTRACT", 2492 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2493 | "Notice": null 2494 | }, 2495 | { 2496 | "Currency": "WINGS", 2497 | "CurrencyLong": "Wings DAO", 2498 | "MinConfirmation": 36, 2499 | "TxFee": 0.01, 2500 | "IsActive": true, 2501 | "CoinType": "ETH_CONTRACT", 2502 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2503 | "Notice": null 2504 | }, 2505 | { 2506 | "Currency": "RLC", 2507 | "CurrencyLong": "iEx.ec", 2508 | "MinConfirmation": 36, 2509 | "TxFee": 0.01, 2510 | "IsActive": true, 2511 | "CoinType": "ETH_CONTRACT", 2512 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2513 | "Notice": null 2514 | }, 2515 | { 2516 | "Currency": "GNO", 2517 | "CurrencyLong": "Gnosis", 2518 | "MinConfirmation": 36, 2519 | "TxFee": 0.005, 2520 | "IsActive": true, 2521 | "CoinType": "ETH_CONTRACT", 2522 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2523 | "Notice": null 2524 | }, 2525 | { 2526 | "Currency": "GUP", 2527 | "CurrencyLong": "Guppy", 2528 | "MinConfirmation": 36, 2529 | "TxFee": 0.01, 2530 | "IsActive": true, 2531 | "CoinType": "ETH_CONTRACT", 2532 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2533 | "Notice": null 2534 | }, 2535 | { 2536 | "Currency": "LUN", 2537 | "CurrencyLong": "Lunyr", 2538 | "MinConfirmation": 36, 2539 | "TxFee": 0.01, 2540 | "IsActive": true, 2541 | "CoinType": "ETH_CONTRACT", 2542 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2543 | "Notice": null 2544 | }, 2545 | { 2546 | "Currency": "APX", 2547 | "CurrencyLong": "Apx", 2548 | "MinConfirmation": 36, 2549 | "TxFee": 0.1, 2550 | "IsActive": true, 2551 | "CoinType": "ETH_CONTRACT", 2552 | "BaseAddress": "0xb3c4e9ca7c12a6277deb9eef2dece65953d1c864", 2553 | "Notice": null 2554 | }, 2555 | { 2556 | "Currency": "TKN", 2557 | "CurrencyLong": "TokenCard", 2558 | "MinConfirmation": 36, 2559 | "TxFee": 0.01, 2560 | "IsActive": true, 2561 | "CoinType": "ETH_CONTRACT", 2562 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2563 | "Notice": null 2564 | }, 2565 | { 2566 | "Currency": "HMQ", 2567 | "CurrencyLong": "Humaniq", 2568 | "MinConfirmation": 36, 2569 | "TxFee": 0.01, 2570 | "IsActive": true, 2571 | "CoinType": "ETH_CONTRACT", 2572 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2573 | "Notice": null 2574 | }, 2575 | { 2576 | "Currency": "ANT", 2577 | "CurrencyLong": "Aragon", 2578 | "MinConfirmation": 36, 2579 | "TxFee": 0.01, 2580 | "IsActive": true, 2581 | "CoinType": "ETH_CONTRACT", 2582 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2583 | "Notice": null 2584 | }, 2585 | { 2586 | "Currency": "ZEN", 2587 | "CurrencyLong": "ZenCash", 2588 | "MinConfirmation": 30, 2589 | "TxFee": 0.002, 2590 | "IsActive": false, 2591 | "CoinType": "BITCOINEX", 2592 | "BaseAddress": null, 2593 | "Notice": null 2594 | }, 2595 | { 2596 | "Currency": "SC", 2597 | "CurrencyLong": "Siacoin", 2598 | "MinConfirmation": 6, 2599 | "TxFee": 0.1, 2600 | "IsActive": true, 2601 | "CoinType": "SIA", 2602 | "BaseAddress": null, 2603 | "Notice": null 2604 | }, 2605 | { 2606 | "Currency": "BAT", 2607 | "CurrencyLong": "Basic Attention Token", 2608 | "MinConfirmation": 36, 2609 | "TxFee": 0.01, 2610 | "IsActive": true, 2611 | "CoinType": "ETH_CONTRACT", 2612 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2613 | "Notice": null 2614 | }, 2615 | { 2616 | "Currency": "1ST", 2617 | "CurrencyLong": "Firstblood", 2618 | "MinConfirmation": 36, 2619 | "TxFee": 0.01, 2620 | "IsActive": true, 2621 | "CoinType": "ETH_CONTRACT", 2622 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2623 | "Notice": null 2624 | }, 2625 | { 2626 | "Currency": "QRL", 2627 | "CurrencyLong": "Quantum Resistant Ledger", 2628 | "MinConfirmation": 36, 2629 | "TxFee": 0.01, 2630 | "IsActive": true, 2631 | "CoinType": "ETH_CONTRACT", 2632 | "BaseAddress": "0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98", 2633 | "Notice": null 2634 | } 2635 | ] 2636 | } -------------------------------------------------------------------------------- /src/test/resources/publicapi/getmarkethistory.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": [ 5 | { 6 | "Id": 72820919, 7 | "TimeStamp": "2017-06-10T10:48:08.403", 8 | "Quantity": 4.3275995, 9 | "Price": 0.10170002, 10 | "Total": 0.44011695, 11 | "FillType": "PARTIAL_FILL", 12 | "OrderType": "SELL" 13 | }, 14 | { 15 | "Id": 72820918, 16 | "TimeStamp": "2017-06-10T10:48:08.403", 17 | "Quantity": 0.2, 18 | "Price": 0.10175, 19 | "Total": 0.02035, 20 | "FillType": "FILL", 21 | "OrderType": "SELL" 22 | }, 23 | { 24 | "Id": 72820917, 25 | "TimeStamp": "2017-06-10T10:48:08.403", 26 | "Quantity": 0.35262136, 27 | "Price": 0.10175918, 28 | "Total": 0.03588246, 29 | "FillType": "FILL", 30 | "OrderType": "SELL" 31 | }, 32 | { 33 | "Id": 72820916, 34 | "TimeStamp": "2017-06-10T10:48:08.403", 35 | "Quantity": 0.44589699, 36 | "Price": 0.10178999, 37 | "Total": 0.04538785, 38 | "FillType": "FILL", 39 | "OrderType": "SELL" 40 | }, 41 | { 42 | "Id": 72820915, 43 | "TimeStamp": "2017-06-10T10:48:08.403", 44 | "Quantity": 0.00540318, 45 | "Price": 0.10179189, 46 | "Total": 0.00054999, 47 | "FillType": "FILL", 48 | "OrderType": "SELL" 49 | }, 50 | { 51 | "Id": 72820914, 52 | "TimeStamp": "2017-06-10T10:48:08.403", 53 | "Quantity": 0.1, 54 | "Price": 0.1017945, 55 | "Total": 0.01017945, 56 | "FillType": "FILL", 57 | "OrderType": "SELL" 58 | }, 59 | { 60 | "Id": 72820913, 61 | "TimeStamp": "2017-06-10T10:48:08.403", 62 | "Quantity": 0.02679422, 63 | "Price": 0.10180479, 64 | "Total": 0.00272777, 65 | "FillType": "FILL", 66 | "OrderType": "SELL" 67 | }, 68 | { 69 | "Id": 72820912, 70 | "TimeStamp": "2017-06-10T10:48:08.403", 71 | "Quantity": 0.0827121, 72 | "Price": 0.10185567, 73 | "Total": 0.00842469, 74 | "FillType": "FILL", 75 | "OrderType": "SELL" 76 | }, 77 | { 78 | "Id": 72820911, 79 | "TimeStamp": "2017-06-10T10:48:08.403", 80 | "Quantity": 0.00491651, 81 | "Price": 0.10186381, 82 | "Total": 0.00050081, 83 | "FillType": "FILL", 84 | "OrderType": "SELL" 85 | }, 86 | { 87 | "Id": 72820910, 88 | "TimeStamp": "2017-06-10T10:48:08.403", 89 | "Quantity": 0.055392, 90 | "Price": 0.10186381, 91 | "Total": 0.00564244, 92 | "FillType": "FILL", 93 | "OrderType": "SELL" 94 | }, 95 | { 96 | "Id": 72820890, 97 | "TimeStamp": "2017-06-10T10:48:04.653", 98 | "Quantity": 0.57167812, 99 | "Price": 0.1019, 100 | "Total": 0.058254, 101 | "FillType": "FILL", 102 | "OrderType": "BUY" 103 | }, 104 | { 105 | "Id": 72820815, 106 | "TimeStamp": "2017-06-10T10:47:52.293", 107 | "Quantity": 5.64787601, 108 | "Price": 0.1019, 109 | "Total": 0.57551856, 110 | "FillType": "FILL", 111 | "OrderType": "BUY" 112 | }, 113 | { 114 | "Id": 72820792, 115 | "TimeStamp": "2017-06-10T10:47:48.37", 116 | "Quantity": 0.33852719, 117 | "Price": 0.1019, 118 | "Total": 0.03449592, 119 | "FillType": "FILL", 120 | "OrderType": "SELL" 121 | }, 122 | { 123 | "Id": 72820786, 124 | "TimeStamp": "2017-06-10T10:47:47.213", 125 | "Quantity": 1.98133203, 126 | "Price": 0.1019, 127 | "Total": 0.20189773, 128 | "FillType": "PARTIAL_FILL", 129 | "OrderType": "SELL" 130 | }, 131 | { 132 | "Id": 72820785, 133 | "TimeStamp": "2017-06-10T10:47:47.213", 134 | "Quantity": 4.01866797, 135 | "Price": 0.1019, 136 | "Total": 0.40950226, 137 | "FillType": "FILL", 138 | "OrderType": "SELL" 139 | }, 140 | { 141 | "Id": 72820732, 142 | "TimeStamp": "2017-06-10T10:47:32.48", 143 | "Quantity": 0.40060529, 144 | "Price": 0.10199518, 145 | "Total": 0.0408598, 146 | "FillType": "FILL", 147 | "OrderType": "BUY" 148 | }, 149 | { 150 | "Id": 72820731, 151 | "TimeStamp": "2017-06-10T10:47:32.48", 152 | "Quantity": 1.93382609, 153 | "Price": 0.101995, 154 | "Total": 0.19724059, 155 | "FillType": "PARTIAL_FILL", 156 | "OrderType": "BUY" 157 | }, 158 | { 159 | "Id": 72820663, 160 | "TimeStamp": "2017-06-10T10:47:21.667", 161 | "Quantity": 0.12924996, 162 | "Price": 0.1019, 163 | "Total": 0.01317057, 164 | "FillType": "PARTIAL_FILL", 165 | "OrderType": "SELL" 166 | }, 167 | { 168 | "Id": 72820562, 169 | "TimeStamp": "2017-06-10T10:47:14.23", 170 | "Quantity": 0.05391892, 171 | "Price": 0.1019, 172 | "Total": 0.00549433, 173 | "FillType": "PARTIAL_FILL", 174 | "OrderType": "SELL" 175 | }, 176 | { 177 | "Id": 72820559, 178 | "TimeStamp": "2017-06-10T10:47:14.01", 179 | "Quantity": 0.49071924, 180 | "Price": 0.10199518, 181 | "Total": 0.05005099, 182 | "FillType": "FILL", 183 | "OrderType": "BUY" 184 | }, 185 | { 186 | "Id": 72820548, 187 | "TimeStamp": "2017-06-10T10:47:11.697", 188 | "Quantity": 1, 189 | "Price": 0.10199518, 190 | "Total": 0.10199518, 191 | "FillType": "FILL", 192 | "OrderType": "BUY" 193 | }, 194 | { 195 | "Id": 72820545, 196 | "TimeStamp": "2017-06-10T10:47:11.15", 197 | "Quantity": 1.2, 198 | "Price": 0.10199518, 199 | "Total": 0.12239421, 200 | "FillType": "FILL", 201 | "OrderType": "BUY" 202 | }, 203 | { 204 | "Id": 72820543, 205 | "TimeStamp": "2017-06-10T10:47:10.493", 206 | "Quantity": 0.800889, 207 | "Price": 0.10199518, 208 | "Total": 0.08168681, 209 | "FillType": "FILL", 210 | "OrderType": "BUY" 211 | }, 212 | { 213 | "Id": 72820539, 214 | "TimeStamp": "2017-06-10T10:47:08.993", 215 | "Quantity": 2.37374234, 216 | "Price": 0.1019, 217 | "Total": 0.24188434, 218 | "FillType": "PARTIAL_FILL", 219 | "OrderType": "SELL" 220 | }, 221 | { 222 | "Id": 72820513, 223 | "TimeStamp": "2017-06-10T10:47:04.167", 224 | "Quantity": 0.06030851, 225 | "Price": 0.1019, 226 | "Total": 0.00614543, 227 | "FillType": "PARTIAL_FILL", 228 | "OrderType": "SELL" 229 | }, 230 | { 231 | "Id": 72820507, 232 | "TimeStamp": "2017-06-10T10:47:03.87", 233 | "Quantity": 0.54596145, 234 | "Price": 0.1019, 235 | "Total": 0.05563347, 236 | "FillType": "PARTIAL_FILL", 237 | "OrderType": "BUY" 238 | }, 239 | { 240 | "Id": 72820404, 241 | "TimeStamp": "2017-06-10T10:46:44.883", 242 | "Quantity": 0.14, 243 | "Price": 0.1019, 244 | "Total": 0.014266, 245 | "FillType": "FILL", 246 | "OrderType": "BUY" 247 | }, 248 | { 249 | "Id": 72820402, 250 | "TimeStamp": "2017-06-10T10:46:43.883", 251 | "Quantity": 0.43037672, 252 | "Price": 0.1019, 253 | "Total": 0.04385538, 254 | "FillType": "FILL", 255 | "OrderType": "BUY" 256 | }, 257 | { 258 | "Id": 72820401, 259 | "TimeStamp": "2017-06-10T10:46:43.883", 260 | "Quantity": 0.48593486, 261 | "Price": 0.10189999, 262 | "Total": 0.04951675, 263 | "FillType": "PARTIAL_FILL", 264 | "OrderType": "BUY" 265 | }, 266 | { 267 | "Id": 72820386, 268 | "TimeStamp": "2017-06-10T10:46:40.57", 269 | "Quantity": 0.0049166, 270 | "Price": 0.10189999, 271 | "Total": 0.000501, 272 | "FillType": "FILL", 273 | "OrderType": "BUY" 274 | }, 275 | { 276 | "Id": 72820361, 277 | "TimeStamp": "2017-06-10T10:46:35.993", 278 | "Quantity": 0.00366183, 279 | "Price": 0.10199516, 280 | "Total": 0.00037348, 281 | "FillType": "FILL", 282 | "OrderType": "SELL" 283 | }, 284 | { 285 | "Id": 72820359, 286 | "TimeStamp": "2017-06-10T10:46:35.853", 287 | "Quantity": 1.00757576, 288 | "Price": 0.10199516, 289 | "Total": 0.10276785, 290 | "FillType": "PARTIAL_FILL", 291 | "OrderType": "BUY" 292 | }, 293 | { 294 | "Id": 72820358, 295 | "TimeStamp": "2017-06-10T10:46:35.853", 296 | "Quantity": 4.337396, 297 | "Price": 0.10199516, 298 | "Total": 0.44239339, 299 | "FillType": "PARTIAL_FILL", 300 | "OrderType": "BUY" 301 | }, 302 | { 303 | "Id": 72820351, 304 | "TimeStamp": "2017-06-10T10:46:34.383", 305 | "Quantity": 0.01562422, 306 | "Price": 0.10199516, 307 | "Total": 0.00159359, 308 | "FillType": "FILL", 309 | "OrderType": "BUY" 310 | }, 311 | { 312 | "Id": 72820350, 313 | "TimeStamp": "2017-06-10T10:46:34.383", 314 | "Quantity": 1.85437578, 315 | "Price": 0.10199516, 316 | "Total": 0.18913735, 317 | "FillType": "PARTIAL_FILL", 318 | "OrderType": "BUY" 319 | }, 320 | { 321 | "Id": 72820339, 322 | "TimeStamp": "2017-06-10T10:46:32.37", 323 | "Quantity": 0.00491683, 324 | "Price": 0.1019, 325 | "Total": 0.00050102, 326 | "FillType": "FILL", 327 | "OrderType": "SELL" 328 | }, 329 | { 330 | "Id": 72820329, 331 | "TimeStamp": "2017-06-10T10:46:29.57", 332 | "Quantity": 0.49071933, 333 | "Price": 0.10199516, 334 | "Total": 0.05005099, 335 | "FillType": "FILL", 336 | "OrderType": "BUY" 337 | }, 338 | { 339 | "Id": 72820298, 340 | "TimeStamp": "2017-06-10T10:46:22.353", 341 | "Quantity": 0.35058458, 342 | "Price": 0.10199516, 343 | "Total": 0.03575793, 344 | "FillType": "FILL", 345 | "OrderType": "BUY" 346 | }, 347 | { 348 | "Id": 72820286, 349 | "TimeStamp": "2017-06-10T10:46:19.79", 350 | "Quantity": 0.58931256, 351 | "Price": 0.1019, 352 | "Total": 0.06005094, 353 | "FillType": "FILL", 354 | "OrderType": "SELL" 355 | }, 356 | { 357 | "Id": 72820285, 358 | "TimeStamp": "2017-06-10T10:46:19.79", 359 | "Quantity": 16.04161776, 360 | "Price": 0.1019, 361 | "Total": 1.63464084, 362 | "FillType": "FILL", 363 | "OrderType": "SELL" 364 | }, 365 | { 366 | "Id": 72820281, 367 | "TimeStamp": "2017-06-10T10:46:17.977", 368 | "Quantity": 11.40424135, 369 | "Price": 0.1019, 370 | "Total": 1.16209219, 371 | "FillType": "PARTIAL_FILL", 372 | "OrderType": "SELL" 373 | }, 374 | { 375 | "Id": 72820244, 376 | "TimeStamp": "2017-06-10T10:46:08.4", 377 | "Quantity": 0.15579727, 378 | "Price": 0.10199516, 379 | "Total": 0.01589056, 380 | "FillType": "FILL", 381 | "OrderType": "BUY" 382 | }, 383 | { 384 | "Id": 72820214, 385 | "TimeStamp": "2017-06-10T10:45:59.477", 386 | "Quantity": 0.00491326, 387 | "Price": 0.10199518, 388 | "Total": 0.00050112, 389 | "FillType": "FILL", 390 | "OrderType": "SELL" 391 | }, 392 | { 393 | "Id": 72820154, 394 | "TimeStamp": "2017-06-10T10:45:45.477", 395 | "Quantity": 1.92115818, 396 | "Price": 0.1019, 397 | "Total": 0.19576601, 398 | "FillType": "PARTIAL_FILL", 399 | "OrderType": "SELL" 400 | }, 401 | { 402 | "Id": 72820153, 403 | "TimeStamp": "2017-06-10T10:45:45.477", 404 | "Quantity": 0.42938599, 405 | "Price": 0.10194534, 406 | "Total": 0.0437739, 407 | "FillType": "FILL", 408 | "OrderType": "SELL" 409 | }, 410 | { 411 | "Id": 72820152, 412 | "TimeStamp": "2017-06-10T10:45:45.477", 413 | "Quantity": 0.10060698, 414 | "Price": 0.10194899, 415 | "Total": 0.01025677, 416 | "FillType": "FILL", 417 | "OrderType": "SELL" 418 | }, 419 | { 420 | "Id": 72820151, 421 | "TimeStamp": "2017-06-10T10:45:45.477", 422 | "Quantity": 0.00639507, 423 | "Price": 0.10197414, 424 | "Total": 0.00065213, 425 | "FillType": "FILL", 426 | "OrderType": "SELL" 427 | }, 428 | { 429 | "Id": 72820150, 430 | "TimeStamp": "2017-06-10T10:45:45.477", 431 | "Quantity": 0.00135143, 432 | "Price": 0.1019777, 433 | "Total": 0.00013781, 434 | "FillType": "FILL", 435 | "OrderType": "SELL" 436 | }, 437 | { 438 | "Id": 72820128, 439 | "TimeStamp": "2017-06-10T10:45:41.04", 440 | "Quantity": 0.36085644, 441 | "Price": 0.1026023, 442 | "Total": 0.0370247, 443 | "FillType": "FILL", 444 | "OrderType": "BUY" 445 | }, 446 | { 447 | "Id": 72819962, 448 | "TimeStamp": "2017-06-10T10:45:21.443", 449 | "Quantity": 0.13379255, 450 | "Price": 0.10260232, 451 | "Total": 0.01372742, 452 | "FillType": "FILL", 453 | "OrderType": "BUY" 454 | }, 455 | { 456 | "Id": 72819961, 457 | "TimeStamp": "2017-06-10T10:45:21.443", 458 | "Quantity": 0.11182967, 459 | "Price": 0.10200001, 460 | "Total": 0.01140662, 461 | "FillType": "PARTIAL_FILL", 462 | "OrderType": "BUY" 463 | }, 464 | { 465 | "Id": 72819960, 466 | "TimeStamp": "2017-06-10T10:45:21.443", 467 | "Quantity": 0.0995173, 468 | "Price": 0.10200001, 469 | "Total": 0.01015076, 470 | "FillType": "PARTIAL_FILL", 471 | "OrderType": "BUY" 472 | }, 473 | { 474 | "Id": 72819959, 475 | "TimeStamp": "2017-06-10T10:45:21.443", 476 | "Quantity": 0.00544506, 477 | "Price": 0.10200001, 478 | "Total": 0.00055539, 479 | "FillType": "PARTIAL_FILL", 480 | "OrderType": "BUY" 481 | }, 482 | { 483 | "Id": 72819947, 484 | "TimeStamp": "2017-06-10T10:45:19.867", 485 | "Quantity": 0.09407224, 486 | "Price": 0.10200001, 487 | "Total": 0.00959536, 488 | "FillType": "FILL", 489 | "OrderType": "BUY" 490 | }, 491 | { 492 | "Id": 72819946, 493 | "TimeStamp": "2017-06-10T10:45:19.867", 494 | "Quantity": 0.00446696, 495 | "Price": 0.10200001, 496 | "Total": 0.00045562, 497 | "FillType": "PARTIAL_FILL", 498 | "OrderType": "BUY" 499 | }, 500 | { 501 | "Id": 72819937, 502 | "TimeStamp": "2017-06-10T10:45:18.193", 503 | "Quantity": 10.05864857, 504 | "Price": 0.1019777, 505 | "Total": 1.02575784, 506 | "FillType": "PARTIAL_FILL", 507 | "OrderType": "SELL" 508 | }, 509 | { 510 | "Id": 72819936, 511 | "TimeStamp": "2017-06-10T10:45:18.193", 512 | "Quantity": 0.00135143, 513 | "Price": 0.10199516, 514 | "Total": 0.00013783, 515 | "FillType": "FILL", 516 | "OrderType": "SELL" 517 | }, 518 | { 519 | "Id": 72819926, 520 | "TimeStamp": "2017-06-10T10:45:15.803", 521 | "Quantity": 0.01960809, 522 | "Price": 0.10199516, 523 | "Total": 0.00199993, 524 | "FillType": "PARTIAL_FILL", 525 | "OrderType": "SELL" 526 | }, 527 | { 528 | "Id": 72819866, 529 | "TimeStamp": "2017-06-10T10:45:05.053", 530 | "Quantity": 0.09109068, 531 | "Price": 0.10200001, 532 | "Total": 0.00929125, 533 | "FillType": "FILL", 534 | "OrderType": "BUY" 535 | }, 536 | { 537 | "Id": 72819864, 538 | "TimeStamp": "2017-06-10T10:45:04.787", 539 | "Quantity": 0.00395966, 540 | "Price": 0.10200001, 541 | "Total": 0.00040388, 542 | "FillType": "FILL", 543 | "OrderType": "BUY" 544 | }, 545 | { 546 | "Id": 72819863, 547 | "TimeStamp": "2017-06-10T10:45:04.787", 548 | "Quantity": 0.08713102, 549 | "Price": 0.10200001, 550 | "Total": 0.00888736, 551 | "FillType": "PARTIAL_FILL", 552 | "OrderType": "BUY" 553 | }, 554 | { 555 | "Id": 72819861, 556 | "TimeStamp": "2017-06-10T10:45:04.473", 557 | "Quantity": 0.01238676, 558 | "Price": 0.10200001, 559 | "Total": 0.00126344, 560 | "FillType": "FILL", 561 | "OrderType": "BUY" 562 | }, 563 | { 564 | "Id": 72819860, 565 | "TimeStamp": "2017-06-10T10:45:04.46", 566 | "Quantity": 0.01143162, 567 | "Price": 0.10200001, 568 | "Total": 0.00116602, 569 | "FillType": "PARTIAL_FILL", 570 | "OrderType": "BUY" 571 | }, 572 | { 573 | "Id": 72819858, 574 | "TimeStamp": "2017-06-10T10:45:04.24", 575 | "Quantity": 0.08808616, 576 | "Price": 0.10200001, 577 | "Total": 0.00898478, 578 | "FillType": "FILL", 579 | "OrderType": "BUY" 580 | }, 581 | { 582 | "Id": 72819857, 583 | "TimeStamp": "2017-06-10T10:45:04.24", 584 | "Quantity": 0.00300452, 585 | "Price": 0.10200001, 586 | "Total": 0.00030646, 587 | "FillType": "PARTIAL_FILL", 588 | "OrderType": "BUY" 589 | }, 590 | { 591 | "Id": 72819822, 592 | "TimeStamp": "2017-06-10T10:44:53.117", 593 | "Quantity": 0.01181054, 594 | "Price": 0.102, 595 | "Total": 0.00120467, 596 | "FillType": "FILL", 597 | "OrderType": "SELL" 598 | }, 599 | { 600 | "Id": 72819821, 601 | "TimeStamp": "2017-06-10T10:44:53.117", 602 | "Quantity": 3, 603 | "Price": 0.102, 604 | "Total": 0.306, 605 | "FillType": "FILL", 606 | "OrderType": "SELL" 607 | }, 608 | { 609 | "Id": 72819820, 610 | "TimeStamp": "2017-06-10T10:44:53.117", 611 | "Quantity": 5.5338937, 612 | "Price": 0.102, 613 | "Total": 0.56445715, 614 | "FillType": "FILL", 615 | "OrderType": "SELL" 616 | }, 617 | { 618 | "Id": 72819815, 619 | "TimeStamp": "2017-06-10T10:44:51.49", 620 | "Quantity": 0.09651278, 621 | "Price": 0.10200001, 622 | "Total": 0.0098443, 623 | "FillType": "FILL", 624 | "OrderType": "BUY" 625 | }, 626 | { 627 | "Id": 72819814, 628 | "TimeStamp": "2017-06-10T10:44:51.49", 629 | "Quantity": 0.09951778, 630 | "Price": 0.10200001, 631 | "Total": 0.01015081, 632 | "FillType": "PARTIAL_FILL", 633 | "OrderType": "BUY" 634 | }, 635 | { 636 | "Id": 72819813, 637 | "TimeStamp": "2017-06-10T10:44:51.49", 638 | "Quantity": 0.09951778, 639 | "Price": 0.10200001, 640 | "Total": 0.01015081, 641 | "FillType": "PARTIAL_FILL", 642 | "OrderType": "BUY" 643 | }, 644 | { 645 | "Id": 72819812, 646 | "TimeStamp": "2017-06-10T10:44:51.49", 647 | "Quantity": 0.09951778, 648 | "Price": 0.10200001, 649 | "Total": 0.01015081, 650 | "FillType": "PARTIAL_FILL", 651 | "OrderType": "BUY" 652 | }, 653 | { 654 | "Id": 72819811, 655 | "TimeStamp": "2017-06-10T10:44:51.49", 656 | "Quantity": 0.09608638, 657 | "Price": 0.10200001, 658 | "Total": 0.00980081, 659 | "FillType": "PARTIAL_FILL", 660 | "OrderType": "BUY" 661 | }, 662 | { 663 | "Id": 72819778, 664 | "TimeStamp": "2017-06-10T10:44:48.1", 665 | "Quantity": 0.0034314, 666 | "Price": 0.10200001, 667 | "Total": 0.00035, 668 | "FillType": "FILL", 669 | "OrderType": "BUY" 670 | }, 671 | { 672 | "Id": 72819777, 673 | "TimeStamp": "2017-06-10T10:44:48.1", 674 | "Quantity": 0.00147858, 675 | "Price": 0.10200001, 676 | "Total": 0.00015081, 677 | "FillType": "PARTIAL_FILL", 678 | "OrderType": "BUY" 679 | }, 680 | { 681 | "Id": 72819767, 682 | "TimeStamp": "2017-06-10T10:44:46.333", 683 | "Quantity": 0.29855192, 684 | "Price": 0.102, 685 | "Total": 0.03045229, 686 | "FillType": "PARTIAL_FILL", 687 | "OrderType": "SELL" 688 | }, 689 | { 690 | "Id": 72819766, 691 | "TimeStamp": "2017-06-10T10:44:45.817", 692 | "Quantity": 29.89713513, 693 | "Price": 0.102, 694 | "Total": 3.04950778, 695 | "FillType": "PARTIAL_FILL", 696 | "OrderType": "SELL" 697 | }, 698 | { 699 | "Id": 72819764, 700 | "TimeStamp": "2017-06-10T10:44:44.77", 701 | "Quantity": 0.29855192, 702 | "Price": 0.102, 703 | "Total": 0.03045229, 704 | "FillType": "PARTIAL_FILL", 705 | "OrderType": "SELL" 706 | }, 707 | { 708 | "Id": 72819763, 709 | "TimeStamp": "2017-06-10T10:44:44.553", 710 | "Quantity": 0.29855192, 711 | "Price": 0.102, 712 | "Total": 0.03045229, 713 | "FillType": "PARTIAL_FILL", 714 | "OrderType": "SELL" 715 | }, 716 | { 717 | "Id": 72819762, 718 | "TimeStamp": "2017-06-10T10:44:44.317", 719 | "Quantity": 0.29855192, 720 | "Price": 0.102, 721 | "Total": 0.03045229, 722 | "FillType": "PARTIAL_FILL", 723 | "OrderType": "SELL" 724 | }, 725 | { 726 | "Id": 72819761, 727 | "TimeStamp": "2017-06-10T10:44:44.1", 728 | "Quantity": 0.29855192, 729 | "Price": 0.102, 730 | "Total": 0.03045229, 731 | "FillType": "PARTIAL_FILL", 732 | "OrderType": "SELL" 733 | }, 734 | { 735 | "Id": 72819760, 736 | "TimeStamp": "2017-06-10T10:44:43.757", 737 | "Quantity": 0.29855192, 738 | "Price": 0.102, 739 | "Total": 0.03045229, 740 | "FillType": "PARTIAL_FILL", 741 | "OrderType": "SELL" 742 | }, 743 | { 744 | "Id": 72819758, 745 | "TimeStamp": "2017-06-10T10:44:43.24", 746 | "Quantity": 0.29855192, 747 | "Price": 0.102, 748 | "Total": 0.03045229, 749 | "FillType": "PARTIAL_FILL", 750 | "OrderType": "SELL" 751 | }, 752 | { 753 | "Id": 72819757, 754 | "TimeStamp": "2017-06-10T10:44:43.037", 755 | "Quantity": 0.29855192, 756 | "Price": 0.102, 757 | "Total": 0.03045229, 758 | "FillType": "PARTIAL_FILL", 759 | "OrderType": "SELL" 760 | }, 761 | { 762 | "Id": 72819755, 763 | "TimeStamp": "2017-06-10T10:44:42.333", 764 | "Quantity": 0.29855192, 765 | "Price": 0.102, 766 | "Total": 0.03045229, 767 | "FillType": "PARTIAL_FILL", 768 | "OrderType": "SELL" 769 | }, 770 | { 771 | "Id": 72819754, 772 | "TimeStamp": "2017-06-10T10:44:42.037", 773 | "Quantity": 0.29855192, 774 | "Price": 0.102, 775 | "Total": 0.03045229, 776 | "FillType": "PARTIAL_FILL", 777 | "OrderType": "SELL" 778 | }, 779 | { 780 | "Id": 72819751, 781 | "TimeStamp": "2017-06-10T10:44:41.66", 782 | "Quantity": 0.29855192, 783 | "Price": 0.102, 784 | "Total": 0.03045229, 785 | "FillType": "PARTIAL_FILL", 786 | "OrderType": "SELL" 787 | }, 788 | { 789 | "Id": 72819747, 790 | "TimeStamp": "2017-06-10T10:44:40.35", 791 | "Quantity": 0.11205408, 792 | "Price": 0.102, 793 | "Total": 0.01142951, 794 | "FillType": "PARTIAL_FILL", 795 | "OrderType": "SELL" 796 | }, 797 | { 798 | "Id": 72819746, 799 | "TimeStamp": "2017-06-10T10:44:40.35", 800 | "Quantity": 0.00490918, 801 | "Price": 0.102, 802 | "Total": 0.00050073, 803 | "FillType": "FILL", 804 | "OrderType": "SELL" 805 | }, 806 | { 807 | "Id": 72819745, 808 | "TimeStamp": "2017-06-10T10:44:40.35", 809 | "Quantity": 0.18158866, 810 | "Price": 0.102, 811 | "Total": 0.01852204, 812 | "FillType": "FILL", 813 | "OrderType": "SELL" 814 | }, 815 | { 816 | "Id": 72819744, 817 | "TimeStamp": "2017-06-10T10:44:39.943", 818 | "Quantity": 0.11841134, 819 | "Price": 0.102, 820 | "Total": 0.01207795, 821 | "FillType": "PARTIAL_FILL", 822 | "OrderType": "SELL" 823 | }, 824 | { 825 | "Id": 72819743, 826 | "TimeStamp": "2017-06-10T10:44:39.943", 827 | "Quantity": 0.18014058, 828 | "Price": 0.102, 829 | "Total": 0.01837433, 830 | "FillType": "FILL", 831 | "OrderType": "SELL" 832 | }, 833 | { 834 | "Id": 72819741, 835 | "TimeStamp": "2017-06-10T10:44:39.723", 836 | "Quantity": 0.15288856, 837 | "Price": 0.102, 838 | "Total": 0.01559463, 839 | "FillType": "PARTIAL_FILL", 840 | "OrderType": "SELL" 841 | }, 842 | { 843 | "Id": 72819736, 844 | "TimeStamp": "2017-06-10T10:44:39.007", 845 | "Quantity": 0.15288856, 846 | "Price": 0.102, 847 | "Total": 0.01559463, 848 | "FillType": "PARTIAL_FILL", 849 | "OrderType": "SELL" 850 | }, 851 | { 852 | "Id": 72819735, 853 | "TimeStamp": "2017-06-10T10:44:38.647", 854 | "Quantity": 0.15288856, 855 | "Price": 0.102, 856 | "Total": 0.01559463, 857 | "FillType": "PARTIAL_FILL", 858 | "OrderType": "SELL" 859 | }, 860 | { 861 | "Id": 72819731, 862 | "TimeStamp": "2017-06-10T10:44:38.35", 863 | "Quantity": 0.29855192, 864 | "Price": 0.102, 865 | "Total": 0.03045229, 866 | "FillType": "PARTIAL_FILL", 867 | "OrderType": "SELL" 868 | }, 869 | { 870 | "Id": 72819685, 871 | "TimeStamp": "2017-06-10T10:44:33.927", 872 | "Quantity": 0.0980392, 873 | "Price": 0.10200001, 874 | "Total": 0.00999999, 875 | "FillType": "FILL", 876 | "OrderType": "SELL" 877 | }, 878 | { 879 | "Id": 72819683, 880 | "TimeStamp": "2017-06-10T10:44:33.6", 881 | "Quantity": 0.00494465, 882 | "Price": 0.10260239, 883 | "Total": 0.00050733, 884 | "FillType": "FILL", 885 | "OrderType": "BUY" 886 | }, 887 | { 888 | "Id": 72819658, 889 | "TimeStamp": "2017-06-10T10:44:21.24", 890 | "Quantity": 0.03135133, 891 | "Price": 0.10260241, 892 | "Total": 0.00321672, 893 | "FillType": "FILL", 894 | "OrderType": "BUY" 895 | }, 896 | { 897 | "Id": 72819628, 898 | "TimeStamp": "2017-06-10T10:44:07.253", 899 | "Quantity": 0.259, 900 | "Price": 0.102, 901 | "Total": 0.026418, 902 | "FillType": "PARTIAL_FILL", 903 | "OrderType": "SELL" 904 | }, 905 | { 906 | "Id": 72819623, 907 | "TimeStamp": "2017-06-10T10:44:04.69", 908 | "Quantity": 0.40054142, 909 | "Price": 0.10260242, 910 | "Total": 0.04109651, 911 | "FillType": "FILL", 912 | "OrderType": "BUY" 913 | }, 914 | { 915 | "Id": 72819622, 916 | "TimeStamp": "2017-06-10T10:44:04.69", 917 | "Quantity": 0.00783242, 918 | "Price": 0.10251701, 919 | "Total": 0.00080295, 920 | "FillType": "PARTIAL_FILL", 921 | "OrderType": "BUY" 922 | }, 923 | { 924 | "Id": 72819621, 925 | "TimeStamp": "2017-06-10T10:44:04.69", 926 | "Quantity": 1.14603513, 927 | "Price": 0.10204571, 928 | "Total": 0.11694796, 929 | "FillType": "PARTIAL_FILL", 930 | "OrderType": "BUY" 931 | }, 932 | { 933 | "Id": 72819620, 934 | "TimeStamp": "2017-06-10T10:44:04.69", 935 | "Quantity": 0.27367894, 936 | "Price": 0.1020457, 937 | "Total": 0.02792775, 938 | "FillType": "PARTIAL_FILL", 939 | "OrderType": "BUY" 940 | }, 941 | { 942 | "Id": 72819580, 943 | "TimeStamp": "2017-06-10T10:43:50.533", 944 | "Quantity": 0.0780353, 945 | "Price": 0.102, 946 | "Total": 0.0079596, 947 | "FillType": "PARTIAL_FILL", 948 | "OrderType": "SELL" 949 | }, 950 | { 951 | "Id": 72819579, 952 | "TimeStamp": "2017-06-10T10:43:50.533", 953 | "Quantity": 2.06369597, 954 | "Price": 0.102, 955 | "Total": 0.21049698, 956 | "FillType": "FILL", 957 | "OrderType": "SELL" 958 | }, 959 | { 960 | "Id": 72819578, 961 | "TimeStamp": "2017-06-10T10:43:50.533", 962 | "Quantity": 3, 963 | "Price": 0.102, 964 | "Total": 0.306, 965 | "FillType": "FILL", 966 | "OrderType": "SELL" 967 | }, 968 | { 969 | "Id": 72819577, 970 | "TimeStamp": "2017-06-10T10:43:50.533", 971 | "Quantity": 0.05, 972 | "Price": 0.102, 973 | "Total": 0.0051, 974 | "FillType": "FILL", 975 | "OrderType": "SELL" 976 | }, 977 | { 978 | "Id": 72819576, 979 | "TimeStamp": "2017-06-10T10:43:50.533", 980 | "Quantity": 5.1869737, 981 | "Price": 0.102, 982 | "Total": 0.52907131, 983 | "FillType": "FILL", 984 | "OrderType": "SELL" 985 | }, 986 | { 987 | "Id": 72819575, 988 | "TimeStamp": "2017-06-10T10:43:50.533", 989 | "Quantity": 1.99123016, 990 | "Price": 0.10204571, 991 | "Total": 0.20319649, 992 | "FillType": "FILL", 993 | "OrderType": "SELL" 994 | }, 995 | { 996 | "Id": 72819560, 997 | "TimeStamp": "2017-06-10T10:43:44.317", 998 | "Quantity": 0.14685277, 999 | "Price": 0.10260243, 1000 | "Total": 0.01506745, 1001 | "FillType": "FILL", 1002 | "OrderType": "BUY" 1003 | }, 1004 | { 1005 | "Id": 72819559, 1006 | "TimeStamp": "2017-06-10T10:43:44.317", 1007 | "Quantity": 0.21083686, 1008 | "Price": 0.10219382, 1009 | "Total": 0.02154622, 1010 | "FillType": "PARTIAL_FILL", 1011 | "OrderType": "BUY" 1012 | }, 1013 | { 1014 | "Id": 72819554, 1015 | "TimeStamp": "2017-06-10T10:43:42.987", 1016 | "Quantity": 12.8130263, 1017 | "Price": 0.102, 1018 | "Total": 1.30692868, 1019 | "FillType": "PARTIAL_FILL", 1020 | "OrderType": "SELL" 1021 | }, 1022 | { 1023 | "Id": 72819553, 1024 | "TimeStamp": "2017-06-10T10:43:42.987", 1025 | "Quantity": 0.00568908, 1026 | "Price": 0.102, 1027 | "Total": 0.00058028, 1028 | "FillType": "FILL", 1029 | "OrderType": "SELL" 1030 | }, 1031 | { 1032 | "Id": 72819552, 1033 | "TimeStamp": "2017-06-10T10:43:42.987", 1034 | "Quantity": 2.12748665, 1035 | "Price": 0.10200001, 1036 | "Total": 0.21700365, 1037 | "FillType": "FILL", 1038 | "OrderType": "SELL" 1039 | }, 1040 | { 1041 | "Id": 72819551, 1042 | "TimeStamp": "2017-06-10T10:43:42.987", 1043 | "Quantity": 0.01511273, 1044 | "Price": 0.10200002, 1045 | "Total": 0.00154149, 1046 | "FillType": "FILL", 1047 | "OrderType": "SELL" 1048 | }, 1049 | { 1050 | "Id": 72819550, 1051 | "TimeStamp": "2017-06-10T10:43:42.987", 1052 | "Quantity": 0.00491234, 1053 | "Price": 0.10200002, 1054 | "Total": 0.00050105, 1055 | "FillType": "FILL", 1056 | "OrderType": "SELL" 1057 | }, 1058 | { 1059 | "Id": 72819537, 1060 | "TimeStamp": "2017-06-10T10:43:37.067", 1061 | "Quantity": 0.2860041, 1062 | "Price": 0.10219382, 1063 | "Total": 0.02922785, 1064 | "FillType": "FILL", 1065 | "OrderType": "BUY" 1066 | }, 1067 | { 1068 | "Id": 72819519, 1069 | "TimeStamp": "2017-06-10T10:43:27.317", 1070 | "Quantity": 1.54050955, 1071 | "Price": 0.10260243, 1072 | "Total": 0.15806002, 1073 | "FillType": "FILL", 1074 | "OrderType": "BUY" 1075 | }, 1076 | { 1077 | "Id": 72819518, 1078 | "TimeStamp": "2017-06-10T10:43:27.317", 1079 | "Quantity": 0.01506172, 1080 | "Price": 0.10260242, 1081 | "Total": 0.00154536, 1082 | "FillType": "PARTIAL_FILL", 1083 | "OrderType": "BUY" 1084 | }, 1085 | { 1086 | "Id": 72819517, 1087 | "TimeStamp": "2017-06-10T10:43:27.317", 1088 | "Quantity": 0.05954074, 1089 | "Price": 0.10251008, 1090 | "Total": 0.00610352, 1091 | "FillType": "PARTIAL_FILL", 1092 | "OrderType": "BUY" 1093 | }, 1094 | { 1095 | "Id": 72819516, 1096 | "TimeStamp": "2017-06-10T10:43:27.317", 1097 | "Quantity": 4.82188303, 1098 | "Price": 0.10245765, 1099 | "Total": 0.4940388, 1100 | "FillType": "PARTIAL_FILL", 1101 | "OrderType": "BUY" 1102 | }, 1103 | { 1104 | "Id": 72819514, 1105 | "TimeStamp": "2017-06-10T10:43:23.58", 1106 | "Quantity": 17.94946301, 1107 | "Price": 0.10200001, 1108 | "Total": 1.8308454, 1109 | "FillType": "PARTIAL_FILL", 1110 | "OrderType": "SELL" 1111 | }, 1112 | { 1113 | "Id": 72819513, 1114 | "TimeStamp": "2017-06-10T10:43:23.58", 1115 | "Quantity": 2.42342474, 1116 | "Price": 0.10200008, 1117 | "Total": 0.24718951, 1118 | "FillType": "FILL", 1119 | "OrderType": "SELL" 1120 | }, 1121 | { 1122 | "Id": 72819512, 1123 | "TimeStamp": "2017-06-10T10:43:23.58", 1124 | "Quantity": 0.106, 1125 | "Price": 0.10203516, 1126 | "Total": 0.01081572, 1127 | "FillType": "FILL", 1128 | "OrderType": "SELL" 1129 | }, 1130 | { 1131 | "Id": 72819511, 1132 | "TimeStamp": "2017-06-10T10:43:23.58", 1133 | "Quantity": 0.00842917, 1134 | "Price": 0.10203657, 1135 | "Total": 0.00086008, 1136 | "FillType": "FILL", 1137 | "OrderType": "SELL" 1138 | }, 1139 | { 1140 | "Id": 72819510, 1141 | "TimeStamp": "2017-06-10T10:43:23.58", 1142 | "Quantity": 0.01307539, 1143 | "Price": 0.10206197, 1144 | "Total": 0.0013345, 1145 | "FillType": "FILL", 1146 | "OrderType": "SELL" 1147 | }, 1148 | { 1149 | "Id": 72819509, 1150 | "TimeStamp": "2017-06-10T10:43:23.58", 1151 | "Quantity": 0.01485395, 1152 | "Price": 0.10206353, 1153 | "Total": 0.00151604, 1154 | "FillType": "FILL", 1155 | "OrderType": "SELL" 1156 | }, 1157 | { 1158 | "Id": 72819508, 1159 | "TimeStamp": "2017-06-10T10:43:23.58", 1160 | "Quantity": 0.2170183, 1161 | "Price": 0.10208725, 1162 | "Total": 0.0221548, 1163 | "FillType": "FILL", 1164 | "OrderType": "SELL" 1165 | }, 1166 | { 1167 | "Id": 72819507, 1168 | "TimeStamp": "2017-06-10T10:43:23.58", 1169 | "Quantity": 1, 1170 | "Price": 0.1021, 1171 | "Total": 0.1021, 1172 | "FillType": "FILL", 1173 | "OrderType": "SELL" 1174 | }, 1175 | { 1176 | "Id": 72819506, 1177 | "TimeStamp": "2017-06-10T10:43:23.58", 1178 | "Quantity": 0.14270509, 1179 | "Price": 0.10210481, 1180 | "Total": 0.01457087, 1181 | "FillType": "FILL", 1182 | "OrderType": "SELL" 1183 | }, 1184 | { 1185 | "Id": 72819505, 1186 | "TimeStamp": "2017-06-10T10:43:23.58", 1187 | "Quantity": 0.16556548, 1188 | "Price": 0.10211259, 1189 | "Total": 0.01690631, 1190 | "FillType": "FILL", 1191 | "OrderType": "SELL" 1192 | }, 1193 | { 1194 | "Id": 72819460, 1195 | "TimeStamp": "2017-06-10T10:43:17.69", 1196 | "Quantity": 0.49616972, 1197 | "Price": 0.10212564, 1198 | "Total": 0.05067165, 1199 | "FillType": "FILL", 1200 | "OrderType": "SELL" 1201 | }, 1202 | { 1203 | "Id": 72819459, 1204 | "TimeStamp": "2017-06-10T10:43:17.69", 1205 | "Quantity": 0.0131636, 1206 | "Price": 0.10218086, 1207 | "Total": 0.00134506, 1208 | "FillType": "FILL", 1209 | "OrderType": "SELL" 1210 | }, 1211 | { 1212 | "Id": 72819458, 1213 | "TimeStamp": "2017-06-10T10:43:17.69", 1214 | "Quantity": 0.050137, 1215 | "Price": 0.10219382, 1216 | "Total": 0.00512369, 1217 | "FillType": "FILL", 1218 | "OrderType": "SELL" 1219 | }, 1220 | { 1221 | "Id": 72819435, 1222 | "TimeStamp": "2017-06-10T10:43:11.893", 1223 | "Quantity": 0.015931, 1224 | "Price": 0.10220431, 1225 | "Total": 0.00162821, 1226 | "FillType": "FILL", 1227 | "OrderType": "SELL" 1228 | }, 1229 | { 1230 | "Id": 72819434, 1231 | "TimeStamp": "2017-06-10T10:43:11.893", 1232 | "Quantity": 0.4949626, 1233 | "Price": 0.10223437, 1234 | "Total": 0.05060218, 1235 | "FillType": "FILL", 1236 | "OrderType": "SELL" 1237 | }, 1238 | { 1239 | "Id": 72819433, 1240 | "TimeStamp": "2017-06-10T10:43:11.893", 1241 | "Quantity": 0.21023051, 1242 | "Price": 0.10223773, 1243 | "Total": 0.02149349, 1244 | "FillType": "FILL", 1245 | "OrderType": "SELL" 1246 | }, 1247 | { 1248 | "Id": 72819432, 1249 | "TimeStamp": "2017-06-10T10:43:11.893", 1250 | "Quantity": 0.02893384, 1251 | "Price": 0.10226012, 1252 | "Total": 0.00295877, 1253 | "FillType": "FILL", 1254 | "OrderType": "SELL" 1255 | }, 1256 | { 1257 | "Id": 72819431, 1258 | "TimeStamp": "2017-06-10T10:43:11.893", 1259 | "Quantity": 0.08, 1260 | "Price": 0.10234571, 1261 | "Total": 0.00818765, 1262 | "FillType": "FILL", 1263 | "OrderType": "SELL" 1264 | }, 1265 | { 1266 | "Id": 72819419, 1267 | "TimeStamp": "2017-06-10T10:43:07.36", 1268 | "Quantity": 0.17286413, 1269 | "Price": 0.10260243, 1270 | "Total": 0.01773627, 1271 | "FillType": "FILL", 1272 | "OrderType": "BUY" 1273 | }, 1274 | { 1275 | "Id": 72819413, 1276 | "TimeStamp": "2017-06-10T10:43:05.813", 1277 | "Quantity": 0.34989389, 1278 | "Price": 0.10260243, 1279 | "Total": 0.03589996, 1280 | "FillType": "FILL", 1281 | "OrderType": "BUY" 1282 | }, 1283 | { 1284 | "Id": 72819410, 1285 | "TimeStamp": "2017-06-10T10:43:05.08", 1286 | "Quantity": 0.03447534, 1287 | "Price": 0.10226012, 1288 | "Total": 0.00352545, 1289 | "FillType": "PARTIAL_FILL", 1290 | "OrderType": "SELL" 1291 | }, 1292 | { 1293 | "Id": 72819409, 1294 | "TimeStamp": "2017-06-10T10:43:05.08", 1295 | "Quantity": 0.407571, 1296 | "Price": 0.10228744, 1297 | "Total": 0.04168939, 1298 | "FillType": "FILL", 1299 | "OrderType": "SELL" 1300 | }, 1301 | { 1302 | "Id": 72819408, 1303 | "TimeStamp": "2017-06-10T10:43:05.08", 1304 | "Quantity": 0.06304728, 1305 | "Price": 0.10228745, 1306 | "Total": 0.00644894, 1307 | "FillType": "FILL", 1308 | "OrderType": "SELL" 1309 | }, 1310 | { 1311 | "Id": 72819407, 1312 | "TimeStamp": "2017-06-10T10:43:05.08", 1313 | "Quantity": 3.47690238, 1314 | "Price": 0.10249765, 1315 | "Total": 0.35637432, 1316 | "FillType": "FILL", 1317 | "OrderType": "SELL" 1318 | }, 1319 | { 1320 | "Id": 72819401, 1321 | "TimeStamp": "2017-06-10T10:43:04.423", 1322 | "Quantity": 0.3242125, 1323 | "Price": 0.10249765, 1324 | "Total": 0.03323101, 1325 | "FillType": "PARTIAL_FILL", 1326 | "OrderType": "SELL" 1327 | }, 1328 | { 1329 | "Id": 72819400, 1330 | "TimeStamp": "2017-06-10T10:43:04.41", 1331 | "Quantity": 0.9150085, 1332 | "Price": 0.10260242, 1333 | "Total": 0.09388208, 1334 | "FillType": "FILL", 1335 | "OrderType": "SELL" 1336 | }, 1337 | { 1338 | "Id": 72819398, 1339 | "TimeStamp": "2017-06-10T10:43:03.957", 1340 | "Quantity": 0.45, 1341 | "Price": 0.10249765, 1342 | "Total": 0.04612394, 1343 | "FillType": "PARTIAL_FILL", 1344 | "OrderType": "SELL" 1345 | }, 1346 | { 1347 | "Id": 72819388, 1348 | "TimeStamp": "2017-06-10T10:43:02.673", 1349 | "Quantity": 0.00946967, 1350 | "Price": 0.10249765, 1351 | "Total": 0.00097061, 1352 | "FillType": "PARTIAL_FILL", 1353 | "OrderType": "BUY" 1354 | }, 1355 | { 1356 | "Id": 72819368, 1357 | "TimeStamp": "2017-06-10T10:43:00.813", 1358 | "Quantity": 0.00580322, 1359 | "Price": 0.10228745, 1360 | "Total": 0.00059359, 1361 | "FillType": "PARTIAL_FILL", 1362 | "OrderType": "SELL" 1363 | }, 1364 | { 1365 | "Id": 72819367, 1366 | "TimeStamp": "2017-06-10T10:43:00.813", 1367 | "Quantity": 0.1804467, 1368 | "Price": 0.10228745, 1369 | "Total": 0.01845743, 1370 | "FillType": "FILL", 1371 | "OrderType": "SELL" 1372 | }, 1373 | { 1374 | "Id": 72819366, 1375 | "TimeStamp": "2017-06-10T10:43:00.813", 1376 | "Quantity": 0.06187908, 1377 | "Price": 0.10229725, 1378 | "Total": 0.00633005, 1379 | "FillType": "FILL", 1380 | "OrderType": "SELL" 1381 | }, 1382 | { 1383 | "Id": 72819365, 1384 | "TimeStamp": "2017-06-10T10:43:00.813", 1385 | "Quantity": 0.00803918, 1386 | "Price": 0.10234571, 1387 | "Total": 0.00082277, 1388 | "FillType": "FILL", 1389 | "OrderType": "SELL" 1390 | }, 1391 | { 1392 | "Id": 72819344, 1393 | "TimeStamp": "2017-06-10T10:42:57.97", 1394 | "Quantity": 2, 1395 | "Price": 0.10236703, 1396 | "Total": 0.20473406, 1397 | "FillType": "FILL", 1398 | "OrderType": "SELL" 1399 | }, 1400 | { 1401 | "Id": 72819343, 1402 | "TimeStamp": "2017-06-10T10:42:57.97", 1403 | "Quantity": 0.00926901, 1404 | "Price": 0.10236703, 1405 | "Total": 0.00094884, 1406 | "FillType": "FILL", 1407 | "OrderType": "SELL" 1408 | }, 1409 | { 1410 | "Id": 72819342, 1411 | "TimeStamp": "2017-06-10T10:42:57.97", 1412 | "Quantity": 0.00946967, 1413 | "Price": 0.10249765, 1414 | "Total": 0.00097061, 1415 | "FillType": "FILL", 1416 | "OrderType": "SELL" 1417 | }, 1418 | { 1419 | "Id": 72819341, 1420 | "TimeStamp": "2017-06-10T10:42:57.893", 1421 | "Quantity": 0.68053904, 1422 | "Price": 0.10260242, 1423 | "Total": 0.06982495, 1424 | "FillType": "FILL", 1425 | "OrderType": "BUY" 1426 | }, 1427 | { 1428 | "Id": 72819144, 1429 | "TimeStamp": "2017-06-10T10:42:19.407", 1430 | "Quantity": 0.01536868, 1431 | "Price": 0.1025, 1432 | "Total": 0.00157528, 1433 | "FillType": "PARTIAL_FILL", 1434 | "OrderType": "SELL" 1435 | }, 1436 | { 1437 | "Id": 72819035, 1438 | "TimeStamp": "2017-06-10T10:42:08.987", 1439 | "Quantity": 2.7214189, 1440 | "Price": 0.10230241, 1441 | "Total": 0.27840771, 1442 | "FillType": "FILL", 1443 | "OrderType": "SELL" 1444 | }, 1445 | { 1446 | "Id": 72819028, 1447 | "TimeStamp": "2017-06-10T10:42:07.78", 1448 | "Quantity": 1.09080819, 1449 | "Price": 0.10230241, 1450 | "Total": 0.1115923, 1451 | "FillType": "PARTIAL_FILL", 1452 | "OrderType": "SELL" 1453 | }, 1454 | { 1455 | "Id": 72819027, 1456 | "TimeStamp": "2017-06-10T10:42:07.78", 1457 | "Quantity": 0.0975599, 1458 | "Price": 0.10236247, 1459 | "Total": 0.00998647, 1460 | "FillType": "FILL", 1461 | "OrderType": "SELL" 1462 | }, 1463 | { 1464 | "Id": 72819026, 1465 | "TimeStamp": "2017-06-10T10:42:07.78", 1466 | "Quantity": 0.01007604, 1467 | "Price": 0.10237504, 1468 | "Total": 0.00103153, 1469 | "FillType": "FILL", 1470 | "OrderType": "SELL" 1471 | }, 1472 | { 1473 | "Id": 72819025, 1474 | "TimeStamp": "2017-06-10T10:42:07.78", 1475 | "Quantity": 0.1, 1476 | "Price": 0.10237875, 1477 | "Total": 0.01023787, 1478 | "FillType": "FILL", 1479 | "OrderType": "SELL" 1480 | }, 1481 | { 1482 | "Id": 72819024, 1483 | "TimeStamp": "2017-06-10T10:42:07.78", 1484 | "Quantity": 0.1, 1485 | "Price": 0.10238344, 1486 | "Total": 0.01023834, 1487 | "FillType": "FILL", 1488 | "OrderType": "SELL" 1489 | }, 1490 | { 1491 | "Id": 72819023, 1492 | "TimeStamp": "2017-06-10T10:42:07.78", 1493 | "Quantity": 0.0111033, 1494 | "Price": 0.10248076, 1495 | "Total": 0.00113787, 1496 | "FillType": "FILL", 1497 | "OrderType": "SELL" 1498 | }, 1499 | { 1500 | "Id": 72819022, 1501 | "TimeStamp": "2017-06-10T10:42:07.78", 1502 | "Quantity": 0.00488747, 1503 | "Price": 0.1025, 1504 | "Total": 0.00050096, 1505 | "FillType": "FILL", 1506 | "OrderType": "SELL" 1507 | }, 1508 | { 1509 | "Id": 72819021, 1510 | "TimeStamp": "2017-06-10T10:42:07.78", 1511 | "Quantity": 0.025, 1512 | "Price": 0.1025, 1513 | "Total": 0.0025625, 1514 | "FillType": "FILL", 1515 | "OrderType": "SELL" 1516 | }, 1517 | { 1518 | "Id": 72818836, 1519 | "TimeStamp": "2017-06-10T10:41:19.81", 1520 | "Quantity": 2.41875454, 1521 | "Price": 0.10288396, 1522 | "Total": 0.24885104, 1523 | "FillType": "FILL", 1524 | "OrderType": "BUY" 1525 | }, 1526 | { 1527 | "Id": 72818835, 1528 | "TimeStamp": "2017-06-10T10:41:19.81", 1529 | "Quantity": 0.97799501, 1530 | "Price": 0.10288392, 1531 | "Total": 0.10061996, 1532 | "FillType": "PARTIAL_FILL", 1533 | "OrderType": "BUY" 1534 | }, 1535 | { 1536 | "Id": 72818831, 1537 | "TimeStamp": "2017-06-10T10:41:17.937", 1538 | "Quantity": 0.00494465, 1539 | "Price": 0.10288394, 1540 | "Total": 0.00050872, 1541 | "FillType": "FILL", 1542 | "OrderType": "BUY" 1543 | }, 1544 | { 1545 | "Id": 72818779, 1546 | "TimeStamp": "2017-06-10T10:41:06.797", 1547 | "Quantity": 0.14048826, 1548 | "Price": 0.10288398, 1549 | "Total": 0.01445399, 1550 | "FillType": "FILL", 1551 | "OrderType": "BUY" 1552 | }, 1553 | { 1554 | "Id": 72818750, 1555 | "TimeStamp": "2017-06-10T10:41:01.407", 1556 | "Quantity": 0.0048916, 1557 | "Price": 0.1026025, 1558 | "Total": 0.00050189, 1559 | "FillType": "FILL", 1560 | "OrderType": "SELL" 1561 | }, 1562 | { 1563 | "Id": 72818749, 1564 | "TimeStamp": "2017-06-10T10:41:01.407", 1565 | "Quantity": 1, 1566 | "Price": 0.1026025, 1567 | "Total": 0.1026025, 1568 | "FillType": "FILL", 1569 | "OrderType": "SELL" 1570 | }, 1571 | { 1572 | "Id": 72818748, 1573 | "TimeStamp": "2017-06-10T10:41:01.407", 1574 | "Quantity": 0.2019343, 1575 | "Price": 0.1026025, 1576 | "Total": 0.02071896, 1577 | "FillType": "FILL", 1578 | "OrderType": "SELL" 1579 | }, 1580 | { 1581 | "Id": 72818742, 1582 | "TimeStamp": "2017-06-10T10:41:00.56", 1583 | "Quantity": 0.04390979, 1584 | "Price": 0.10288398, 1585 | "Total": 0.00451761, 1586 | "FillType": "FILL", 1587 | "OrderType": "BUY" 1588 | }, 1589 | { 1590 | "Id": 72818740, 1591 | "TimeStamp": "2017-06-10T10:41:00.06", 1592 | "Quantity": 0.04390978, 1593 | "Price": 0.102884, 1594 | "Total": 0.00451761, 1595 | "FillType": "FILL", 1596 | "OrderType": "BUY" 1597 | }, 1598 | { 1599 | "Id": 72818720, 1600 | "TimeStamp": "2017-06-10T10:40:55.547", 1601 | "Quantity": 0.015, 1602 | "Price": 0.1026025, 1603 | "Total": 0.00153903, 1604 | "FillType": "PARTIAL_FILL", 1605 | "OrderType": "SELL" 1606 | }, 1607 | { 1608 | "Id": 72818633, 1609 | "TimeStamp": "2017-06-10T10:40:26.03", 1610 | "Quantity": 1, 1611 | "Price": 0.1026025, 1612 | "Total": 0.1026025, 1613 | "FillType": "PARTIAL_FILL", 1614 | "OrderType": "SELL" 1615 | }, 1616 | { 1617 | "Id": 72818624, 1618 | "TimeStamp": "2017-06-10T10:40:24.42", 1619 | "Quantity": 0.596334, 1620 | "Price": 0.10288445, 1621 | "Total": 0.06135349, 1622 | "FillType": "FILL", 1623 | "OrderType": "BUY" 1624 | }, 1625 | { 1626 | "Id": 72818509, 1627 | "TimeStamp": "2017-06-10T10:40:13.64", 1628 | "Quantity": 0.02067454, 1629 | "Price": 0.10288447, 1630 | "Total": 0.00212708, 1631 | "FillType": "FILL", 1632 | "OrderType": "SELL" 1633 | }, 1634 | { 1635 | "Id": 72818507, 1636 | "TimeStamp": "2017-06-10T10:40:12.92", 1637 | "Quantity": 0.97932546, 1638 | "Price": 0.10288447, 1639 | "Total": 0.10075738, 1640 | "FillType": "PARTIAL_FILL", 1641 | "OrderType": "BUY" 1642 | }, 1643 | { 1644 | "Id": 72818503, 1645 | "TimeStamp": "2017-06-10T10:40:12.7", 1646 | "Quantity": 0.2980657, 1647 | "Price": 0.1026025, 1648 | "Total": 0.03058228, 1649 | "FillType": "PARTIAL_FILL", 1650 | "OrderType": "SELL" 1651 | }, 1652 | { 1653 | "Id": 72818465, 1654 | "TimeStamp": "2017-06-10T10:39:59.467", 1655 | "Quantity": 0.95599029, 1656 | "Price": 0.10250025, 1657 | "Total": 0.09798924, 1658 | "FillType": "FILL", 1659 | "OrderType": "SELL" 1660 | }, 1661 | { 1662 | "Id": 72818344, 1663 | "TimeStamp": "2017-06-10T10:39:49.67", 1664 | "Quantity": 1.84440932, 1665 | "Price": 0.10250026, 1666 | "Total": 0.18905243, 1667 | "FillType": "FILL", 1668 | "OrderType": "SELL" 1669 | }, 1670 | { 1671 | "Id": 72818306, 1672 | "TimeStamp": "2017-06-10T10:39:40.967", 1673 | "Quantity": 0.02586439, 1674 | "Price": 0.10288452, 1675 | "Total": 0.00266104, 1676 | "FillType": "FILL", 1677 | "OrderType": "BUY" 1678 | }, 1679 | { 1680 | "Id": 72818302, 1681 | "TimeStamp": "2017-06-10T10:39:40.42", 1682 | "Quantity": 0.02592921, 1683 | "Price": 0.10288454, 1684 | "Total": 0.00266771, 1685 | "FillType": "FILL", 1686 | "OrderType": "SELL" 1687 | }, 1688 | { 1689 | "Id": 72818301, 1690 | "TimeStamp": "2017-06-10T10:39:40.42", 1691 | "Quantity": 0.02592921, 1692 | "Price": 0.10288454, 1693 | "Total": 0.00266771, 1694 | "FillType": "FILL", 1695 | "OrderType": "SELL" 1696 | }, 1697 | { 1698 | "Id": 72818298, 1699 | "TimeStamp": "2017-06-10T10:39:39.56", 1700 | "Quantity": 4.77313487, 1701 | "Price": 0.10250026, 1702 | "Total": 0.48924756, 1703 | "FillType": "PARTIAL_FILL", 1704 | "OrderType": "SELL" 1705 | }, 1706 | { 1707 | "Id": 72818297, 1708 | "TimeStamp": "2017-06-10T10:39:39.543", 1709 | "Quantity": 0.00683479, 1710 | "Price": 0.10251776, 1711 | "Total": 0.00070068, 1712 | "FillType": "FILL", 1713 | "OrderType": "SELL" 1714 | }, 1715 | { 1716 | "Id": 72818296, 1717 | "TimeStamp": "2017-06-10T10:39:39.543", 1718 | "Quantity": 0.0061167, 1719 | "Price": 0.10252672, 1720 | "Total": 0.00062712, 1721 | "FillType": "FILL", 1722 | "OrderType": "SELL" 1723 | }, 1724 | { 1725 | "Id": 72818295, 1726 | "TimeStamp": "2017-06-10T10:39:39.543", 1727 | "Quantity": 0.0848183, 1728 | "Price": 0.10253075, 1729 | "Total": 0.00869648, 1730 | "FillType": "FILL", 1731 | "OrderType": "SELL" 1732 | }, 1733 | { 1734 | "Id": 72818294, 1735 | "TimeStamp": "2017-06-10T10:39:39.543", 1736 | "Quantity": 0.0053639, 1737 | "Price": 0.10253731, 1738 | "Total": 0.00054999, 1739 | "FillType": "FILL", 1740 | "OrderType": "SELL" 1741 | }, 1742 | { 1743 | "Id": 72818293, 1744 | "TimeStamp": "2017-06-10T10:39:39.543", 1745 | "Quantity": 0.44092427, 1746 | "Price": 0.10255, 1747 | "Total": 0.04521678, 1748 | "FillType": "FILL", 1749 | "OrderType": "SELL" 1750 | }, 1751 | { 1752 | "Id": 72818292, 1753 | "TimeStamp": "2017-06-10T10:39:39.543", 1754 | "Quantity": 0.15909235, 1755 | "Price": 0.10255, 1756 | "Total": 0.01631492, 1757 | "FillType": "FILL", 1758 | "OrderType": "SELL" 1759 | }, 1760 | { 1761 | "Id": 72818291, 1762 | "TimeStamp": "2017-06-10T10:39:39.543", 1763 | "Quantity": 4.3769197, 1764 | "Price": 0.102555, 1765 | "Total": 0.44887499, 1766 | "FillType": "FILL", 1767 | "OrderType": "SELL" 1768 | }, 1769 | { 1770 | "Id": 72818290, 1771 | "TimeStamp": "2017-06-10T10:39:39.543", 1772 | "Quantity": 0.01651201, 1773 | "Price": 0.1025567, 1774 | "Total": 0.00169341, 1775 | "FillType": "FILL", 1776 | "OrderType": "SELL" 1777 | }, 1778 | { 1779 | "Id": 72818289, 1780 | "TimeStamp": "2017-06-10T10:39:39.543", 1781 | "Quantity": 0.1, 1782 | "Price": 0.10257864, 1783 | "Total": 0.01025786, 1784 | "FillType": "FILL", 1785 | "OrderType": "SELL" 1786 | }, 1787 | { 1788 | "Id": 72818288, 1789 | "TimeStamp": "2017-06-10T10:39:39.543", 1790 | "Quantity": 0.09722219, 1791 | "Price": 0.10260003, 1792 | "Total": 0.00997499, 1793 | "FillType": "FILL", 1794 | "OrderType": "SELL" 1795 | }, 1796 | { 1797 | "Id": 72818287, 1798 | "TimeStamp": "2017-06-10T10:39:39.543", 1799 | "Quantity": 0.01800128, 1800 | "Price": 0.10260492, 1801 | "Total": 0.00184701, 1802 | "FillType": "FILL", 1803 | "OrderType": "SELL" 1804 | } 1805 | ] 1806 | } -------------------------------------------------------------------------------- /src/test/resources/publicapi/getmarketsummary.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": [ 5 | { 6 | "MarketName": "BTC-ETH", 7 | "High": 0.1045651, 8 | "Low": 0.09273596, 9 | "Volume": 65286.93974209, 10 | "Last": 0.1026025, 11 | "BaseVolume": 6449.37522068, 12 | "TimeStamp": "2017-06-10T10:40:56.147", 13 | "Bid": 0.1026025, 14 | "Ask": 0.102884, 15 | "OpenBuyOrders": 4208, 16 | "OpenSellOrders": 2351, 17 | "PrevDay": 0.094, 18 | "Created": "2015-08-14T09:02:24.817" 19 | } 20 | ] 21 | } -------------------------------------------------------------------------------- /src/test/resources/publicapi/getticker.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "message": "", 4 | "result": { 5 | "Bid": 0.10260982, 6 | "Ask": 0.10268089, 7 | "Last": 0.10266399 8 | } 9 | } --------------------------------------------------------------------------------