API reference
Every public member of all four packages, generated from the XML documentation comments in the source. The same comments ship inside the packages, so what is here is what IntelliSense shows you at the call site.
GenerateDocumentationFile and TreatWarningsAsErrors are both on for every project under src/, so a
public member without a documentation comment does not compile in this repository. There is no exception and
no #pragma warning disable CS1591 anywhere in the shipped source — including the 199 generated files, whose
comments are written by the generator from the OpenAPI description's own prose.
Namespaces
| Namespace | Package | Contents |
|---|---|---|
| MassiveDotNet | MassiveDotNet |
MassiveClientOptions, the MassiveApiException family, the four filter types, MassivePage<T> and MassivePagedResult<T>, the two date-or-timestamp value types, and the shared enums |
| MassiveDotNet.Http | MassiveDotNet |
MassiveHttpTransport, RequestUriBuilder, and the three DelegatingHandlers — auth, retry and the rate limiter |
| MassiveDotNet.Serialization | MassiveDotNet |
The JsonConverter<T> implementations and the two token-level readers and writers the generated converters are built on |
| MassiveDotNet.Rest | MassiveDotNet.Rest |
MassiveRestClient and the two endpoint groups reached through it, StocksGroup and ReferenceGroup |
| MassiveDotNet.Rest.Models | MassiveDotNet.Rest |
The response models — what each endpoint returns |
| MassiveDotNet.WebSocket | MassiveDotNet.WebSocket |
MassiveStreamClient, MassiveStockStream, StockTopic, the options types, and the stream exception family |
| MassiveDotNet.WebSocket.Events | MassiveDotNet.WebSocket |
The five streaming event types and ConditionSet |
| Microsoft.Extensions.DependencyInjection | MassiveDotNet.Extensions.DependencyInjection |
AddMassive and AddMassiveStream, as extension methods on IServiceCollection |
Four things no single member's page can say
The registration package has no namespace of its own. Everything public in
MassiveDotNet.Extensions.DependencyInjection sits in Microsoft.Extensions.DependencyInjection, so
AddMassive is in scope wherever a container is being configured and no extra using is needed. It is also
the only project permitted to reference Microsoft.Extensions.* at all — a CI assertion on the restore graph
enforces that, which is why the core has no AddMassive and never will.
Two attributes on a method are a statement about the platform, not the SDK. A method marked
[Obsolete(… DiagnosticId = "MASSIVE0002")] is one Massive's own description flags as deprecated, and the
message names the .NET method that supersedes it. A method marked [Experimental("MASSIVE0001")] is on a
route Massive itself versions as vX or dev — an error until you opt in with
<NoWarn>$(NoWarn);MASSIVE0001</NoWarn>, deliberately, because several of those routes do not answer yet.
Both are read from the description rather than declared by hand, so neither can drift from what Massive says.
Nothing is ever silently omitted from this SDK: a deprecated operation ships, marked.
Most list endpoints have two methods, and the difference is memory. ListXxxAsync returns one page and
tells you whether more exist; EnumerateXxxAsync returns an IAsyncEnumerable<T> that walks every page with
one request in flight at a time and retains nothing proportional to the pages traversed. The split follows the
BCL's own Directory.GetFiles / Directory.EnumerateFiles distinction. Endpoints that do not paginate return
an array, or the value itself.
The tick-level models are structs on purpose, and they are read by generated converters.
Agg, Trade and
Quote arrive fifty thousand at a time, so a 50,000-row response allocates one
array rather than 50,000 objects — and each one is read straight off the JSON tokens rather than through
System.Text.Json's own object machinery, which costs about 456 bytes a row. Reference types such as
TickerDetails and Dividend stay classes,
where nullability is meaningful and rows arrive in tens.
The reasoning behind these — and the measured figures — is in the README, rendered on this site as Reference. Allocation is the one to read first.