Releases: MarketDataApp/sdk-java
Releases · MarketDataApp/sdk-java
Release list
Version 1.0.0
First stable release of the Market Data Java & Kotlin SDK — a single JVM
artifact, idiomatic from both Java and Kotlin, covering the full v1 API surface
with sync + async parity on every endpoint.
Added
MarketDataClient— no-arg constructor (everything resolved from the
configuration cascade) and a 4-arg constructor for tests/short-lived runtimes.
Single sharedHttpClient(HTTP/2), 99 s request / 2 s connect timeouts,
close()for resource release, andgetRateLimits().- Configuration cascade — explicit constructor parameters →
MARKETDATA_*
environment variables →.envin the working directory → built-in defaults.
baseUrl/apiVersionare normalized and validated at construction. - Demo mode — without a token the client omits the
Authorizationheader
and serves public, read-only endpoints;validateOnStartupverifies auth on
construction otherwise. - Options resource (
client.options()) —lookup,expirations,
strikes,quote,quotes(per-symbol fan-out map), andchainwith the
full filter surface (sealedExpirationFilter/StrikeFilter, greeks,
expiration=all,countback). - Stocks resource (
client.stocks()) —candles,quote,quotesand
prices(batched multi-symbol),news, andearnings.StockResolution
value type for open-ended resolutions; intraday windows over ~1 year are
auto-split, fetched concurrently, and merged. - Markets resource (
client.markets()) —status, the exchange
open/closed calendar withdate/from-to/countbackwindowing and
countryselection. - Funds resource (
client.funds()) —candles, NAV OHLC series at
daily-and-up resolutions (FundResolution). - Utilities resource (
client.utilities()) — servicestatusand auth
validation. - Universal parameters & formats —
dateFormat/mode/limit/
offset/columnsset fluently on every resource (immutable configured
copies), plus anasCsv()facet (withhuman/headersshaping) for every
endpoint.columnsprojection enforces the Option A strict-decoding contract. - Reliability — retry with exponential backoff (4 total attempts,
Retry-Afterhonored), client-level and per-response rate-limit snapshots
with preflight,/status/stale-while-revalidate cache gating retries, and a
50-permit async concurrency pool. - Sealed
MarketDataExceptionhierarchy — seven canonical subtypes
(AuthenticationError,BadRequestError,NotFoundError,RateLimitError,
ServerError,NetworkError,ParseError), each carrying support context
(requestId,requestUrl,statusCode,timestamp) andgetSupportInfo(). - First-class Kotlin interop —
@NullMarked(JSpecify) on every public
package, no Kotlin-stdlib or coroutines runtime dependency, SAM callbacks, and
Kotlin-reserved-word-free public API. - Packaging — MIT license, SemVer, version auto-detected from the JAR
manifest, published to Maven Central asapp.marketdata:marketdata-sdk-java.