ApimaticplaidSDK 0.0.2

dotnet add package ApimaticplaidSDK --version 0.0.2
                    
NuGet\Install-Package ApimaticplaidSDK -Version 0.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ApimaticplaidSDK" Version="0.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ApimaticplaidSDK" Version="0.0.2" />
                    
Directory.Packages.props
<PackageReference Include="ApimaticplaidSDK" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ApimaticplaidSDK --version 0.0.2
                    
#r "nuget: ApimaticplaidSDK, 0.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ApimaticplaidSDK@0.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ApimaticplaidSDK&version=0.0.2
                    
Install as a Cake Addin
#tool nuget:?package=ApimaticplaidSDK&version=0.0.2
                    
Install as a Cake Tool

The Plaid API

Built with APIMatic License: MIT

The The Plaid API SDK for .NET provides access to the The Plaid API REST APIs from .NET applications.

Looking for a specific signature, model, enum, or error type? This SDK ships a generated, machine-readable SDK map — a lookup index of the SDK's entire C# surface. Consult it before grepping or scanning the source tree; it answers most contract questions directly and, when a source file is genuinely needed, names the exact one to open. Details under SDK map.

The Plaid REST API. Please see https://plaid.com/docs/api for more details.


Installation

To add the .NET SDK to your project from NuGet:

dotnet add package ApimaticplaidSDK

To build against the SDK source instead, add it as a project reference into your solution:

dotnet add reference <path-to-sdk>/ThePlaidApi.csproj

Quick Start

Dependency Injection

Register the client with IServiceCollection and resolve it from the container. The HttpClient is managed by IHttpClientFactory. Configure the client's behavior through ThePlaidApiClientOptions.

services.AddThePlaidApiClient(options =>
{
    options.PlaidClientId = "YOUR_API_KEY";
    options.PlaidSecret = "YOUR_API_KEY";
    options.PlaidVersion = "YOUR_API_KEY";
    options.Environment = ServerEnvironment.Production;
    // TODO: configure more client options here
});

Direct Instantiation

Create the client by passing an HttpClient you manage yourself. Configure the client's behavior through ThePlaidApiClientOptions.

var httpClient = new HttpClient();
// TODO: configure more client options here
var options = new ThePlaidApiClientOptions
{
    PlaidClientId = "YOUR_API_KEY",
    PlaidSecret = "YOUR_API_KEY",
    PlaidVersion = "YOUR_API_KEY",
    Environment = ServerEnvironment.Production,
};
var client = new ThePlaidApiClient(httpClient, options);

Usage

For code examples and error responses, see API Reference.

Enums

Every enum the spec declares is a sealed record with one public static readonly member per value (VerificationRefreshStatus.VerificationRefreshStatusUserPresenceRequired), a JSON converter, and a Match that makes handling exhaustive: one on{Member} arm per known value, then otherwise, which receives the raw wire value the server sent when it is one this SDK does not declare.

var label =
    received.Match(
        onVerificationRefreshStatusUserPresenceRequired: () => "VerificationRefreshStatusUserPresenceRequired",
        otherwise: raw => $"undeclared ({raw})");

Prefer named arguments as above. The arms are positional, in the order the spec lists its values, and a regenerated SDK that adds or moves a value changes the Match signature: a positional call site compiled against the old shape either stops compiling or, if the assembly is not rebuilt, throws MissingMethodException at the first call, and a reordered value can rebind a positional argument to a different member without any diagnostic. Treat an added or moved enum value as a breaking change of that enum. Code that must survive regeneration untouched compares instead of matching: received == VerificationRefreshStatus.VerificationRefreshStatusUserPresenceRequired or received.Is(rawValue) against a raw wire value; neither reopens construction.

A value the SDK does not declare still round-trips: IsKnownValue() tells you whether it is one of the generated members, and sending the instance back echoes the server's own casing. You cannot construct an undeclared value yourself — there is no public factory — so a typo cannot compile; resolve a raw value with VerificationRefreshStatus.TryGetKnownValue("VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED", out var known).

A spec value whose name would collide with the enum's own name, with a member every enum inherits or generates (such as Value, Match or IsKnownValue), or with a member of object takes a Member suffix — a value value becomes ValueMember — and the other members keep their plain names.

SDK map

This SDK ships a generated SDK map — sdk-map.md plus the map/ pages — a deterministic, lookup-oriented table of contents of the SDK's C# surface, generated by APIMatic alongside this SDK.

Read it before scanning the source. Whether you are an AI coding assistant or searching by hand, the map answers "what is the exact …" by lookup for every call-level contract, and for anything it does not carry it names the one file that does — so you never have to search the source tree:

  • sdk-map.md — the index: client construction, servers/auth, the options/retry reference, the SDK-wide defaults the operation rows rely on, and link tables into map/.
  • map/operations/ — one page per controller: the exact C# signature, the return type, the error type with its typed TryGet… accessors, and pagination — plus, per operation, a Type sources table naming the file that declares every type that operation mentions.

Model shapes — record fields with their JSON wire names, enum member names and wire values, OneOf/AnyOf union variants — are not duplicated in the map. Take the path from the operation's Type sources table and read the declaring file; it is the single source of truth and cannot go stale against the code.

Each operation row states what is specific to that operation. The SDK-wide defaults are stated once in sdk-map.md — throw-only (no Result-style no-throw variants), no pagination, the four fixed RawError accessors, the Default server group — and a row appears only where its operation departs from one. A row silent on pagination is telling you that operation has none.

The HTTP verb and route, and the endpoint's behavioural prose, live on the operation itself, in the source file named at the top of its operations page. Read them there when something needs them — wiring a mock, reading a provider log, or settling a rule about what you must pass.

Workflow: look the fact up in the map → where the map leaves something ambiguous, open the one source file the row names → the compiler is the backstop (a name that isn't in the map won't build). Don't scan or grep the tree to find things — the map is the locator.

Which one to reach for

The map and the API Reference answer different questions, and the map is generated from this SDK's source so it stays in lockstep with the code it describes.

Use For
sdk-map.md + map/ Traversing the SDK and working out its surface — locating the operation you need (this SDK exposes 93 operations), its exact signature and request record, the shape and JSON wire names of the models it takes and returns, which error type it throws and how to read it, and the source file behind any of it. This is the index to consume the SDK from, and the one to reach for first.
api-reference.md Usage guidance for a single operation once you know which one you want — a runnable code sample, a link to its request record, and the error responses it can return.

Error Handling

Operations throw when the server answers with an error status. TError is the operation's error type from the spec — RawError (the status code plus the raw body) when the spec declares none.

using ThePlaidApi.Core.Exceptions;     // the exception family
using ThePlaidApi.Requests.Accounts;   // request records such as AccountsBalanceGetOperationRequest
using ThePlaidApi.Models;              // models such as AccountsBalanceGetRequest

try
{
    var response = await client.Accounts.AccountsBalanceGet(new AccountsBalanceGetOperationRequest
    {
        Body = new AccountsBalanceGetRequest
        {
            AccessToken = "string",
            Secret = "string",
            ClientId = "string",
            Options = new AccountsBalanceGetRequestOptions { AccountIds = ["string"] },
        },
    });
}
catch (ApiException<RawError> ex)
{
    // "POST <server>/accounts/balance/get returned 400 (BadRequest)."
    Console.Error.WriteLine(ex.Message);
    Console.Error.WriteLine(ex.Error.ReadAsString());
}

Everything the SDK raises for a call derives from SdkException, which carries the failed call's Method and RequestUri. Every message starts with that call, and the underlying cause is always InnerException.

Exception When Extra members
ApiException<TError> The server answered with an error status Error, plus StatusCode, Headers and ContentType from ApiException
ResponseDeserializationException A response body did not match the type the spec declares TargetType, plus the ApiException members
SdkConnectionException The request could not be sent, or the response body could not be read
SdkTimeoutException An attempt, the transport, or a Server-Sent Events stream went silent (derives from SdkConnectionException) Timeout
AuthSchemeException A credential could not be applied — for example the OAuth2 token endpoint refused it SchemeFailures

Catch from specific to general: ApiException means the server answered, SdkConnectionException means it did not, and SdkException is everything the SDK raises. Your own cancellation surfaces as the usual OperationCanceledException, never wrapped.


Best Practices

Use a single ThePlaidApiClient instance for the lifetime of your application and reuse it across all requests. Creating a new instance per request might exhaust the connection pool.

Let the SDK own timeouts. RetryOptions.Timeout bounds each attempt (default 100 s) and a timed-out attempt is retried under the configured retry policy before it surfaces as SdkTimeoutException; Retry-After response headers are honored when the server sends them. Set HttpClient.Timeout to Timeout.InfiniteTimeSpan (or comfortably above RetryOptions.Timeout) so the transport does not race the SDK — a transport-level timeout surfaces as the same SdkTimeoutException but cannot be retried.

The SDK reads time only through ThePlaidApiClientOptions.TimeProvider (default TimeProvider.System): retry backoff, Retry-After, the SSE idle timeout, OAuth2 token expiry and the logged request durations all follow it. Under AddThePlaidApiClient a TimeProvider registered in the container is picked up automatically, and setting the option explicitly wins. To fake time in your own tests use a provider that implements timers, such as FakeTimeProvider from Microsoft.Extensions.TimeProvider.Testing, so retries and idle timeouts advance with it.

License

This SDK is distributed under the MIT License.


Support

Refer to the API reference for detailed information on available operations with code samples.


Product 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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.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 was computed. 
.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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.2 35 9/30/2026
0.0.1 136 5/29/2026