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" />
                    
Directory.Packages.props
<PackageReference Include="CoreStone.SDK.Dotnet.Notifications" />
                    
Project file
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
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=CoreStone.SDK.Dotnet.Notifications&version=1.5.0
                    
Install as a Cake Tool

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
}
Product 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.

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.5.0 126 6/22/2026
1.4.0 111 6/18/2026
1.3.0 111 6/18/2026
1.2.0 108 6/18/2026
1.1.0 124 6/18/2026