CoreStone.SDK.Dotnet.Notifications
1.5.0
dotnet add package CoreStone.SDK.Dotnet.Notifications --version 1.5.0
NuGet\Install-Package CoreStone.SDK.Dotnet.Notifications -Version 1.5.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CoreStone.SDK.Dotnet.Notifications" Version="1.5.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CoreStone.SDK.Dotnet.Notifications" Version="1.5.0" />
<PackageReference Include="CoreStone.SDK.Dotnet.Notifications" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CoreStone.SDK.Dotnet.Notifications --version 1.5.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: CoreStone.SDK.Dotnet.Notifications, 1.5.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CoreStone.SDK.Dotnet.Notifications@1.5.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CoreStone.SDK.Dotnet.Notifications&version=1.5.0
#tool nuget:?package=CoreStone.SDK.Dotnet.Notifications&version=1.5.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
CoreStone.SDK.Dotnet.Notifications
In-app notification inbox for the CoreStone .NET SDK.
Installation
dotnet add package CoreStone.SDK.Dotnet.Notifications
Setup
builder.Services
.AddCoreStoneConfiguration(o =>
{
o.BaseUrl = "https://api.yourapp.com";
o.ProjectKey = "your-project-slug";
})
.AddCoreStoneAuth()
.AddCoreStoneNotifications(); // ← add this
Usage
public class NotificationsController : ControllerBase
{
private readonly INotificationInboxClient _inbox;
public NotificationsController(INotificationInboxClient inbox)
=> _inbox = inbox;
// List all notifications (paginated)
[HttpGet]
public async Task<IActionResult> List([FromQuery] int page = 1, [FromQuery] bool? unreadOnly = null)
{
var result = await _inbox.ListAsync(new ListNotificationsRequest
{
Page = page,
PageSize = 20,
UnreadOnly = unreadOnly,
});
return Ok(result);
}
// Get unread badge count
[HttpGet("unread-count")]
public async Task<IActionResult> UnreadCount()
{
var count = await _inbox.GetUnreadCountAsync();
return Ok(new { count });
}
// Get a single notification (marks it readable on client side)
[HttpGet("{id:guid}")]
public async Task<IActionResult> GetById(Guid id)
{
var n = await _inbox.GetByIdAsync(id);
return Ok(n);
}
// Mark one notification as read
[HttpPatch("{id:guid}/read")]
public async Task<IActionResult> MarkRead(Guid id)
{
var n = await _inbox.MarkReadAsync(id);
return Ok(n);
}
// Mark one notification as unread
[HttpPatch("{id:guid}/unread")]
public async Task<IActionResult> MarkUnread(Guid id)
{
var n = await _inbox.MarkUnreadAsync(id);
return Ok(n);
}
// Mark all notifications as read
[HttpPatch("read-all")]
public async Task<IActionResult> MarkAllRead()
{
var count = await _inbox.MarkAllReadAsync();
return Ok(new { markedCount = count });
}
}
Models
NotificationListItem
| Property | Type | Description |
|---|---|---|
Id |
Guid |
Notification ID |
UserId |
Guid |
Recipient user ID |
Title |
string |
Notification title |
Body |
string |
Notification body text |
IsRead |
bool |
Whether the user has read it |
ReadAt |
DateTimeOffset? |
When it was read |
CreatedAt |
DateTimeOffset |
Creation timestamp |
NotificationDetail
Includes all NotificationListItem fields plus:
| Property | Type | Description |
|---|---|---|
ProjectId |
Guid |
Project this notification belongs to |
ImageUrl |
string? |
Optional image to display |
ActionUrl |
string? |
Deep-link or URL to open on tap |
MetadataJson |
string |
Raw JSON metadata (parse as needed) |
Error Handling
All methods throw CoreStoneException on API errors:
try
{
var count = await _inbox.GetUnreadCountAsync();
}
catch (CoreStoneException ex) when (ex.Code == "UNAUTHORIZED")
{
// User is not authenticated
}
Links
| 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 is compatible. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- CoreStone.SDK.Dotnet.Auth (>= 1.5.0)
- CoreStone.SDK.Dotnet.Configuration (>= 1.5.0)
-
net9.0
- CoreStone.SDK.Dotnet.Auth (>= 1.5.0)
- CoreStone.SDK.Dotnet.Configuration (>= 1.5.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.