The [API] table
Capabilities are controlled by the [API] table in config.toml:
false when omitted. A freshly installed Arupa exposes none of these
endpoints — only session handling (/api/login, /api/logout,
/api/check-auth) and the two Kernel information endpoints
(GET /api/kernel/version, POST /api/kernel/reload) work out of the box,
because those are not capability-gated.
Enabling a capability
There is no HTTP endpoint for turning a capability on or off — doing so would let an already-authenticated caller unlock more of the API than an administrator intended. Enabling a capability means editing the[API]
table in config.toml directly, the same way you would edit any other part
of the configuration.
The change takes effect on the next configuration reload. Send the Kernel
process SIGHUP, or call POST /api/kernel/reload, to pick it up without
a full restart — this endpoint is one of the two that are never
capability-gated, so it always works even while every other capability is
disabled.
How the gate works
Every endpoint described on the pages in this section requires an authenticated request, exactly like any other management endpoint. On top of that, the Kernel checks whether the endpoint’s capability is enabled before the handler runs:- if the capability is disabled, the request never reaches the handler and
the Kernel returns
404 Not Found; - if the capability is enabled, the request proceeds to the normal authentication and handler logic.
401 Unauthorized regardless of
whether the target capability is enabled.
Capability gating is independent from Route.Allow and any other access
policy. A capability being enabled only means its endpoints exist; whether
a particular authenticated user may call them is still decided by
Access control.
Response shape
Every endpoint in this section returns the same envelope used across Arupa’s management API:success/message fields with success: false, an appropriate HTTP status code, and no data.
Requires-restart fields
Several endpoints report arequires_restart boolean in their response.
This appears wherever a setting is read once at Kernel startup — the
listen address, TLS, service temp directory, and log level/format all work
this way. The value tells you whether the value you just wrote differs
from what the running process actually applied, not whether the write
itself succeeded. Each page below documents which of its fields behave
this way.