FetchCatch.Client
0.1.0
Prefix Reserved
dotnet add package FetchCatch.Client --version 0.1.0
NuGet\Install-Package FetchCatch.Client -Version 0.1.0
<PackageReference Include="FetchCatch.Client" Version="0.1.0" />
<PackageVersion Include="FetchCatch.Client" Version="0.1.0" />
<PackageReference Include="FetchCatch.Client" />
paket add FetchCatch.Client --version 0.1.0
#r "nuget: FetchCatch.Client, 0.1.0"
#:package FetchCatch.Client@0.1.0
#addin nuget:?package=FetchCatch.Client&version=0.1.0
#tool nuget:?package=FetchCatch.Client&version=0.1.0
FetchCatch.Client
Typed .NET client for FetchCatch — a workflow engine for decision flows you author visually and call as an API.
dotnet add package FetchCatch.Client
For ASP.NET Core hosts, see also FetchCatch.AspNetCore for one-line DI registration.
Quick start
using FetchCatch.Client;
var fc = new FetchCatchClient(new FetchCatchOptions
{
ApiKey = Environment.GetEnvironmentVariable("FETCHCATCH_API_KEY")!,
});
var result = await fc.EvaluateAsync<CheckoutInput, CheckoutDecision>(
flowSlug: "checkout",
input: new CheckoutInput { Amount = 100, UserId = "u-123" });
if (result.IsCompleted)
{
Console.WriteLine($"Approved: {result.Decision!.Approved}");
}
else if (result.IsWaiting)
{
// The flow paused at a wait_for_event node; render UI and resume later
await fc.ResumeAsync(result.RunId, result.WaitingForEvent!, new { confirmed = true });
}
public record CheckoutInput(decimal Amount, string UserId);
public record CheckoutDecision(bool Approved, string? Reason);
Features
- Strongly-typed
EvaluateAsync<TInput, TDecision>plus aJsonElementoverload for dynamic schemas - Resume waiting runs (
ResumeAsync) - Inspect runs (
ListRunsAsync,GetRunAsync,GetRunStatsAsync) — same data backing the FetchCatch console dashboard - Structured exception hierarchy:
FetchCatchAuthException,FetchCatchNotFoundException,FetchCatchValidationException,FetchCatchRateLimitedException(withRetryAfter) - Built-in exponential backoff for transient 5xx / network errors (toggleable)
- OpenTelemetry tracing via
ActivitySource("FetchCatch.Client")— every call opens a span - AOT- and trim-friendly on
net8.0+ (<IsAotCompatible>true</IsAotCompatible>) - Multi-targets
net8.0·net10.0·netstandard2.0(works with .NET Framework 4.7.2+)
Configuration
| Option | Default | Notes |
|---|---|---|
BaseUrl |
https://api.fetchcatch.com |
Override for self-hosted / staging |
ApiKey |
(required) | Tenant API key from Console → Settings → API keys |
Timeout |
30s |
Per-request HTTP timeout |
EnableRetries |
true |
Retry transient 5xx and network errors |
MaxRetryAttempts |
3 |
Including the initial attempt |
UserAgentApp |
null |
Appended to User-Agent; helps FetchCatch's support team |
Streaming run history
var filter = new RunFilter
{
Status = RunStatus.Failed,
FromUtc = DateTime.UtcNow.AddHours(-1),
};
await foreach (var run in fc.ListRunsAsync(filter, ct))
{
logger.LogWarning("{Flow} failed: {Error}", run.FlowSlug, run.Error);
}
ListRunsAsync returns IAsyncEnumerable<FlowRunListItem> and auto-pages via the server's cursor — you never see a cursor token in your code.
Stats dashboard
var stats = await fc.GetRunStatsAsync(
fromUtc: DateTime.UtcNow.AddDays(-1),
toUtc: DateTime.UtcNow);
Console.WriteLine($"{stats.Completed}/{stats.Total} succeeded · p95 {stats.P95Ms}ms");
foreach (var top in stats.TopFlows)
Console.WriteLine($" {top.FlowSlug}: {top.Total} runs ({top.Failed} failed)");
ASP.NET Core
Install FetchCatch.AspNetCore and one line of registration gives you IFetchCatchClient via DI with IHttpClientFactory, options validation, and tracing:
builder.Services.AddFetchCatch(builder.Configuration); // binds "FetchCatch" section
Status
0.x. The HTTP API (/v1/...) is stable; SDK surface may evolve before 1.0. Pin a version in production.
License
MIT. © FetchCatch.
| 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 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. |
-
.NETStandard 2.0
- Microsoft.Bcl.AsyncInterfaces (>= 9.0.0)
- System.Diagnostics.DiagnosticSource (>= 9.0.0)
- System.Net.Http.Json (>= 9.0.0)
- System.Text.Json (>= 9.0.0)
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on FetchCatch.Client:
| Package | Downloads |
|---|---|
|
FetchCatch.AspNetCore
ASP.NET Core DI integration for the FetchCatch SDK. AddFetchCatch() wires up IHttpClientFactory, Polly retries, IOptions binding, and OpenTelemetry tracing in one call. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 135 | 5/25/2026 |