CryptoExchange.Net
8.4.4
dotnet add package CryptoExchange.Net --version 8.4.4
NuGet\Install-Package CryptoExchange.Net -Version 8.4.4
<PackageReference Include="CryptoExchange.Net" Version="8.4.4" />
paket add CryptoExchange.Net --version 8.4.4
#r "nuget: CryptoExchange.Net, 8.4.4"
// Install CryptoExchange.Net as a Cake Addin #addin nuget:?package=CryptoExchange.Net&version=8.4.4 // Install CryptoExchange.Net as a Cake Tool #tool nuget:?package=CryptoExchange.Net&version=8.4.4
CryptoExchange.Net
CryptoExchange.Net is a base library which is used to implement different cryptocurrency (exchange) API's. It provides a standardized way of implementing different API's, which results in a very similar experience for users of the API implementations. Note that the CryptoExchange.Net package itself can not be used directly for accessing API's. Either install a client library from the list below or use CryptoClients.Net which includes access to all exchange API's.
For more information on what CryptoExchange.Net and it's client libraries offers see the Documentation.
Current implementations
The following API's are directly supported. Note that there are 3rd party implementations going around, but only these are created and supported by me:
Exchange | Repository | Nuget |
---|---|---|
Binance | JKorf/Binance.Net | |
BingX | JKorf/BingX.Net | |
Bitfinex | JKorf/Bitfinex.Net | |
Bitget | JKorf/Bitget.Net | |
BitMart | JKorf/BitMart.Net | |
Bybit | JKorf/Bybit.Net | |
Coinbase | JKorf/Coinbase.Net | |
CoinEx | JKorf/CoinEx.Net | |
CoinGecko | JKorf/CoinGecko.Net | |
Crypto.com | JKorf/CryptoCom.Net | |
Gate.io | JKorf/GateIo.Net | |
HTX | JKorf/HTX.Net | |
Kraken | JKorf/Kraken.Net | |
Kucoin | JKorf/Kucoin.Net | |
Mexc | JKorf/Mexc.Net | |
OKX | JKorf/OKX.Net | |
WhiteBit | JKorf/WhiteBit.Net | |
XT | JKorf/XT.Net |
Any of these can be installed independently or install CryptoClients.Net which includes all exchange API's.
Discord
A Discord server is available here. Feel free to join for discussion and/or questions around the CryptoExchange.Net and implementation libraries.
Support the project
Any support is greatly appreciated.
Referral
When creating an account on new exchanges please consider using a referral link from below to support development
Donate
Make a one time donation in a crypto currency of your choice. If you prefer to donate a currency not listed here please contact me.
Btc: bc1q277a5n54s2l2mzlu778ef7lpkwhjhyvghuv8qf
Eth: 0xcb1b63aCF9fef2755eBf4a0506250074496Ad5b7
USDT (TRX) TKigKeJPXZYyMVDgMyXxMf17MWYia92Rjd
Sponsor
Alternatively, sponsor me on Github using Github Sponsors.
Release notes
Version 8.4.4 - 08 Dec 2024
- Changed JsonConverterCtorAttribute to use constructor type parameter instead of generic type parameter to support .net framework
Version 8.4.3 - 03 Dec 2024
- Fixed KlineTracker update handling
Version 8.4.2 - 02 Dec 2024
- Removed special characters in ClientOrderIdSeperator to adhere to field content rules
Version 8.4.1 - 02 Dec 2024
- Added JsonConverterCtorAttribute to allow specifying a custom JsonConverter with constructor parameters on properties
- Added ReplaceConverter System.Text.Json converter
- Added LibraryHelpers class for internal helper methods
Version 8.4.0 - 28 Nov 2024
- Added GetFeesAsync Shared REST client support
- Added LibraryOptions base class
- Added CommaSplitEnumConverter System.Text.Json converter
- Added TimePeriodFilterSupport and MaxLimit properties to PaginatedEndpointOptions
- Updated package dependency versions
Version 8.3.0 - 19 Nov 2024
- Added support for IOptions injection, allowing options to be read from IConfiguration
- Added handling of Infinity values in decimal converter
- Added rate limit update event
- Small refactor on client options internals
- Fixed concurrency issue when unsubscribing websocket subscription during reconnection
Version 8.2.0 - 06 Nov 2024
- Added support for not allowing duplicate subscription topics on the same websocket connection
- Added PerAccount SharedLeverageSettingMode enum value, changed Side on SharedUserTrade to nullable
- Added support for object deserialization in SystemTextJsonMessageAccessor.GetValue<T>
- Changed SocketApiClient GetAuthenticationRequest to GetAuthenticationRequestAsync to allow for requesting token
Version 8.1.1 - 01 Nov 2024
- Fixed socket connections trying to authenticated connection when it's marked as dedicated request connection even when no authentication is needed
- Fixed System.Text.Json ArrayConverter not passing serializer options to nested deserialization
- Fixed System.Text.Json ArrayConverter creating new serializer options each time a JsonConverter attribute is encountered
Version 8.1.0 - 28 Oct 2024
- Added KlineTracker and TradeTracker implementation
- Added Side to SharedTrade model
- Added overload for Create method in OrderBookFactory using SharedSymbol
- Added ValidateMessage method to websocket Query object to filter messages even though it is matched to the query based on the ListenIdentifier
- Added DoHandleReset method for websocket subscriptions
- Added ConnectionId to RequestDefinition to correctly handle connection and path rate limiting configuration
- Added System.Text.Json ArrayConverter Write implementation
- Updated SharedFuturesTicker LastPrice, HighPrice and LowPrice properties to be nullable
- Updated SetApiCredentials method to also updated the credentials on the client specific options to prevent unknown client credentials in some situations
Version 8.0.3 - 14 Oct 2024
- Added support for duplicate array indexes in System.Text.Json ArrayConverter
- Added fallback for unparsable value in System.Text.Json NumberStringConverter
- Added Authenticated property on base client and shared client
- Added GetValues System.Text.Json implementation in message accessor
Version 8.0.2 - 09 Oct 2024
- Updated dependency versions, including System.Text.Json from 8.0.4 to 8.0.5 containing a vulnerability fix
Version 8.0.1 - 07 Oct 2024
- Added cached library version properties on base client
- Added support for derserializing 0001-01-01 as datetime null value
- Added ToRfc3339String extension method for DateTime type
Version 8.0.0 - 27 Sep 2024
- Added new cross exchange interfaces implementation
- Supports REST, WebSocket, Spot and Futures API's
- Added various client interfaces for specific functionality
- Added SharedSymbol type, taking care of symbol formatting for different exchanges
- Added dynamic pagination support for shared functionality
- Added various shared Enum definitions
- Added ExchangeWebResult and ExchangeEvent, exchange specific versions of WebCallResult and DataEvent
- See https://jkorf.github.io/CryptoExchange.Net/index.html#idocs_shared for more info
- Added tradingMode and deliverData parameters to BaseApiClient FormatSymbol method
- Added ExecutePages method to ExchangeHelpers static class
- Added ApplySymbolRules method to ExchangeHelpers static class
- Added ResubscribingFailed event for websocket connections
- Added handling of http result 429 (ratelimited) during websocket connection
- Added Websocket dispose before creating new connection when reconnecting
- Updated Sourcelink package version
- Marked ISpotClient and IFuturesClient references as deprecated
- Added new cross exchange interfaces implementation
Version 7.11.2 - 28 Aug 2024
- Fixed issues when ratelimiting is canceled using the provided cancellation token
Version 7.11.1 - 25 Aug 2024
- Improved closing logic websockets
Version 7.11.0 - 07 Aug 2024
- Added ParseString static method on EnumConverter for parsing strings manually
- Added support for decimal values in System.Text.Json NumberStringConverter
- Added support for
null
string values in System.Text.Json DecimalConverter - Added support for number deserialization when requesting string in System.Text.Json MessageAccessor.GetValue
- Added deserialization handling of json values too big to fit decimal value
- Decreased some memory allocations during rest request authentication
- Fixed subscriptions trying to send unsubscribe request when the socket connection will be closed anyway
- Removed SecureString usage in credentials; it's not recommended to be used
- Removed some extension methods no longer relevant
- Improved testing checks
Version 7.10.0 - 26 Jul 2024
- Added System.Text.Json NumberStringConverter
- Added integration testing base class
- Added AddSecondsString and AddOptionalSecondsString to ParameterCollection
- Added Decompress method for ReadOnlyMemory using non-GZip deflate
- Added SocketConnection parameter to SocketConnection PreprocessStreamMessage
- Fixed websocket reconnect/unsubscribe timing bug
- Fixed issue in System.Text.Json array object deserialization skipping property when skipping an index
- Fixed order book logging bug
- Fixed bug in ParameterCollection AddEnumAsInt
Version 7.9.0 - 16 Jul 2024
- Added some checks in websocket connection handling
- Added As<T> and AsError<T> methods on untyped WebCallResult
- Updated System.Text.Json package to version 8.0.4 to fix vulnerability
- Updated websocket subscription response handling to remove the thread blocking ManualResetEvent usage
- Updated static logging classes access modifier from internal to public so they can be called in overriden methods
- Updated some testing object implementations
- Fixed authentication error when reconnecting an unauthenticated connection which was marked as dedicated query connection
- Small improvements in SystemTextJsonMessageAccessor
- Fixed System.Text.Json ArrayConverter implementation nullable value types handling
Version 7.8.0 - 02 Jul 2024
- Updated single endpoint limit configuration
- Added LongConverter for nullable longs
- Updated SystemTextJsonComparer logic
Version 7.7.3 - 26 Jun 2024
- Fixed request ids not matching in logging
- Added nullable int converter for System.Text.Json
- Small fixes in tests
Version 7.7.2 - 25 Jun 2024
- Fixed ratelimiting issue possibly creating negative delays
Version 7.7.1 - 23 Jun 2024
- Fixes for caching implementation
Version 7.7.0 - 23 Jun 2024
- Caching support
- Caching is supported for GET requests within a certain time frame
- Enable caching by setting CachingEnabled to true in the client options
- Added DataSource to CallResult object
- Dedicated websocket connection
- Added functionality for always having a connection open which can then be used for order operations
- This eliminates the initial connection time for the first request
- WebSocket connection can be prepared by calling PrepareConnectionsAsync on the Api client, for example
await binanceSocketClient.SpotApi.PrepareConnectionsAsync()
. This is only needed initially; it will be reconnected when connection is lost.
- Added CancellationToken support for websocket queries
- Added SocketConnection parameter to SocketApiClient.GetAuthenticationRequest method
- Added ObjectStringConverter base converter for deserializing nested json strings
- Fixed websocket issue with ratelimiting and reconnecting interaction
- Fixed rate limiting issue with sub-millisecond delays
- Fixed websocket connection will now close if authentication fails because of not set credentials
- Updated websocket reconnection handling and options, added backoff policy
- Removed check for confirmed subscription as data often is pushed before the subscription is confirmed
- Caching support
Version 7.6.0 - 11 Jun 2024
- Added support for specifying seperate uri and body parameters
- Added support for different message and handling generic types on socket queries
- Added support for PATCH http method requests
- Added support for setting http request body to a specific type directly
- Split DataEvent.Topic into StreamId and Symbol properties
- Added support for negative time values parsing
- Added some helper methods for converting DataEvent to CallResult
- Added support for GZip/Deflate automatic decompressing in the default HttpClient
- Updated some testing methods
Version 7.5.2 - 07 May 2024
- Fixed SetApiCredentials not correctly being used by rate limiter causing exception
Version 7.5.1 - 03 May 2024
- Some small improvements in unit testing components
Version 7.5.0 - 01 May 2024
- Added testing implementations
- Small refactor AuthenticationProvider to allow better testing
- Change result of MessageAccessor.Read methods to CallResult so error can be returned
- Moved some DateTimeConverter logic to seperate methods to allow access from outside converters
Version 7.4.0 - 28 Apr 2024
- Added FormatSymbol on IBaseApiClient interface
- Added IOrderBookFactory interface
- Removed ExchangeOptions as base class for OrderBookOptions
Version 7.3.3 - 23 Apr 2024
- Added support for new DateTime format parsing
- Updated some logging
- Fixed concurrency issue in rest request sending
Version 7.3.2 - 19 Apr 2024
- Fix for endpoint specific rate limiting throwing exception
Version 7.3.1 - 18 Apr 2024
- Fixed websocket system subscriptions getting marked as unconfirmed when reconnecting
Version 7.3.0 - 17 Apr 2024
- Added new method for sending Rest requests which splits the static and dynamic parameters
- Refactored rate limiting implementation
- Ratelimiters now statically applied for all clients
- Added support for different rate limit window types
- Added modular configuration of rate limits
- Added rate limit check when creating websocket connections
- Added automatic handling and retry for Retry-After responses
- Added configuration for setting ratelimit for each individual endpoint
- Added event for when rate limit is triggered
- Added SocketClient GetSocketApiClientStates method
Version 7.2.1 - 05 Apr 2024
- Improved websocket reconnect logic
- Simplified SystemTextJsonMessageAccessor value retrieval
- Fixed System.Text.Json BoolConverter value writing
Version 7.2.0 - 24 Mar 2024
- Added ArrayParametersSerialization.JsonArray support
- Refactored to high-performance logging for hot paths
- Updated SymbolOrderBook to use LoggerFactory
- Performance improvements
- Small bug fixes
- Updated logging
Version 7.1.0 - 16 Mar 2024
- Added initial System.Text.Json deserialization support
- Added support for setting MessageSendSizeLimit for websocket clients to limit message size
- Added Exchange name property to IRestClient and ISocketClient interface
- Abstracted out rest client deserialization so different (de)serializers can be used
- Cleaned up rest client response handling
- Continued update of websocket message handling
- Use ReadonlyMemory<byte> to represent message data to prevent copying data multiple times
- Switched back to non-async websocket message handling to remove tasks overhead
- Updated package dependencies to latest versions
- Updated unit test package dependencies and updated tests accordingly
- Moved some properties used by the RestApiClient from the BaseApiClient
- Fixed issue with multiple concurrent subscribe calls in socket client
Version 7.0.0 - 24 Feb 2024
- Full overhaul of Websocket message handling
- Abstracted out Newtonsoft.Json references in preparation of moving to System.Text.Json
- Updated SendPeriodic to operate on connection level instead of client level to prevent looping when there are no connections
- Added check to not send an unsubscribe message if there is another subscription listening to the same events
- Added CryptoRestClient and CryptoSocketClient as aggregate for accessing different exchange APIs
- Updated socket client log messages
- Updated socket client GetSubscriptionState output
Version 6.2.5 - 09 Jan 2024
- Added support for deserializing null and empty string values to BoolConverter
Version 6.2.4 - 04 Jan 2024
- Fixed parsing of DateTime value of zero with additional zero decimal places
Version 6.2.3 - 02 Dec 2023
- Fixed requestBodyFormat parameter handling
Version 6.2.2 - 02 Dec 2023
- Added support for specifying the request body content type on a per request basis
- Added DecimalStringWriterConverter
- Added RequestId to WebCallResult model
- Updated response logging
Version 6.2.1 - 28 Oct 2023
- Utility methods
Version 6.2.0 - 24 Oct 2023
- Added SerializerOptions helper class for setting a default serializer
- Added ParameterCollection helper class for easier parameter definition
- Added extra helper methods AuthenticationProvider
- Remove interface entries meant for internal use
- Added support for writing int values to the EnumConverter
Version 6.1.5 - 08 Oct 2023
- Added UpdateType to socket DataEvent
- Added additional scenarios for BoolConverter
- Updated some logging
Version 6.1.4 - 23 Sep 2023
- Added BoolConverter
- Added parameter for logging warning message on missing enum entry to EnumConverter
Version 6.1.3 - 18 Sep 2023
- Fix for concurrency exception in socket subscription
Version 6.1.2 - 11 Sep 2023
- Added support for multiple of the same ratelimiting type in the same rate limiter
- Fixed nullreference on rate limit error if no Retry-After header is returned
Version 6.1.1 - 04 Sep 2023
- Fixes for json converters
Version 6.1.0 - 24 Aug 2023
- Added support for ratelimiting on socket connections
- Added rest ratelimit handling and parsing
- Added ServerRatelimitError error
Version 6.0.3 - 23 Jul 2023
- Fixed Proxy not getting applied in rest clients when not using DI
Version 6.0.2 - 05 Jul 2023
- Added properties generic dictionary to SocketConnection
Version 6.0.1 - 29 Jun 2023
- Added LogLevel optional parameter to TraceLoggerProvider
Version 6.0.0 - 25 Jun 2023
- Updated ApiCredentials to support RSA signing as well as the default Hmac signature
- Removed custom logging implementation in favor of using
Microsoft.Extensions.Logging
ILogger directly - Refactored client options for easier use
- Added easier way of switching environments
- Added ResponseLength and ToString() override on WebCallResult object
- Fixed memory leak in AsyncResetEvent
Version 5.4.3 - 14 Apr 2023
- Fixed potential threading exception in socket connection
Version 5.4.2 - 01 Apr 2023
- Reverted socket changes as it seems to cause reconnect to hang
Version 5.4.1 - 18 Mar 2023
- Added CalculateTradableAmount to SymbolOrderBook
- Improved socket reconnect robustness
- Fixed api rate limiter not working correctly
Version 5.4.0 - 14 Feb 2023
- Added unsubscribing when receiving subscribe answer after the request timeout has passed
- Fixed socket options copying
- Made TimeSync implementation optional
- Cleaned up ApiCredentials and added better support for extending ApiCredentials
Version 5.3.1 - 08 Dec 2022
- Added default request parameter ordering before applying authentication
- Fixed possible issue where a socket would reconnect when it should close if it was already in reconnecting
Version 5.3.0 - 14 Nov 2022
- Reworked client architecture, shifting funcationality to the ApiClient
- Fixed ArrayConverter exponent parsing
- Fixed ArrayConverter not checking null
- Added optional delay setting after establishing socket connection
- Added callback for revitalizing a socket request when reconnecting
- Fixed proxy setting websocket
Version 5.2.4 - 31 Jul 2022
- Added handling of PlatformNotSupportedException when trying to use websocket from WebAssembly
- Changed DataEvent to have a public constructor for testing purposes
- Fixed EnumConverter serializing values without proper quotes
- Fixed websocket connection reconnecting too quickly when resubscribing/reauthenticating fails
Version 5.2.3 - 19 Jul 2022
- Fixed socket getting disconnected when
no data
timeout is reached instead of being reconnected
- Fixed socket getting disconnected when
Version 5.2.2 - 17 Jul 2022
- Added support for retrieving a new url when socket connection is lost and reconnection will happen
Version 5.2.1 - 16 Jul 2022
- Fixed socket reconnect issue
- Fixed
message not handled
messages after unsubscribing - Fixed error returning for non-json error responses
Version 5.2.0 - 10 Jul 2022
- Refactored websocket code, removed some clutter and simplified
- Added ReconnectAsync and GetSubscriptionsState methods on socket clients
Version 5.1.12 - 12 Jun 2022
- Changed time sync so requests no longer wait for it to complete unless it's the first time
- Made log client options changable after client creation
- Fixed proxy setting not used when reconnecting socket
- Changed MaxSocketConnections to a client options
- Updated socket reconnection logic
Version 5.1.12 - 12 Jun 2022
- Changed time sync so requests no longer wait for it to complete unless it's the first time
- Made log client options changable after client creation
- Fixed proxy setting not used when reconnecting socket
- Updated socket reconnection logic
Version 5.1.11 - 24 May 2022
- Added KeepAliveInterval setting
- Fixed port not being copied when setting parameters on request
- Fixed inconsistent PackageReference casing in csproj
Version 5.1.10 - 22 May 2022
- Fixed order book reconnecting while Diposed
- Fixed exception when disposing socket client while reconnecting
- Added additional null/default checking in DateTimeConverter
- Changed ConnectionLost subscription event to run in seperate task to prevent exception/longer operations from intervering with reconnecting
Version 5.1.9 - 08 May 2022
- Added latency to the timesync calculation
- Small fix for exception in socket close handling
Version 5.1.8 - 01 May 2022
- Cleanup socket code, fixed an issue which could cause connections to never reconnect when connection was lost
- Added support for sending requests which expect an empty response
- Fixed issue with the DateTimeConverter date interpretation
Version 5.1.7 - 14 Apr 2022
- Moved some Rest parameters from BaseRestClient to RestApiClient to allow different implementations for sub clients
Version 5.1.6 - 10 Mar 2022
- Updated EnumConverter to properly handle emtpy/null and default values
Version 5.1.5 - 09 Mar 2022
- Removed ResubscribeMaxRetries default value of 5
- Updated logging and log verbosity
Version 5.1.4 - 04 Mar 2022
- Fixed ArraySerialization handling
- Added check for invalid rate limit configured for a request
Version 5.1.3 - 01 Mar 2022
- Fixed some issues in websocket reconnection, should be more robust now
- Prevent duplicate data reading on error in rest request
- Added ApiName to time sync state to improve log feedback
Version 5.1.2 - 27 Feb 2022
- Fixed issue where the rate limiter was messing with time syncing
- Added support for delegate parameters
- Added
ignoreRateLimit
paramter inSendRequestAsync
Version 5.1.1 - 24 Feb 2022
- Fixed issue ApiCredentials
Version 5.1.0 - 24 Feb 2022
- Improved dispose handling in SymbolOrderBook
- Fixed TimeSync RecalculationInterval not being respected
- Small rework client options
Version 5.0.0
- Added Github.io page for documentation: https://jkorf.github.io/CryptoExchange.Net/
- Added single DateTimeConverter replacing the different timestamp converters
- Added additional request related properties to WebCallResult
- Added CancelationToken support for websockets
- Added CancelationToken support for SymbolOrderBook starting
- Added TimeSync support
- Refactored base client classes into BaseClient and ApiClient to provide a more defined client structure
- Refactored client options to have better control over each different ApiClient
- Refactored authentication provider to be more flexible
- Refactored rate limiter implementation
- Refactored IExchangeClient interface to ISpotClient and IFuturesClient
- Refactored socket reconnection to immediately try to reconnect before waiting the ReconnectTimeout
- Improved SymbolOrderBook stability
- Updated code docs
Version 4.2.8 - 08 Oct 2021
- Fixed deadlock in socket receive
- Fixed issue in reconnection handling when the client is disconnected again during resubscribing
- Added some additional checking of socket state to prevent sending/expecting data when socket is not connected
Version 4.2.7 - 06 Oct 2021
- Made receivedMessages protected again to allow implementations with custom transport (Bittrex) to use it again
Version 4.2.6 - 06 Oct 2021
- Fixed an issue causing socket client to stop processing data in .NET Framework
Version 4.2.5 - 05 Oct 2021
- Added custom async wait event implementation as previous method seems to not work 100% of the time
Version 4.2.4 - 30 Sep 2021
- Fix for InvalidOperationExceptions when running socket connections from .Net framework
Version 4.2.3 - 29 Sep 2021
- Added IncomingKbps property to socket/socket client
- Updated logging
- Socket performance improvements
Version 4.2.2 - 23 Sep 2021
- Restored missing request parameters log
Version 4.2.1 - 22 Sep 2021
- Fìx for websocket not automatically reconnecting when connection is closed unexpectedly
Version 4.2.0 - 20 Sep 2021
- Prevent reconnect spamming when invalid checksum is calculated in SymbolOrderBook
- Added default nonce provider implementation
Version 4.1.0 - 15 Sep 2021
- Added overload for UnsubscribeAsync with id parameter
- Added parameter position configuration per HttpMethod type
- Added option to send custom headers with each requets
- Added option to send custom headers with individual requests
- Added debug data on error
Version 4.0.8 - 26 Aug 2021
- Added rate limiting option for outgoing messages per socket
Version 4.0.7 - 24 Aug 2021
- Additional error info on websocket exception
Version 4.0.6 - 24 Aug 2021
- Removed some debug logging
Version 4.0.5 - 24 Aug 2021
- Added ConnectionClosed event on UpdateSubscriptions to signal the connection was closed and no reconnecting is happening
Version 4.0.4 - 24 Aug 2021
- Websocket connection fixes/improvements
- Added ChecksumValidationEnabled option for controlling checksum validation in SymbolOrderBook
- Added MaxReconnectTries option
- Added MaxResubscribeTries option
- Added MaxConcurrentResubscriptionsPerSocket option
- Fix for TimestampSecondsConverter rounding to nearest millisecond
Version 4.0.3 - 20 Aug 2021
- Fix for concurrent sent socket issue
Version 4.0.2 - 20 Aug 2021
- Fixed socket client continuing before the send/receive loops have been started, which could cause issues when doing concurrent connections
Version 4.0.1 - 13 Aug 2021
- Fixed OperationCancelledException when closing socket from a project targeting .net framework
Version 4.0.0 - 12 Aug 2020
- Release version, summed up changes from previous beta releases:
- Removed
Websocket4Net
dependency in favor of aClientWebSocket
native implementation for websocket connections - Socket events now always come wrapped in a
DataEvent<>
object which contain the timestamp of the data, and optionally the originally received json string - Implemented usage of the
Microsoft.Extensions.Logging.Abstractions
ILogger
interface instead of a custom implementation - Added some properties to the
IExchangeClient
interfaceICommonOrder.CommonOrderTime
ICommonOrder.CommonOrderStatus
enumICommonTrade.CommonTradeTime
- Added
OnOrderPlaced
andOnOrderCanceled
events on theIExchangeClient
interface - Added
ExchangeHelpers
static class for various helper methods - Removed non-async methods due to too much overhead in development/maintainance
- If you were previously using non-async methods you can add
.Result
to the end of the async call to get the same result
- If you were previously using non-async methods you can add
- Added
Book
property toSymbolOrderBook
for a book snapshot - Added
CalculateAverageFillPrice
toSymbolOrderBook
to calculate the average fill price for an order with the current order book state - Various fixes
- Removed
- Release version, summed up changes from previous beta releases:
Version 4.0.0-beta15 - 12 Aug 2021
- Conditional version Logging.Abstractions
Version 4.0.0-beta14 - 09 Aug 2021
- Fix for bug in processing order in SymbolOrderBook
Version 4.0.0-beta13 - 31 Jul 2021
- Fix for socket connection
Version 4.0.0-beta12 - 26 Jul 2021
- Fix for socket connection
Version 4.0.0-beta11 - 09 Jul 2021
- Added CalculateAverageFillPrice to SymbolOrderBook
- Added Book property to SymbolOrderBook
- Added Async postfix to async methods
Version 4.0.0-beta10 - 07 Jul 2021
- Updated BaseConverter to be case sensitive
- Added ExchangeHelpers class containing some helper methods
- Fixed responses not being logged on Trace log level
- Added some code docs
Version 4.0.0-beta9 - 17 Jun 2021
- Small fixes
Version 4.0.0-beta8 - 08 Jun 2021
- Fixed exception socket buffer size in .net framework
Version 4.0.0-beta7 - 07 Jun 2021
- Added CommonOrderTime to IOrder
- Added OrderStatus enum for IOrder
- Added OnOrderPlaced and OnOrderCanceled events on IExchangeClient
- Added CommonTradeTime to ICommonTrade
Version 4.0.0-beta6 - 01 jun 2021
- Some logging adjustments
- Fixed some async issues
Version 4.0.0-beta5 - 26 May 2021
- Added DataEvent wrapper for socket updates
- Added optional original json output
- Changed logging implementation to use ILogger
Version 4.0.0-beta4 - 06 mei 2021
- Added analyzers
- Fixed some warnings
Version 4.0.0-beta3 - 30 Apr 2021
- Updated socket closing
Version 4.0.0-beta2 - 30 apr 2021
- Fix for closing socket without timeout task
Version 4.0.0-beta1 - 30 apr 2021
- Removed Websocket4Net dependency
- Added custom ClientWebSocket implementation
- Renamed handler → subscription internally
- Renamed socket → socketConenction when type is socketConnection
Version 3.9.0 - 28 apr 2021
- Added optional JsonSerializer parameter to SendRequest to use during deserialization
- Fix for unhandled message warning when unsubscribing a socket subscription
Version 3.8.1 - 19 apr 2021
- Added debug logs
- Added ValidateNullOrNotEmpty extension method
Version 3.8.0 - 30 mrt 2021
- Better handling of json errors while deserializing stream
- Added string datetime converter
Version 3.7.1 - 10 mrt 2021
- Performance improvemnt for the ArrayConverter
Version 3.7.0 - 01 mrt 2021
- Changed GetResponse in RestClient to protected
- Added configuration for deterministic build
Version 3.6.1 - 16 feb 2021
- Fix for timing related exception when stopping an symbol order book
Version 3.6.0 - 22 jan 2021
- Added CommonVolume and CommonOpenTime to ICommonKline interface
Version 3.5.0 - 11 jan 2021
- Additional info on exception messages
- Added support for rate limiting using credits
Version 3.4.0 - 21 dec 2020
- Updated IExchangeClient interface
- Fix for dropping message after timeout on socket
- Added virtual HandleUnhandledMessage method in SocketClient
Version 3.3.0 - 10 dec 2020
- Added client name
- Added common interfaces
- Fixed api key plain text storing in RateLimitterApiKey
Version 3.2.1 - 19 nov 2020
- Fixed error code parsing
Version 3.2.0 - 19 nov 2020
- Fix for multiple socket subscriptions re-using the same socket connection
- Updated errors
Version 3.1.0 - 08 Oct 2020
- Added CallResult without type parameter for calls which don't return data
- Added GetErrorOrResult method on CallResult to support proper nullability checking
- Fix for reading credentials from file
- Fix for setting custom base addresses in clients
Version 3.0.15 - 06 Oct 2020
- Changed default ShouldCheckObjects to false to prevent spam in logging
Version 3.0.14 - 24 Aug 2020
- Updated exception message logging
Version 3.0.13 - 24 Aug 2020
- Added request tracing id for logging
- Added shared HttpClient option
Version 3.0.12 - 12 Aug 2020
- Named parameters on SymbolOrderBook events
Version 3.0.11 - 20 Jun 2020
- Added support for checksum in SymbolOrderBook
Version 3.0.10 - 16 Jun 2020
- Fix for order book synchronization
Version 3.0.9 - 07 Jun 2020
- Added arraySerialization and postParameterPosition to AuthenticationProvider interface
- Fixed array serialization in request body
Version 3.0.8 - 02 Jun 2020
- Added requestBodyEmptyContent setting for rest client
- Added TryParseError for rest implementations to check for error with success status code
Version 3.0.7 - 20 May 2020
- Added error debug output
- Fix for unsubscribe causing possible deadlock
Version 3.0.6 - 03 Mar 2020
- Added BestOffer to SymbolOrderBook, removed invalid check on proxy
Version 3.0.5 - 05 Feb 2020
- Added PausedActivity events on socket subscriptions
Version 3.0.4 - 29 Jan 2020
- Removed unnecessary json serialization
Version 3.0.3 - 23 Jan 2020
- Added OnBestOffersChanged event to order book implementations
Version 3.0.2 - 10 Dec 2019
- Removed invalid check for unauthenticated proxy
Version 3.0.1 - 14 Nov 2019
- Re-enabled debug response logging
Version 3.0.0 - 23 Oct 2019
- Updated to C# 8.0
- Added .NetStandard2.1 support
- Added Nullability support
- Now using HttpClient instead of WebRequest, should result in faster consequtive requests
- Added CancellationToken support
- Added bool compare override to CallResult (now possible to
if(callresult)
instead ofif(callresult.Success)
) - Added input validation methods
- Wrong input will now throw exceptions rather than error results
- OnOrderBookUpdate event added to
SymbolOrderBook
Version 2.1.8 - 29 Aug 2019
- Added array serialization options for implementations
Version 2.1.7 - 07 Aug 2019
- Fixed bug with socket connection not being disposed after lost connection
- Resubscribing after reconnecting socket now in parallel
Version 2.1.6 - 06 Aug 2019
- Fix for missing subscription events if they are also a request response, added code docs
Version 2.1.5 - 09 jul 2019
- Updated SymbolOrderBook
Version 2.1.4 - 24 jun 2019
- Added checks for json deserialization issues
Version 2.1.3 - 16 may 2019
- Refactored SymbolOrderBook
- Added BestBid/BestAsk properties for order book
Version 2.1.2 - 14 may 2019
- Added order book base class for easy implementation
- Added additional constructor to ApiCredentials to be able to read from file
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Http (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.0)
- Newtonsoft.Json (>= 13.0.3)
- System.Text.Json (>= 9.0.0)
-
.NETStandard 2.1
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Http (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.0)
- Newtonsoft.Json (>= 13.0.3)
- System.Text.Json (>= 9.0.0)
NuGet packages (60)
Showing the top 5 NuGet packages that depend on CryptoExchange.Net:
Package | Downloads |
---|---|
Bitfinex.Net
Bitfinex.Net is a client library for accessing the Bitfinex REST and Websocket API. All data is mapped to readable models and enum values. Additional features include automatic websocket (re)connection management, an implementation for maintaining a client side order book, easy integration with other exchange client libraries and more. |
|
Binance.Net
Binance.Net is a client library for accessing the Binance REST and Websocket API. All data is mapped to readable models and enum values. Additional features include automatic websocket (re)connection management, client side rate limiting, an implementation for maintaining a client side order book, easy integration with other exchange client libraries and more. |
|
KrakenExchange.Net
KrakenExchange.Net is a client library for accessing the Kraken REST and Websocket API. All data is mapped to readable models and enum values. Additional features include automatic websocket (re)connection management, client side rate limiting, an implementation for maintaining a client side order book, easy integration with other exchange client libraries and more. |
|
CryptoBazar
Package Description |
|
Bittrex.Net
Bittrex.Net is a .Net wrapper for the Bittrex API, including the SignalR websocket. It includes all features the API provides using clear and readable objects including but not limited to Reading market info, Placing and managing orders and Reading balances and funds |
GitHub repositories (4)
Showing the top 4 popular GitHub repositories that depend on CryptoExchange.Net:
Repository | Stars |
---|---|
JKorf/Binance.Net
A C# .netstandard client library for the Binance REST and Websocket Spot and Futures API focusing on clear usage and models
|
|
JKorf/Bittrex.Net
A C# .Net wrapper for the Bittrex web API including all features easily accessible and usable
|
|
JKorf/Kucoin.Net
A C# .netstandard client library for the Kucoin REST and Websocket Spot and Futures API focusing on clear usage and models
|
|
JKorf/Kraken.Net
A C# .netstandard client library for the Kraken REST and Websocket Spot and Futures API focusing on clear usage and models
|
Version | Downloads | Last updated |
---|---|---|
8.4.4 | 506 | 12/8/2024 |
8.4.3 | 1,549 | 12/3/2024 |
8.4.2 | 843 | 12/2/2024 |
8.4.1 | 80 | 12/2/2024 |
8.4.0 | 1,773 | 11/28/2024 |
8.3.0 | 3,427 | 11/19/2024 |
8.2.0 | 12,825 | 11/6/2024 |
8.1.1 | 751 | 11/1/2024 |
8.1.0 | 3,342 | 10/28/2024 |
8.0.3 | 5,717 | 10/14/2024 |
8.0.2 | 12,209 | 10/9/2024 |
8.0.1 | 357 | 10/7/2024 |
8.0.0 | 8,110 | 9/27/2024 |
7.11.2 | 8,092 | 8/28/2024 |
7.11.1 | 568 | 8/25/2024 |
7.11.0 | 11,808 | 8/7/2024 |
7.10.0 | 7,439 | 7/29/2024 |
7.8.0 | 5,930 | 7/2/2024 |
7.7.3 | 742 | 6/26/2024 |
7.7.2 | 2,058 | 6/25/2024 |
7.7.1 | 201 | 6/23/2024 |
7.7.0 | 22,696 | 6/23/2024 |
7.6.0 | 5,476 | 6/11/2024 |
7.5.2 | 19,631 | 5/7/2024 |
7.5.1 | 2,706 | 5/3/2024 |
7.5.0 | 2,199 | 5/1/2024 |
7.4.0 | 1,693 | 4/28/2024 |
7.3.3 | 1,489 | 4/23/2024 |
7.3.2 | 1,183 | 4/19/2024 |
7.3.1 | 1,344 | 4/18/2024 |
7.3.0 | 289 | 4/17/2024 |
7.2.1 | 1,232 | 4/5/2024 |
7.2.0 | 8,608 | 3/24/2024 |
7.1.0 | 3,068 | 3/16/2024 |
7.0.0 | 9,819 | 2/24/2024 |
7.0.0-beta2 | 727 | 2/21/2024 |
7.0.0-beta1 | 2,916 | 2/6/2024 |
6.2.5 | 9,071 | 1/9/2024 |
6.2.4 | 2,923 | 1/4/2024 |
6.2.3 | 52,813 | 12/2/2023 |
6.2.2 | 939 | 12/2/2023 |
6.2.1 | 20,887 | 10/28/2023 |
6.2.0 | 18,529 | 10/24/2023 |
6.1.5 | 8,650 | 10/8/2023 |
6.1.4 | 11,637 | 9/23/2023 |
6.1.3 | 3,873 | 9/18/2023 |
6.1.2 | 2,667 | 9/11/2023 |
6.1.1 | 3,106 | 9/4/2023 |
6.1.0 | 24,782 | 8/25/2023 |
6.0.3 | 4,404 | 7/23/2023 |
6.0.2 | 5,182 | 7/5/2023 |
6.0.1 | 1,852 | 6/29/2023 |
6.0.0 | 32,333 | 6/25/2023 |
5.4.3 | 76,622 | 4/14/2023 |
5.4.2 | 11,129 | 4/1/2023 |
5.4.1 | 31,482 | 3/18/2023 |
5.4.0 | 14,353 | 2/14/2023 |
5.3.1 | 14,906 | 12/8/2022 |
5.3.0 | 47,981 | 11/14/2022 |
5.2.4 | 26,216 | 7/31/2022 |
5.2.3 | 5,095 | 7/19/2022 |
5.2.2 | 71,243 | 7/17/2022 |
5.2.1 | 10,840 | 7/16/2022 |
5.2.0 | 27,192 | 7/10/2022 |
5.1.12 | 16,088 | 6/12/2022 |
5.1.11 | 16,271 | 5/24/2022 |
5.1.10 | 10,402 | 5/22/2022 |
5.1.9 | 14,645 | 5/8/2022 |
5.1.8 | 10,796 | 5/1/2022 |
5.1.7 | 23,264 | 4/14/2022 |
5.1.6 | 38,137 | 3/10/2022 |
5.1.5 | 2,019 | 3/9/2022 |
5.1.4 | 9,869 | 3/4/2022 |
5.1.3 | 13,134 | 3/1/2022 |
5.1.2 | 13,936 | 2/27/2022 |
5.1.1 | 10,801 | 2/24/2022 |
5.1.0 | 1,922 | 2/24/2022 |
5.0.0 | 11,444 | 2/18/2022 |
5.0.0-beta9 | 1,593 | 2/15/2022 |
5.0.0-beta8 | 2,987 | 2/9/2022 |
5.0.0-beta7 | 5,642 | 2/5/2022 |
5.0.0-beta6 | 2,594 | 2/2/2022 |
5.0.0-beta5 | 5,864 | 1/25/2022 |
5.0.0-beta4 | 1,590 | 1/24/2022 |
5.0.0-beta3 | 5,753 | 1/24/2022 |
5.0.0-beta2 | 1,822 | 1/21/2022 |
5.0.0-beta1 | 7,329 | 1/15/2022 |
5.0.0-alpha7 | 6,957 | 1/7/2022 |
5.0.0-alpha6 | 5,673 | 1/3/2022 |
5.0.0-alpha5 | 4,664 | 1/1/2022 |
5.0.0-alpha4 | 2,380 | 1/1/2022 |
5.0.0-alpha3 | 5,268 | 12/27/2021 |
5.0.0-alpha2 | 5,625 | 12/21/2021 |
5.0.0-alpha1 | 6,091 | 12/7/2021 |
4.2.8 | 81,477 | 10/8/2021 |
4.2.7 | 9,865 | 10/6/2021 |
4.2.6 | 1,813 | 10/6/2021 |
4.2.5 | 6,829 | 10/5/2021 |
4.2.4 | 2,147 | 9/30/2021 |
4.2.3 | 8,413 | 9/29/2021 |
4.2.2 | 2,508 | 9/23/2021 |
4.2.1 | 2,503 | 9/22/2021 |
4.2.0 | 16,185 | 9/20/2021 |
4.1.0 | 8,891 | 9/15/2021 |
4.0.8 | 25,758 | 8/26/2021 |
4.0.7 | 2,830 | 8/24/2021 |
4.0.6 | 9,880 | 8/24/2021 |
4.0.5 | 1,902 | 8/24/2021 |
4.0.4 | 1,846 | 8/24/2021 |
4.0.3 | 2,070 | 8/20/2021 |
4.0.2 | 1,862 | 8/20/2021 |
4.0.1 | 10,397 | 8/13/2021 |
4.0.0 | 8,182 | 8/12/2021 |
4.0.0-beta9 | 1,691 | 6/17/2021 |
4.0.0-beta8 | 1,654 | 6/8/2021 |
4.0.0-beta7 | 8,416 | 6/7/2021 |
4.0.0-beta6 | 1,613 | 6/1/2021 |
4.0.0-beta5 | 7,261 | 5/26/2021 |
4.0.0-beta4 | 5,412 | 5/6/2021 |
4.0.0-beta3 | 1,674 | 4/30/2021 |
4.0.0-beta2 | 1,574 | 4/30/2021 |
4.0.0-beta15 | 1,661 | 8/12/2021 |
4.0.0-beta14 | 5,265 | 8/9/2021 |
4.0.0-beta13 | 1,574 | 7/31/2021 |
4.0.0-beta12 | 5,650 | 7/26/2021 |
4.0.0-beta11 | 6,141 | 7/9/2021 |
4.0.0-beta10 | 1,703 | 7/7/2021 |
4.0.0-beta1 | 8,523 | 4/30/2021 |
3.9.0 | 57,690 | 4/28/2021 |
3.8.1 | 14,692 | 4/19/2021 |
3.8.0 | 18,944 | 3/30/2021 |
3.7.1 | 4,266 | 3/10/2021 |
3.7.0 | 29,220 | 3/1/2021 |
3.6.1 | 1,194,360 | 2/16/2021 |
3.6.0 | 30,699 | 1/22/2021 |
3.5.0 | 16,266 | 1/11/2021 |
3.4.0 | 15,753 | 12/21/2020 |
3.3.0 | 15,531 | 12/10/2020 |
3.2.1 | 163,536 | 11/19/2020 |
3.2.0 | 2,138 | 11/19/2020 |
3.1.0 | 26,758 | 10/8/2020 |
3.0.15 | 4,100 | 10/6/2020 |
3.0.14 | 31,884 | 8/24/2020 |
3.0.13 | 2,081 | 8/24/2020 |
3.0.12 | 7,542 | 8/12/2020 |
3.0.11 | 38,110 | 6/21/2020 |
3.0.10 | 13,488 | 6/16/2020 |
3.0.9 | 9,869 | 6/7/2020 |
3.0.8 | 3,457 | 6/2/2020 |
3.0.7 | 10,100 | 5/20/2020 |
3.0.6 | 216,087 | 3/3/2020 |
3.0.5 | 12,639 | 2/5/2020 |
3.0.4 | 3,115 | 1/29/2020 |
3.0.3 | 16,308 | 1/23/2020 |
3.0.2 | 2,611 | 12/10/2019 |
3.0.1 | 40,224 | 11/14/2019 |
3.0.0 | 28,175 | 10/23/2019 |
2.1.8 | 74,209 | 8/29/2019 |
2.1.7 | 16,711 | 8/7/2019 |
2.1.6 | 2,981 | 8/6/2019 |
2.1.5 | 13,695 | 7/9/2019 |
2.1.4 | 4,834 | 6/24/2019 |
2.1.3 | 10,489 | 5/16/2019 |
2.1.2 | 11,509 | 5/13/2019 |
2.1.1 | 3,105 | 5/9/2019 |
2.1.0 | 8,112 | 5/1/2019 |
2.0.15 | 4,607 | 4/9/2019 |
2.0.14 | 3,691 | 4/2/2019 |
2.0.13 | 8,918 | 3/18/2019 |
2.0.12 | 9,725 | 3/7/2019 |
2.0.11 | 6,020 | 2/27/2019 |
2.0.10 | 4,070 | 2/13/2019 |
2.0.9 | 11,063 | 2/1/2019 |
2.0.8 | 2,772 | 1/17/2019 |
2.0.7 | 8,156 | 1/9/2019 |
2.0.6 | 3,940 | 12/29/2018 |
2.0.5 | 4,010 | 12/28/2018 |
2.0.4 | 2,417 | 12/19/2018 |
2.0.3 | 9,695 | 12/17/2018 |
2.0.2 | 8,005 | 12/6/2018 |
2.0.1 | 2,354 | 12/5/2018 |
2.0.0 | 6,013 | 12/5/2018 |
1.0.2 | 12,825 | 10/5/2018 |
1.0.1 | 11,953 | 10/4/2018 |
1.0.0 | 11,611 | 9/21/2018 |
0.0.45 | 2,385 | 9/21/2018 |
0.0.44 | 8,064 | 9/7/2018 |
0.0.43 | 12,330 | 8/20/2018 |
0.0.42 | 2,450 | 8/20/2018 |
0.0.41 | 6,218 | 8/16/2018 |
0.0.40 | 3,152 | 8/15/2018 |
0.0.39 | 3,584 | 8/13/2018 |
0.0.38 | 6,623 | 8/13/2018 |
0.0.37 | 4,922 | 8/12/2018 |
0.0.36 | 2,637 | 8/10/2018 |
0.0.35 | 2,392 | 8/10/2018 |
0.0.34 | 2,707 | 8/8/2018 |
0.0.33 | 2,410 | 8/3/2018 |
0.0.32 | 2,421 | 8/1/2018 |
0.0.31 | 15,032 | 7/2/2018 |
0.0.30 | 2,426 | 7/2/2018 |
0.0.29 | 2,508 | 7/2/2018 |
0.0.28 | 9,260 | 6/25/2018 |
0.0.27 | 7,647 | 6/8/2018 |
0.0.26 | 4,560 | 6/8/2018 |
0.0.25 | 16,892 | 5/7/2018 |
0.0.24 | 4,247 | 5/7/2018 |
0.0.23 | 3,386 | 5/4/2018 |
0.0.22 | 3,597 | 5/3/2018 |
0.0.21 | 5,701 | 4/19/2018 |
0.0.20 | 2,493 | 4/19/2018 |
0.0.19 | 12,443 | 4/5/2018 |
0.0.18 | 2,711 | 3/27/2018 |
0.0.17 | 3,895 | 3/27/2018 |
0.0.16 | 2,560 | 3/27/2018 |
0.0.15 | 9,563 | 3/23/2018 |
0.0.14 | 6,483 | 3/21/2018 |
0.0.13 | 2,546 | 3/21/2018 |
0.0.12 | 3,262 | 3/20/2018 |
0.0.11 | 8,677 | 3/12/2018 |
0.0.10 | 5,473 | 3/9/2018 |
0.0.9 | 3,620 | 3/9/2018 |
0.0.8 | 4,700 | 3/8/2018 |
0.0.7 | 3,224 | 3/8/2018 |
0.0.6 | 7,148 | 3/7/2018 |
0.0.5 | 3,477 | 3/5/2018 |
0.0.4 | 6,568 | 3/5/2018 |
0.0.2 | 4,472 | 3/1/2018 |
0.0.1 | 3,784 | 3/1/2018 |