Honua.Sdk.Processes 1.13.1

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

Honua.Sdk.Processes

Browser-safe OGC API Processes REST client and shared job models for Honua Console hosts.

Install

Install directly when a browser or server-side host only needs process/job REST.

Stable releases are on nuget.org and install anonymously. An unversioned add resolves to the newest stable release (the current SDK version is in the repo README). Prereleases stay on the authenticated GitHub Packages feed; see INSTALL.md.

dotnet add package Honua.Sdk.Processes
using Honua.Sdk.Processes.Extensions;

builder.Services.AddHonuaProcesses(o =>
{
    o.BaseAddress = new Uri("https://your-honua-server");
    o.BearerTokenProvider = tokenProvider.GetAccessTokenAsync;
});

Use IHonuaProcessesClient in Blazor Web hosts for process discovery, async job submission, polling, dismissal, and result retrieval. Native hosts that need gRPC job lifecycle access can also use the same model package through Honua.Sdk.Grpc's process client.

REST surface

The client targets the OGC API Processes surface under /ogc/processes.

SDK method HTTP contract
GetLandingPageAsync GET /ogc/processes?f=json
GetConformanceAsync GET /ogc/processes/conformance?f=json
ListProcessesAsync GET /ogc/processes/processes
GetProcessAsync GET /ogc/processes/processes/{processId}
ExecuteSyncAsync Describe, execute once, and wait for results within one elapsed timeout; omit Prefer for advertised sync, otherwise respond-async
WaitForTerminalAsync Poll GET /ogc/processes/jobs/{jobId} within one elapsed timeout; return only on success
SubmitJobAsync POST /ogc/processes/processes/{processId}/execution with Prefer: respond-async
ListJobsAsync GET /ogc/processes/jobs with optional limit
GetJobAsync GET /ogc/processes/jobs/{jobId}
DismissJobAsync DELETE /ogc/processes/jobs/{jobId}
GetJobResultsAsync GET /ogc/processes/jobs/{jobId}/results

HonuaProcessJobStatus maps OGC wire fields such as processID, jobID, status, and progress to typed SDK properties. Document-mode results are returned as HonuaProcessResults.Outputs, a JSON extension-data dictionary keyed by output identifier. Use HonuaProcessExecuteInputs.FromPlan(...) for the canonical honua-geoprocessing inputs.plan contract. Use the dictionary SubmitJobAsync overload for advertised concrete processes such as geometry.buffer; those values serialize directly under inputs with no plan property.

The examples below use the current Honua Server canonical process id, honua-geoprocessing. The client accepts any process id advertised by the server's process list.

using System.Text.Json;
using Honua.Sdk.Processes.Models;

var job = await processes.SubmitJobAsync(
    "honua-geoprocessing",
    new HonuaProcessExecuteRequest
    {
        Inputs = HonuaProcessExecuteInputs.FromPlan(
            new HonuaAnalysisPlan
            {
                PlanId = "plan-1",
                WorkflowFamily = "analyze",
                Outputs = ["featureLayer"],
                Steps =
                [
                    new HonuaPlanStep
                    {
                        StepId = "buffer",
                        Kind = "geoprocess",
                        ProcessId = "geometry.buffer",
                        Inputs = new Dictionary<string, string>
                        {
                            ["wkb"] = "AAAA",
                            ["srid"] = "4326",
                            ["distance"] = "25"
                        }
                    }
                ]
            })
    },
    cancellationToken);

var status = await processes.GetJobAsync(job.JobId, cancellationToken);
var results = await processes.GetJobResultsAsync(job.JobId, cancellationToken);

Concrete processes can also accept their advertised inputs directly, without a plan wrapper:

var bufferJob = await processes.SubmitJobAsync(
    "geometry.buffer",
    new Dictionary<string, JsonElement>
    {
        ["wkb"] = JsonSerializer.SerializeToElement("AAAA"),
        ["srid"] = JsonSerializer.SerializeToElement(4326),
        ["distance"] = JsonSerializer.SerializeToElement(25.5)
    },
    cancellationToken);

Non-success responses throw HonuaProcessesException. When the server returns problem-details JSON, the exception preserves StatusCode, ProblemType, ProblemTitle, ProblemDetail, and the raw ResponseBody.

ExecuteSyncAsync accepts a required timeout and an optional pollingInterval (default one second). It preserves 200 document/raw results and waits for 201/202 job responses without resubmitting. HonuaProcessExecutionResponse.Document holds document outputs; RawContent and MediaType preserve arbitrary raw bytes and multipart framing. Job holds the successful terminal job when one was returned. Failed/dismissed jobs and elapsed timeouts throw HonuaProcessesException, with JobId when observed; caller cancellation remains OperationCanceledException. Timeout/cancellation stops local waiting without dismissing the remote job. Configured request/body timeouts from the registered resilience pipeline also use HonuaProcessesException and retain the observed JobId and original inner exception. The helper submits only when sync-execute or async-execute is advertised; missing, malformed, or unsupported mode metadata fails before submission.

The shipped HonuaProcessesClient implements both helpers. To preserve existing custom IHonuaProcessesClient implementations, the new interface methods have default bodies that throw NotSupportedException unless the client implements them. Existing lifecycle methods retain their contracts.

See the buffer → layer clip example and bounded execution snippet.

Authoring processes and plans

The Honua.Sdk.Processes.Authoring namespace adds a fluent API for authoring Honua geoprocessing processes in C# and unit-testing executor logic locally, without a running server.

using Honua.Sdk.Processes.Authoring;

// Describe a process for the catalog.
var definition = HonuaProcessAuthoring.DefineProcess("geometry.buffer")
    .WithTitle("Buffer")
    .AddInput("wkb", HonuaProcessParameterValueType.Wkb, p => p.Required())
    .AddInput("distance", HonuaProcessParameterValueType.FloatingPoint, p => p.Required())
    .AddOutput("outputFeatureLayer", HonuaProcessArtifactKind.FeatureLayer)
    .Build();

var ogcDescription = definition.ToOgcDescription(); // server process-description shape

// Author a multi-step plan for the canonical honua-geoprocessing process.
var request = HonuaProcessAuthoring.DefinePlan("plan-1")
    .AddGeoprocessStep("buffer", "geometry.buffer", s => s.WithInput("distance", 100))
    .BuildExecuteRequest();

// Unit-test an IHonuaProcessExecutor in-process.
var harness = new HonuaProcessTestHarness(myExecutor, definition);
var run = await harness.RunAsync(new Dictionary<string, string>
{
    ["wkb"] = "AAAA",
    ["distance"] = "100",
});
Assert.True(run.Succeeded);

See docs/process-authoring.md for the full guide, including the ArcObjects/ArcPy GP migration mapping and the federate-bridge approach.

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 Honua.Sdk.Processes:

Package Downloads
Honua.Sdk

Umbrella / meta package for the Honua .NET SDK. Installing this package brings in every other Honua.Sdk.* package and exposes a single AddHonua(o => o.BaseAddress = ...) DI registration that fans out across every enabled sub-package. Use the narrower per-package facades (Honua.Sdk.Grpc, Honua.Sdk.Admin, etc.) directly if you want to depend on less.

Honua.Sdk.Grpc

gRPC client SDK for Honua FeatureService

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.13.1 106 10/26/2026
1.12.0 1,594 10/19/2026
1.11.1 2,136 10/13/2026
1.11.0 1,896 10/12/2026
1.10.4 894 10/7/2026
1.10.3 267 10/5/2026
1.10.2 207 10/4/2026
1.10.1 494 9/29/2026
1.10.0 317 9/25/2026
1.9.0 134 9/25/2026
1.8.0 119 9/16/2026
1.7.0 162 9/15/2026
1.6.4 182 9/12/2026