What is gated
OIDC sign-in and SCIM provisioning are not gated. A license may carry other feature names; a name the running version does not gate enables nothing.
A gated action without a license is refused with
403 and the error license_required, through the API and through apply. Nothing else about the deployment changes.
Installing a license
Three sources, in precedence order:
The environment wins over the stored value, so a deployment that sets either variable cannot be overridden from the UI.
PUT /api/license verifies the value before storing it: a value that does not verify is refused with 400 and the previous license stays in effect. A stored license reaches every pod through the settings change notification, so installing or renewing one needs no restart. POST /api/reload verifies it again.
Read the license in effect with GET /api/license. Under RELAY_AUTHZ=rbac it needs read on license, which among the built-in roles only admin grants; under single any authenticated caller may read it. GET /api/version carries the same block for authenticated callers.
Expiry
An expired license keeps working for 30 days. Through that windowgrace reads true and gated features stay on, so a renewal gap does not interrupt a running gateway.
After the grace window the deployment runs as community: gated actions are refused with license_required, and a boot logs that the license is unusable. Custom roles that already exist keep their bindings working and can still be deleted. The deployment keeps booting and serving; a lapsed license never takes a gateway down.