JJConsulting.Infinity.Client.Webhooks
1.4.38
dotnet add package JJConsulting.Infinity.Client.Webhooks --version 1.4.38
NuGet\Install-Package JJConsulting.Infinity.Client.Webhooks -Version 1.4.38
<PackageReference Include="JJConsulting.Infinity.Client.Webhooks" Version="1.4.38" />
<PackageVersion Include="JJConsulting.Infinity.Client.Webhooks" Version="1.4.38" />
<PackageReference Include="JJConsulting.Infinity.Client.Webhooks" />
paket add JJConsulting.Infinity.Client.Webhooks --version 1.4.38
#r "nuget: JJConsulting.Infinity.Client.Webhooks, 1.4.38"
#:package JJConsulting.Infinity.Client.Webhooks@1.4.38
#addin nuget:?package=JJConsulting.Infinity.Client.Webhooks&version=1.4.38
#tool nuget:?package=JJConsulting.Infinity.Client.Webhooks&version=1.4.38
JJConsulting.Infinity.Client.Webhooks
Client library for handling JJInfinity Webhooks in ASP.NET Core applications, providing typed access to audit log events with signature validation and a pluggable processing model.
Installation
Install via NuGet:
dotnet add package JJConsulting.Infinity.Client.Webhooks
Usage
1. Implement a webhook processor
Create a class inheriting from InfinityWebhookProcessor and override the handlers you care about.
using JJConsulting.Infinity.Client.Webhooks;
public sealed class MyInfinityWebhookProcessor : InfinityWebhookProcessor
{
protected override ValueTask ProcessUserAlreadyExistsAsync(Guid userId)
{
// Your logic here
return ValueTask.CompletedTask;
}
}
You may override ProcessEventAsync if you want to handle additional event types beyond the built-in routing.
2. Register the processor
Register your processor in the DI container.
builder.Services.AddInfinityWebhookProcessor<MyInfinityWebhookProcessor>();
3. Map the webhook endpoint
Expose the webhook endpoint in your Program.cs or endpoint configuration.
app.MapInfinityWebhooks();
The endpoint:
- By default, is registered at
api/webhooks/infinity - Enforces
application/json - Validates the request signature (if a secret is provided)
- Deserializes the payload into
AuditLogEvent - Dispatches processing to your processor
4. Event routing
Events are routed based on the eventType value found in AuditLogEvent.Properties.
Example payload fragment:
{
"properties": {
"eventType": "UserAlreadyExists"
}
}
If the event type is missing or unrecognized, the request is safely ignored.
5. Error handling
- Signature or content-type failures are logged and ignored
- Exceptions thrown during processing are logged and rethrown
- The library does not swallow application-level failures
Supported events
Currently, the following events are supported:
Users:
UserAlreadyExists
Localization:
StringAddedStringModifiedStringRemoved
Additional events can be supported by overriding ProcessEventAsync.
Notes
- The processor is registered as a singleton
- Request bodies are read once and reused for signature verification
- No response body is returned by default (webhook acknowledgment only)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- JJConsulting.Infinity.Client (>= 1.4.38)
- JJConsulting.Infinity.Domain (>= 1.4.38)
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 |
|---|---|---|
| 1.4.38 | 67 | 3/10/2026 |
| 1.4.37 | 62 | 3/10/2026 |
| 1.4.36 | 60 | 3/10/2026 |
| 1.4.35 | 72 | 3/6/2026 |
| 1.4.34 | 73 | 3/6/2026 |
| 1.4.33 | 66 | 3/6/2026 |
| 1.4.32 | 58 | 3/6/2026 |
| 1.4.31 | 72 | 3/6/2026 |
| 1.4.30 | 77 | 3/5/2026 |
| 1.4.29 | 65 | 3/5/2026 |
| 1.4.28 | 73 | 3/5/2026 |
| 1.4.27 | 86 | 3/3/2026 |
| 1.4.26 | 83 | 3/2/2026 |
| 1.4.25 | 119 | 2/9/2026 |
| 1.4.24 | 88 | 2/9/2026 |
| 1.4.23 | 95 | 2/2/2026 |
| 1.4.22 | 96 | 1/30/2026 |
| 1.4.20 | 110 | 1/29/2026 |
| 1.4.19 | 98 | 1/28/2026 |
| 1.4.18 | 95 | 1/28/2026 |