RebrickableSharp is a strongly-typed, easy-to-use C# client for the Rebrickable API that gets you started with just a few lines of code. It handles authentication, error handling and parsing of JSON into typed instances. It supports all .NET platforms compatible with .NET standard 2.0.
- BricklinkSharp - Easy-to-use C# client for the bricklink (LEGO) marketplace API.
- Authentication handling
- HTTP request / response handling
- New method on IRebrickableClient: GetColorsAsync. Returns a color list.
- New method on IRebrickableClient: GetColorAsync. Returns a specific color.
- New method on IRebrickableClient: GetPartsAsync. Returns a part list with various filter options.
- New method on IRebrickableClient: FindPartByBricklinkIdAsync. Find a part by its BrickLink ID.
- New method on IRebrickableClient: GetPartColorDetails. Gets details for a specific part / color combination.
- New method on IRebrickableClient: GetElementAsync. Returns a specific element.
Check out the demo project for full-featured examples.
You need to have an account on Rebrickable. Then, go to Account > Settings > API and create a new Key or use an existing one.
Install-Package RebrickableSharp
nuget install RebrickableSharp
RebrickableClientConfiguration.Instance.ApiKey = "<Your API Key>";
var client = RebrickableClientFactory.Build();
// Do stuff
// Client must be disposed properly
client.Dispose();
Alternatively, an externally managed HttpClient can be used:
var httpClient = new HttpClient();
var client = RebrickableClientFactory.Build(httpClient);
// Do stuff
// Client *and* HttpClient must be disposed properly
client.Dispose();
httpClient.Dispose();
It's recommended to create and use one IRebrickableClient client throughout the lifetime of your application.
In applications using an IoC container you may register the IRebrickableClient as a service and inject it into consuming instances (e.g. controllers). See the below examples to register the IRebrickableClient as single instance (Singleton).
Autofac example
containerBuilder.Register(c => RebrickableClientFactory.Build())
.As<IRebrickableClient>()
.SingleInstance();
services.AddSingleton(typeof(IRebrickableClient), provider =>
{
return RebrickableClientFactory.Build();
});
// API
Task<PagedResponse<Part>> GetPartsAsync(int page = 1, int pageSize = 100,
bool includeDetails = false, string? bricklinkId = null,
string? partNumber = null, IEnumerable<string>? partNumbers = null,
int? categoryId = null, string? brickOwlId = null,
string? legoId = null, string? lDrawId = null,
string? searchTerm = null,
CancellationToken cancellationToken = default);
// Example
var response = await client.GetPartsAsync(page: 1, pageSize: 50, includeDetails: true, searchTerm: "M-Tron");
var parts = response.Results;
// API
Task<Part?> FindPartByBricklinkIdAsync(string bricklinkId,
bool includeDetails = false,
CancellationToken cancellationToken = default);
// Example
var part = await client.FindPartByBricklinkIdAsync("3005", true);
// API
Task<PartColorDetails> GetPartColorDetailsAsync(string partNumber, int colorId,
CancellationToken cancellationToken = default);
// Example
var colorId = 1; //Blue
var partColorDetails = await client.GetPartColorDetailsAsync("3005", colorId)
// API
Task<PagedResponse<Color>> GetColorsAsync(int page = 1, int pageSize = 100,
bool includeDetails = false,
CancellationToken cancellationToken = default);
// Example
var response = await client.GetColorsAsync(includeDetails: true,
page: 1, pageSize: 50);
var colors = response.Results;
// API
Task<Color> GetColorAsync(int colorId, bool includeDetails = false,
CancellationToken cancellationToken = default);
// Example
var colorId = 0; //black
var black = await client.GetColorAsync(colorId, includeDetails: true);
// API
Task<Element> GetElementAsync(string elementId,
CancellationToken cancellationToken = default);
// Example
var elementId = "300521"; //1x1 Brick in Red
var element = await client.GetElementAsync(elementId);