Esgo 0.1.1
Prefix Reserveddotnet add package Esgo --version 0.1.1
NuGet\Install-Package Esgo -Version 0.1.1
<PackageReference Include="Esgo" Version="0.1.1" />
<PackageVersion Include="Esgo" Version="0.1.1" />
<PackageReference Include="Esgo" />
paket add Esgo --version 0.1.1
#r "nuget: Esgo, 0.1.1"
#:package Esgo@0.1.1
#addin nuget:?package=Esgo&version=0.1.1
#tool nuget:?package=Esgo&version=0.1.1
ESGO .NET SDK
Official .NET client for the ESGO API: find matching empty-run capacity for road freight and publish open transport requests from your TMS or ERP.
Alpha. Covers all endpoints of API v1: key info, matching search and open requests. The SDK may still change before 1.0; see CHANGELOG.md.
Installation
dotnet add package Esgo
Targets .NET 8, .NET 10 and .NET Standard 2.0 (so .NET Framework 4.6.2 and newer).
Access
API keys are issued by ESGO; there is no self-service sign-up yet. Request access at es-go.de/developers. Keep your key secret and never commit it to a repository.
Usage
using Esgo;
using Esgo.Models;
using var esgo = new EsgoClient("esgo_live_...");
var result = await esgo.Matches.SearchAsync(new MatchSearchRequest
{
Origin = "47057 Duisburg",
Destination = "80331 München",
WeightKg = 12000,
LoadingMeters = 4.8,
});
foreach (var match in result.Data)
Console.WriteLine($"{match.RouteId} {match.DepartureWindow.Start} {match.PriceEstimateEur} {match.BookingUrl}");
Or set the key once, like StripeConfiguration.ApiKey:
EsgoConfiguration.ApiKey = "esgo_live_..."; // or the ESGO_API_KEY environment variable
using var esgo = new EsgoClient();
var me = await esgo.Me.RetrieveAsync();
Console.WriteLine($"{me.AccountRole}: {string.Join(", ", me.Quotas.Select(q => $"{q.Name} {q.Remaining}"))}");
To use your own HttpClient (for example from IHttpClientFactory), pass it
as new EsgoClient(apiKey, httpClient: client); the SDK does not dispose it.
Open requests
Publish a transport request; ESGO matches it against carriers' empty runs:
var start = new DateTimeOffset(2026, 11, 3, 8, 0, 0, TimeSpan.FromHours(1));
var request = await esgo.OpenRequests.CreateAsync(new OpenRequestCreate
{
Origin = "47057 Duisburg",
Destination = "80331 München",
WeightKg = 12000,
LoadingMeters = 4.8,
CargoType = "Paletten",
TimeWindows = new List<TimeWindow> { new() { Start = start, End = start.AddHours(8) } },
});
var matches = await esgo.OpenRequests.ListMatchesAsync(request.Id);
Times are local time Europe/Berlin.
| Method | Endpoint |
|---|---|
Me.RetrieveAsync() |
GET /v1/me |
Matches.SearchAsync(MatchSearchRequest) |
POST /v1/matches/search |
OpenRequests.CreateAsync(OpenRequestCreate) |
POST /v1/open-requests |
OpenRequests.ListMatchesAsync(requestId) |
GET /v1/open-requests/{request_id}/matches |
All fields are described in the API reference.
Errors
Every API error throws a subclass of EsgoApiException with the fields of the
ESGO error envelope:
try
{
await esgo.Me.RetrieveAsync();
}
catch (RateLimitException e)
{
Console.WriteLine($"Try again in {e.RetryAfterSeconds} seconds");
}
catch (EsgoApiException e)
{
Console.WriteLine($"{e.Status} {e.Code} {e.ErrorMessage} {e.Param} {e.RequestId}");
}
| Exception | HTTP status |
|---|---|
InvalidRequestException |
400, 422 |
AuthenticationException |
401 |
PermissionDeniedException |
403 |
NotFoundException |
404 |
RateLimitException |
429 |
ServiceUnavailableException |
503 |
InternalServerException |
other 5xx |
EsgoConnectionException |
network error or timeout, no response |
Links
- API reference: api.es-go.de/v1/docs
- OpenAPI spec: api.es-go.de/v1/openapi.json
- Python SDK: pypi.org/project/esgo
- Changelog: CHANGELOG.md
License
MIT, see LICENSE.
ESGO .NET SDK (Deutsch)
Offizieller .NET-Client für die ESGO API: passende Leerfahrten im Straßengüterverkehr finden und offene Transportanfragen direkt aus dem TMS oder ERP einstellen.
Alpha. Deckt alle Endpunkte der API v1 ab: Schlüssel-Infos, Matching-Suche und offene Transportanfragen. Bis Version 1.0 kann sich das SDK noch ändern, siehe CHANGELOG.md.
Installation
dotnet add package Esgo
Für .NET 8, .NET 10 und .NET Standard 2.0 (damit auch .NET Framework 4.6.2 und neuer).
Zugang
API-Schlüssel vergibt ESGO direkt; eine Registrierung per Self-Service gibt es noch nicht. Den Zugang fragst du unter es-go.de/developers an. Halte deinen Schlüssel geheim und committe ihn nie in ein Repository.
Verwendung
Die Beispiele oben gelten unverändert: new EsgoClient("esgo_live_...") oder
einmalig EsgoConfiguration.ApiKey bzw. die Umgebungsvariable ESGO_API_KEY
setzen. Zeiten sind Ortszeit Europe/Berlin. Alle Felder stehen in der
API-Referenz.
Fehlerbehandlung
Jeder Fehler der API wirft eine Unterklasse von EsgoApiException mit den
Feldern der ESGO-Fehlerhülle (Status, Code, ErrorMessage, Param,
RequestId, bei 429 zusätzlich RetryAfterSeconds). Die Zuordnung zu den
HTTP-Status steht in der Tabelle oben.
Lizenz
MIT, siehe LICENSE.
| Product | Versions 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 is compatible. 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 is compatible. 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 is compatible. 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. |
-
.NETFramework 4.6.2
- System.Text.Json (>= 10.0.13)
-
.NETStandard 2.0
- System.Text.Json (>= 10.0.13)
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.