IBeam.Licensing.Api
2.4.0
dotnet add package IBeam.Licensing.Api --version 2.4.0
NuGet\Install-Package IBeam.Licensing.Api -Version 2.4.0
<PackageReference Include="IBeam.Licensing.Api" Version="2.4.0" />
<PackageVersion Include="IBeam.Licensing.Api" Version="2.4.0" />
<PackageReference Include="IBeam.Licensing.Api" />
paket add IBeam.Licensing.Api --version 2.4.0
#r "nuget: IBeam.Licensing.Api, 2.4.0"
#:package IBeam.Licensing.Api@2.4.0
#addin nuget:?package=IBeam.Licensing.Api&version=2.4.0
#tool nuget:?package=IBeam.Licensing.Api&version=2.4.0
IBeam.Licensing.Api
ASP.NET Core endpoint wiring for IBeam tenant application licensing.
Install:
dotnet add package IBeam.Licensing.Api
Register services:
builder.Services.AddIBeamLicensingApi(builder.Configuration);
Map endpoints:
app.MapIBeamLicensing();
The endpoint group requires authorization by default.
Complete minimal setup:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication();
builder.Services.AddAuthorization();
builder.Services.AddIBeamLicensingApi(builder.Configuration);
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapIBeamLicensing();
app.Run();
Default endpoints:
GET /api/license-plans
GET /api/tenants/{tenantId}/licenses
POST /api/tenants/{tenantId}/licenses
PUT /api/tenants/{tenantId}/licenses/{licenseId}
POST /api/tenants/{tenantId}/licenses/{licenseId}/revoke
GET /api/tenants/{tenantId}/licenses/{licenseId}/assignments
POST /api/tenants/{tenantId}/licenses/{licenseId}/assignments
DELETE /api/tenants/{tenantId}/licenses/{licenseId}/assignments/{assignmentId}
GET /api/tenants/{tenantId}/license-entitlements
POST /api/tenants/{tenantId}/license-entitlements/check
Use a custom route prefix or authorization policy when mapping:
app.MapIBeamLicensing("/api", "TenantAdmin");
Example plan configuration:
{
"IBeam": {
"Licensing": {
"Plans": [
{
"Key": "hubbsly-work",
"DisplayName": "Hubbsly Work",
"Entitlements": [ "feature:work", "work:cards:create", "mcp:tools" ],
"Limits": {
"Seats": 4,
"McpCallsPerMonth": 10000
}
}
]
}
}
}
Example API flow:
GET /api/license-plans
POST /api/tenants/225925cc-995e-4584-a63b-4f2cb4f38f6f/licenses
Content-Type: application/json
{
"planKey": "hubbsly-work",
"providerName": "stripe",
"providerCustomerId": "cus_123",
"providerSubscriptionId": "sub_123"
}
POST /api/tenants/225925cc-995e-4584-a63b-4f2cb4f38f6f/licenses/{licenseId}/assignments
Content-Type: application/json
{
"subject": {
"subjectType": "agent",
"subjectId": "codex",
"displayName": "Codex"
}
}
POST /api/tenants/225925cc-995e-4584-a63b-4f2cb4f38f6f/license-entitlements/check
Content-Type: application/json
{
"subject": {
"subjectType": "agent",
"subjectId": "codex"
},
"entitlement": "work:cards:create"
}
Licensing endpoints do not replace Identity authorization. Host APIs should still authenticate the user, API credential, or agent and check tenant roles/API scopes before granting or consuming licensed capabilities.
| Product | Versions 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. |
-
net10.0
- IBeam.Licensing.Services (>= 2.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.