Skip to content

Returns current license status. This endpoint is public to allow the frontend to check license status before authentication

GET
/api/license

Auto-generated from server.go. Handler: s.GetLicenseStatus.

Successful response

Current license status. Returned by GET /api/license. Combines on-disk license bytes (immutable) with runtime state (lease counts, warning flags) that the appliance computes locally.

Public, unauthenticated — frontend reads it before login to decide whether to gate UI features (ipv4/ipv6/automation/llm/strategic).

object
valid
required

Combined “license + support both valid” gate.

boolean
licensed
required

True when a license file is installed (regardless of validity).

boolean
license_id

Issuer-assigned identifier on the license. Omitted when no license is installed.

string
customer_name
string
description
string
tier

License tier marketing name (e.g. Enterprise, Pro). Free-form string; not constrained server-side.

string
ipv4_enabled
required
boolean
ipv6_enabled
required
boolean
max_users

Cap on local user accounts. 0 means unbounded. Omitted when zero (omitempty).

integer
max_active_leases

Cap on active leases. 0 means unbounded. Omitted when zero.

integer
support_expires

ISO-8601 calendar date as a string (YYYY-MM-DD). Plain string, not format:date.

string
active_lease_count

Locally observed unique-MAC count over lease_count_window days.

integer
lease_count_window

Sliding window in days used for active_lease_count.

integer
lease_count_exceeded

True if active_lease_count > max_active_leases. Omitted when false.

boolean
license_expires

ISO-8601 calendar date as a string (YYYY-MM-DD). Plain string, not format:date.

string
support_valid
required
boolean
license_valid
required
boolean
days_remaining

Days until the earlier of license_expires or support_expires. Omitted when zero.

integer
message

Human-readable summary of the combined state.

string
license_type

One of permanent, trial. Free-form today; may tighten to enum.

string
binding_mode

One of any, bound. Free-form today.

string
bound_installation_id

Installation ID this license is bound to. Empty/omitted for unbound licenses.

string
installation_id

Current installation ID (for display). Plain string, not format:uuid — the handler emits whatever the installation manager stores, including the empty string when not yet initialized.

string
warning_days_before
required

How many days before expiry the appliance starts surfacing the warning banner.

integer
automation_enabled
required
boolean
llm_analysis_enabled
required
boolean
strategic_analysis_enabled
required
boolean
trial_expired
required
boolean
support_expired
required
boolean
warning_active
required
boolean
warning_message

Warning message for UI display. Omitted when empty.

string

Internal server error

Standardised error envelope per RFC 7807. Many existing endpoints still return an older shape (e.g. {"error": "..."}). This schema documents the target shape; legacy endpoints will be migrated in Phase 70. Per D-21 the spec describes current behaviour without enforcing the migration here.

object
type

A URI reference that identifies the problem type.

string format: uri-reference
default: about:blank
title

A short human-readable summary of the problem.

string
status

The HTTP status code generated by the origin server.

integer format: int32
>= 100 <= 599
detail

A human-readable explanation specific to this occurrence.

string
instance

A URI reference that identifies the specific occurrence.

string format: uri-reference
error

Legacy error message field. Will be removed once handlers are migrated.

string
details

Legacy per-field error details. Will be removed once handlers are migrated.

object
key
additional properties
string
requestId

The request id middleware-assigned identifier for tracing.

string