Wayfinder.Engine.Worklist 0.3.3

dotnet add package Wayfinder.Engine.Worklist --version 0.3.3
                    
NuGet\Install-Package Wayfinder.Engine.Worklist -Version 0.3.3
                    
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="Wayfinder.Engine.Worklist" Version="0.3.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Wayfinder.Engine.Worklist" Version="0.3.3" />
                    
Directory.Packages.props
<PackageReference Include="Wayfinder.Engine.Worklist" />
                    
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 Wayfinder.Engine.Worklist --version 0.3.3
                    
#r "nuget: Wayfinder.Engine.Worklist, 0.3.3"
                    
#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 Wayfinder.Engine.Worklist@0.3.3
                    
#: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=Wayfinder.Engine.Worklist&version=0.3.3
                    
Install as a Cake Addin
#tool nuget:?package=Wayfinder.Engine.Worklist&version=0.3.3
                    
Install as a Cake Tool

Wayfinder.Engine.Worklist

A default, optional caseworker worklist surface, server-rendered GOV.UK markup for the filter/sort/search/paginated queue list (see docs/guides/queue-worklist-filtering.md), an item review page, advance, and per-cursor pickup/putback (see docs/guides/work-allocation.md). A host wires it up once with AddWorklist()/MapWorklist(prefix) — or, for a host whose own routing model doesn't fit a mounted route group (an Umbraco Block Grid component, say), calls WorklistRenderer's rendering functions directly and supplies its own routes.

Usage

builder.Services.AddWorklist(options =>
{
    options.ResolveTenantId = _ => "my-tenant";
    options.ResolveAccessProfile = ctx => MyActors.ProfileForCaseworkerUser(GetUserId(ctx.User));
    options.RenderPage = (title, body, ctx) => PageShell.Render(title, body, ctx.User);
    options.WorklistPageTitle = "Caseworker queue";
    options.ReviewPageTitle = "Review application";
});

// ...

app.MapWorklist(prefix: "/caseworker/queue")
   .RequireAuthorization("Caseworker")
   .ValidateWayfinderAntiforgery();   // if these routes are cookie-authenticated — see below

If a host authenticates this surface with an ambient browser cookie, chain .ValidateWayfinderAntiforgery() (from Wayfinder.Engine.Http) onto the group and register builder.Services.AddAntiforgery() + app.UseAntiforgery(). The pickup/putback/advance forms this package renders then carry a hidden __RequestVerificationToken automatically. See Wayfinder.Engine.Http's README § CSRF. A bearer-token host needs none of this.

MapWorklist maps five routes under prefix, all genuinely relative to it, every link, form action, and redirect inside the package is built from the prefix a host passes in, never hardcoded, so a host can mount this at any path it likes:

  • GET {prefix}, the list: status/sort/search filters, a paginated table, and a Pick up/Put back control per row.
  • GET {prefix}/{blueprintKey}/{instanceId}, the item review page.
  • POST {prefix}/{blueprintKey}/{instanceId}/advance
  • POST {prefix}/{blueprintKey}/{instanceId}/pickup?cursorId=...
  • POST {prefix}/{blueprintKey}/{instanceId}/putback?cursorId=...

Using WorklistRenderer directly

A host whose own routing model doesn't fit MapWorklist's mounted route group — Umbraco's Block Grid, for instance, where a "worklist" is one component embedded in an editor-composed page rather than a standalone route tree — calls the same rendering functions MapWorklist itself uses, supplying its own URLs and antiforgery token instead of a prefix:

var (statuses, selectedStatuses, sort, pageIndex, size) = WorklistRenderer.ParseWorklistQuery(
    status: Request.Query["status"], sort: Request.Query["sort"], page: ..., pageSize: ...,
    statusFilterApplied: Request.Query["statusFilterApplied"], defaultPageSize: 20);

var envelope = processManager.GetQueueWorkItems(tenantId, userId, accessProfile, statuses, sort, q, pageIndex, size);

var body = WorklistRenderer.RenderWorklistBody(
    listUrl: myListUrl, itemUrlPrefix: myItemUrlPrefix, pageTitle: null, // null: the host's own page already has a heading
    envelope, selectedStatuses, sort, q, pageIndex, size,
    antiforgeryToken: myAntiforgery.GetAndStoreTokens(HttpContext).RequestToken);

itemUrlPrefix still has to resolve {itemUrlPrefix}/{blueprintKey}/{instanceId}/pickup?cursorId=... / .../putback?... to a real pickup/putback endpoint of the host's own, reading the returnTo hidden field RenderPickupPutbackControl posts alongside cursorId — see Wayfinder.Umbraco's own worklist Block Grid component for a real, non-MapWorklist consumer.

What's deliberately left out

File-download and bulk-dataset REST routes stay hand-wired on the host, this package only builds URLs pointing at them (via Wayfinder.Rendering.GovUk's WithFileDownloadUrls/ WithBulkDatasetApiUrls), assuming a host maps its own such routes under the same prefix. This package owns zero page chrome: RenderPage is the escape hatch every response is wrapped through.

Why a separate package

Sits above both Wayfinder.Rendering.GovUk (GovUkStageJourney's journey rendering and posted-form coercion) and Wayfinder.Engine.Http (StageFileUploads), this package's own job is purely wiring those together into real ASP.NET Core routes against IProcessManager, the same Add.../Map... shape Wayfinder.Engine.Api and Wayfinder.Engine.Mcp already use.

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 (1)

Showing the top 1 NuGet packages that depend on Wayfinder.Engine.Worklist:

Package Downloads
Wayfinder.Umbraco

Umbraco-hosted implementation of Wayfinder service design: a DB-backed, uSync-portable service blueprint store, a backoffice authoring API, and two Block Grid-composable building blocks (a citizen-facing stage journey and a caseworker-facing worklist) for any Umbraco v17+ site. An authoritative in-process engine, real multi-queue support, no multi-tenancy or auth opinions of its own; a host wires its own identity/tenant resolution on top.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.3 1,618 9/11/2026
0.3.2 118 9/11/2026
0.3.1 111 9/11/2026
0.3.0 85 9/11/2026
0.2.0 99 9/7/2026
0.1.0 108 8/19/2026