SSSD.Notification.Client
1.1.0
dotnet add package SSSD.Notification.Client --version 1.1.0
NuGet\Install-Package SSSD.Notification.Client -Version 1.1.0
<PackageReference Include="SSSD.Notification.Client" Version="1.1.0" />
<PackageVersion Include="SSSD.Notification.Client" Version="1.1.0" />
<PackageReference Include="SSSD.Notification.Client" />
paket add SSSD.Notification.Client --version 1.1.0
#r "nuget: SSSD.Notification.Client, 1.1.0"
#:package SSSD.Notification.Client@1.1.0
#addin nuget:?package=SSSD.Notification.Client&version=1.1.0
#tool nuget:?package=SSSD.Notification.Client&version=1.1.0
SSSD.Notification.Client
.NET client library for the SSSD Notification Platform — send push notifications, attach files, and publish documents to users of your internal application.
Internal use only. This package is published to the SSSD private NuGet feed.
Installation
dotnet add package SSSD.Notification.Client
Quick Start
1. Register in Program.cs
Bind from appsettings.json (recommended):
builder.Services.AddSssdNotifications(builder.Configuration);
"NotificationClient": {
"BaseUrl": "https://sssdtech.com/notification",
"ApplicationName": "Payroll System",
"Domain": "https://erp.sssdtech.com"
}
Or configure inline:
builder.Services.AddSssdNotifications(options =>
{
options.BaseUrl = "https://sssdtech.com/notification";
options.ApplicationName = "Payroll System";
options.Domain = "https://erp.sssdtech.com";
});
ApplicationNamemust exactly match the application name registered in the Admin Panel.Domainis the origin of this application (scheme + hostname, no path). The server matches it against the Allowed Domains list configured on the application in the Admin Panel.- No credentials are required — access is controlled entirely by domain allowlisting.
2. Send a Notification
public class SalaryService(INotificationClient notify)
{
public async Task NotifySlipReady(Guid userId, string month)
{
await notify.SendAsync(new NotificationRequest
{
Title = "Salary Slip Ready",
Content = $"Your salary slip for <strong>{month}</strong> is available.",
ContentType = NotificationContentType.Html,
Priority = NotificationPriority.Important,
RecipientUserIds = [userId.ToString()], // UUID, email, or mobile number all accepted
IdempotencyKey = $"salary-slip-{userId}-{month}",
});
}
}
3. Broadcast to All Application Users
await notify.SendAsync(new NotificationRequest
{
Title = "System Maintenance",
Content = "Scheduled downtime tonight at 10 PM.",
SendToAll = true,
});
4. Attach a File to a Notification
var result = await notify.SendAsync(request);
await notify.AttachFileAsync(result.NotificationId, pdfStream, "slip.pdf", "application/pdf");
5. Publish a File
await notify.PublishFileAsync(stream, "policy-2025.pdf", "application/pdf",
description: "HR Policy Handbook 2025");
// Or from a local path
await notify.PublishFileAsync(@"C:\Reports\report.xlsx",
description: "Monthly Sales Report");
Priority Levels
| Value | Behaviour |
|---|---|
Normal |
Standard delivery |
Important |
Orange badge in app, elevated FCM priority |
Critical |
Red badge in app, highest FCM priority |
Content Types
| Value | Use when |
|---|---|
PlainText |
Simple text |
Html |
Rich content — bold, tables, links (sanitised server-side) |
RichText |
Markdown-style text |
Idempotency
Pass an IdempotencyKey to prevent duplicates on retry:
IdempotencyKey = $"leave-approved-{requestId}"
If the same key is sent twice, the second call returns the original result with IsIdempotent = true.
© 2025 SSSD Tech Solutions Pvt Ltd — Internal use only.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 was computed. 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. |
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Http.Resilience (>= 8.10.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
- Microsoft.Extensions.Options (>= 8.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.