SyntaxCircus.Cmsify.Client 0.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package SyntaxCircus.Cmsify.Client --version 0.1.2
                    
NuGet\Install-Package SyntaxCircus.Cmsify.Client -Version 0.1.2
                    
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="SyntaxCircus.Cmsify.Client" Version="0.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SyntaxCircus.Cmsify.Client" Version="0.1.2" />
                    
Directory.Packages.props
<PackageReference Include="SyntaxCircus.Cmsify.Client" />
                    
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 SyntaxCircus.Cmsify.Client --version 0.1.2
                    
#r "nuget: SyntaxCircus.Cmsify.Client, 0.1.2"
                    
#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 SyntaxCircus.Cmsify.Client@0.1.2
                    
#: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=SyntaxCircus.Cmsify.Client&version=0.1.2
                    
Install as a Cake Addin
#tool nuget:?package=SyntaxCircus.Cmsify.Client&version=0.1.2
                    
Install as a Cake Tool

SyntaxCircus.Cmsify.Client

Typed .NET client for connecting to and managing Cmsify. The package uses the shared SyntaxCircus.Cmsify.Contracts wire models and supports both direct construction and Microsoft dependency injection.

dotnet add package SyntaxCircus.Cmsify.Client
using Microsoft.Extensions.DependencyInjection;
using SyntaxCircus.Cmsify;

services.AddCmsifyClient(options =>
{
    options.BaseUrl = new Uri("https://cms.example.com");
    options.ApiToken = configuration["Cmsify:ApiToken"];
});

var posts = await cms.Content.ListAsync(
    workspaceId,
    new ContentListQuery(null, null, null, ContentStatus.Published, null, null, null, "featured", null, null, null, null, false, null, "publishedAt", true, 1, 10),
    cancellationToken);

The client also exposes templates, media, picklists, tags, webhooks, audit, users, API clients, settings, packages, authentication, and health services. Requests attach bearer authentication and correlation IDs, map RFC 7807 failures to CmsifyApiException, and preserve ETags for mutation concurrency. Retries apply only to safe read requests; writes are never replayed automatically. Mutating methods also accept an optional trailing ifMatch parameter when callers need to provide an ETag explicitly.

Use Media.DownloadToAsync or Packages.ExportToAsync to stream large files directly to a destination stream. The existing DownloadAsync and ExportAsync methods retain their byte-array convenience behavior.

Use DownloadWithMetadataAsync or Packages.ExportWithMetadataAsync when the response filename and content type are needed alongside the bytes. Media uploads accept an optional IProgress<long> for sent-byte progress. Consumers that need to inspect response headers can set CmsifyClientOptions.ResponseObserver; it runs for each received response before retry, deserialization, or error mapping.

Cached content reads

Caching is opt-in and leaves CmsifyClient.Content unchanged. Register the in-memory cached facade and use a stable, non-secret partition to keep authorization audiences isolated:

services.AddCmsifyContentMemoryCache(options =>
{
    options.CachePartitionProvider = _ => ValueTask.FromResult("public-site");
    options.DefaultAbsoluteExpiration = TimeSpan.FromMinutes(5);
});

Resolve ICachedCmsifyContentClient for cached GetAsync, BySlugAsync, ListAsync, and ListAllAsync calls. Per-call CmsifyContentCacheEntryOptions can override the absolute expiry. Resolve ICmsifyContentCacheInvalidator to remove a key from CmsifyContentCacheKeys or bust all cached content for a workspace. For Redis or another distributed provider, install SyntaxCircus.Cmsify.Client.DistributedCaching, configure the host's IDistributedCache, and register AddCmsifyContentDistributedCache instead of the in-memory backend.

Use CmsifyClientOptions.TokenProvider for rotating or request-time credentials. Keep tokens in server-side secret storage and never send them to browser code.

Treat API tokens as opaque bearer credentials. Newly issued tokens use a cmsify_<identifier>_<secret> shape, but applications must not parse or reconstruct them.

Webhook create and update calls validate destinations before sending: URLs must use HTTPS, omit embedded credentials, and cannot use unsafe literal IP addresses. Hostname DNS checks remain enforced by the server.

The shared SyntaxCircus.Cmsify.Contracts package contains the public request, response, enum, pagination, and dynamic JSON models without the HTTP client implementation.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on SyntaxCircus.Cmsify.Client:

Package Downloads
SyntaxCircus.Cmsify.Client.DistributedCaching

Provider-neutral IDistributedCache add-on for the SyntaxCircus Cmsify .NET client.

SyntaxCircus.Cmsify.Components

Reusable, restylable Blazor components for editing and managing Cmsify content: field editors, a composed content edit form, and a content list view, with optional SDK-backed smart wrappers.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 66 9/7/2026
0.3.2 96 9/6/2026
0.3.1 63 9/6/2026
0.3.0 64 9/5/2026
0.2.4 61 9/4/2026
0.2.1 64 9/2/2026
0.2.0 65 9/1/2026
0.1.3 127 8/22/2026
0.1.2 116 8/21/2026
0.1.1 112 8/21/2026
0.1.0 116 8/21/2026