Orleans.Lattice.Api.TenantAdmin 9.9.0

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

Orleans.Lattice.Api.TenantAdmin

Optional transport-agnostic control facade add-on for Orleans.Lattice multi-tenant clusters. It presents one discoverable, fail-closed control surface for tenant administration over the tenancy add-on's tenant registry, so a host can expose it through a single seam that every transport binding (gRPC, MCP) adapts over.

What it provides

ILatticeTenantAdmin covers the tenant lifecycle and quota authoring:

Operation Description
CreateTenantAsync Registers a new active tenant and seeds the admin subjects that may see it (the calling subject when none are supplied). Fails if the tenant already exists.
SuspendTenantAsync Transitions an existing tenant to the suspended status (idempotent).
ResumeTenantAsync Transitions a suspended tenant back to active (idempotent).
DeleteTenantAsync Removes a tenant, cascading the delete to the tenant's trees.
SetTenantQuotasAsync Authors the tenant's resource quotas (keys, bytes, memory, trees, operations per second, and burst allowance).

ILatticeTenantRegionAdmin administers per-tenant region residency:

Operation Description
AuthorizeAllowedRegionsAsync Sets the regions a tenant is permitted to occupy.
SetResidencyAsync Binds the tenant's data to a subset of its allowed regions.
GetTenantRegionStatusAsync Reports the tenant's allowed, resident, and in-flight region state.

ILatticeTenantSelfService is the read-only surface any caller may invoke, scoped fail-closed to that caller: GetCurrentTenantAsync answers "which tenant am I acting as", ListAccessibleTenantsAsync enumerates only the tenants the caller may see, and GetTenantAsync reports one such tenant's status.

ILatticeTenantScopedTreeAdmin is an optional tenant-local tree-administration surface. It takes an unqualified tree name, composes it into the active tenant's namespace, and exposes tree create, existence check, delete, recover, purge, deletion status, and schema-policy get / set / clear - so a tenant administers its own trees without ever naming another tenant's.

ILatticeTenantAccessAdmin lists, adds, and removes a tenant's tenant-admin subjects (a tenant can never be left without one), ILatticeTenantGrantAdmin administers the two-step cross-tenant grant agreement (the granting tenant offers, the grantee approves or rejects, and either party may revoke), and the read-only ILatticeTenantQuotaUsage reports a tenant's per-dimension consumption against its quota ceilings.

Fail-closed by design

Every tenant-administration operation authorizes the caller before it changes anything (the tenant-tier gate reads only the target tenant's record to decide) - the tenant lifecycle and the allowed-region set as a cluster-wide administrative operation, the tenant-tier operations (residency, admin subjects, cross-tenant grants, usage) for the platform operator or a live admin subject of the tenant - and a subject added through ILatticeTenantAccessAdmin, like every subject a CreateTenantAsync call explicitly seeds, must resolve in the identity directory (only resolution is checked, not the principal's kind) when one is configured and requires validation. An unauthenticated or unauthorized caller is refused without learning whether a tenant exists. The reserved default tenant can never be suspended, deleted, given quotas, have its admin subjects changed, or be named in a cross-tenant grant offer, and a tenant id that shadows a reserved namespace is rejected.

ILatticeTenantScopedTreeAdmin adds no gate of its own and relies on the facades it composes: its tree verbs are authorized by the tree-administration facade, while its schema-policy verbs reach the in-process schema admin, which performs no authorization.

The add-on is opt-in: a cluster that does not register it exposes no tenant administration and behaves exactly as before.

Registration

siloBuilder
    .AddLatticeTenancy(/* ... */)
    .AddLatticeTenantAdminApi();

// Optional: tenant-local tree administration, composing the tree-admin facade.
siloBuilder
    .AddLatticeSchemaEnforcement()
    .AddLatticeSchemaApi()
    .AddLatticeTreeAdminApi()
    .AddLatticeTenantScopedTreeAdminApi();

AddLatticeTenantAdminApi() must be called after AddLatticeTenancy(...): the facade operates on the tenancy engine's tenant registry, so that store must be registered first. Calling it out of order fails fast with an actionable message. AddLatticeTenantScopedTreeAdminApi() is an independent opt-in - add it only if you want tenants to administer their own trees. It must be called after AddLatticeTreeAdminApi() and AddLatticeSchemaEnforcement(...), whose surfaces it composes, and likewise fails fast when called out of order.

This package adds no transport behaviour of its own. Add the gRPC or MCP binding package to expose the facade over the wire.

See the tenant-administration documentation for the full guide.

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

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
9.9.0 45 10/2/2026
9.8.0 87 9/26/2026
9.7.0 92 9/21/2026
9.6.1 106 9/9/2026
9.6.0 103 9/5/2026
9.5.0 109 9/2/2026
9.4.1 104 8/31/2026
9.4.0 114 8/29/2026