v0.2.0
The first version published to nuget.org. The 0.1/0.2 numbering follows the project's own
milestones rather than a release history: everything below has been in the repository for some
time, and 0.2.0 is the first version anyone can dotnet add package.
Added
MassiveDotNet.Rest— 60 of the platform's 147 REST operations, generated from Massive's
OpenAPI description: 21 underStocks(aggregates, trades, quotes, snapshots, indicators) and 39
underReference(tickers, news, corporate actions, financials, SEC filings, exchanges and
conditions). Options, crypto, forex, futures, indices and the vendor datasets are not in this
release. Coverage is contract-tested and cannot regress: an endpoint may be added, never removed,
except when Massive retires the route from the description itself.- Paginated endpoints get
ListXxxAsync(one page) andEnumerateXxxAsync
(IAsyncEnumerable<T>, every page, one in flight at a time, retaining no memory proportional to
the pages traversed). - Comparator parameters collapse to one filter-typed argument per field —
RangeFilter<T>,
SetFilter<T>,Filter<T>,ArrayFilter<T>— chosen from the suffix set the description
declares, so an unsupported comparator is a compile error rather than a silently dropped query
string. This replaced 1,182 flat parameters, one endpoint of which had a 114-argument method. - Cursors are followed verbatim, and only when
next_urlnames the same origin as the configured
BaseAddress. A mismatch throws rather than sending the caller's key to a host the response
body chose.
- Paginated endpoints get
MassiveDotNet.WebSocket— six stock topics (trades, NBBO quotes, second and minute
aggregates, net order imbalances, limit up-limit down) over a persistent connection, with backoff
reconnect and subscription replay.- Topics are a typed enum. The server silently drops an unrecognised topic code, so every
subscribe is acknowledgement-counted and throws when the server accepted fewer pairs than were
asked for. - Each topic owns a bounded buffer that drops the oldest event and counts it exactly, so a slow
consumer never stalls the read loop shared by every other topic.
- Topics are a typed enum. The server silently drops an unrecognised topic code, so every
MassiveDotNet.Extensions.DependencyInjection—AddMassive, wiring the client through
IHttpClientFactory. The only package permitted to referenceMicrosoft.Extensions.*.MassiveDotNet— the core the three share: transport, both authentication schemes,
exceptions, and the allocation-conscious serialization helpers.- Opt-in rate limiting and retry, both off unless configured, composed auth outermost then retry
then the limiter. The ordering is load-bearing: a retry handler placed outside authentication
appends the API key once per attempt under the query-string scheme. - Native AOT support across all four packages, verified by a publish that must emit zero IL
warnings and by running the resulting native binary.
Notes for consumers
net10.0only. No multi-targeting.- NodaTime is the temporal vocabulary.
Instant,LocalDate,DurationandZonedDateTime
rather thanDateTime, because a bar window, a tick timestamp and an ex-dividend date are three
different things thatDateTimecollapses into one. This is the single largest adjustment for a
caller coming from another SDK. AddMassivehas noIConfigurationoverload, deliberately.MassiveClientOptions.Timeoutis
aDuration, which the configuration binder cannot convert — and it fails silently, binding clean
and leaving the default in place. Read the values yourself:
options.ApiKey = configuration["Massive:ApiKey"].- The DI package's
Microsoft.Extensions.*dependencies are published as minimum-version ranges at
10.0.0, as every NuGet dependency is, so a consumer on a lower version is floated upward. - Some operations that the description declares are not served by the API and answer
404. They
ship as declared, with the status and the date observed pinned in a test, because the description
is the contract for what ships.
Published to nuget.org by publish.yml
through OIDC Trusted Publishing. The repository holds no long-lived credential.