Skip to main content

.NET SDK

The official Oproto SDK for C# and .NET applications.

NuGet NuGet Downloads

Installation

dotnet add package Oproto.Sdk

Or via the NuGet Package Manager:

Install-Package Oproto.Sdk

Requirements

  • .NET 8.0 or later
  • Compatible with Native AOT

Quick Start

using Oproto.Sdk;

// Initialize the client
var client = new OprotoClient(options =>
{
options.AccessToken = "your-access-token";
});

// Make API calls
var companies = await client.Companies.ListAsync();

Dependency Injection

Register the SDK with your DI container:

// Program.cs or Startup.cs
builder.Services.AddOprotoClient(options =>
{
options.AccessToken = configuration["Oproto:AccessToken"];
});

// Inject and use
public class MyService
{
private readonly IOprotoClient _client;

public MyService(IOprotoClient client)
{
_client = client;
}

public async Task DoWorkAsync()
{
var companies = await _client.Companies.ListAsync();
}
}

Authentication

The SDK supports OAuth 2.0 authentication:

Access Token

var client = new OprotoClient(options =>
{
options.AccessToken = "your-access-token";
});

Token Refresh

For long-running applications, configure automatic token refresh:

var client = new OprotoClient(options =>
{
options.ClientId = "your-client-id";
options.ClientSecret = "your-client-secret";
options.TokenEndpoint = "https://auth.oproto.io/oauth/token";
});

Configuration Options

OptionTypeDescription
AccessTokenstringOAuth access token
ClientIdstringOAuth client ID for token refresh
ClientSecretstringOAuth client secret for token refresh
BaseUrlstringAPI base URL (defaults to production)
TimeoutTimeSpanRequest timeout

Error Handling

The SDK throws typed exceptions for API failures:

using Oproto.Sdk;
using Oproto.Sdk.Exceptions;

try
{
var company = await client.Companies.GetAsync("invalid-id");
}
catch (OprotoApiException ex)
{
Console.WriteLine($"API Error: {ex.ErrorCode} - {ex.Message}");
}

Native AOT Support

The SDK is fully compatible with Native AOT compilation. No additional configuration is required.

<PropertyGroup>
<PublishAot>true</PublishAot>
</PropertyGroup>

Resources