Host Control REST Routes
This page is the table-oriented route catalog for the Host Control REST API. For usage guidance, start with Host Control REST API Guide.
The table lists canonical /api/v1 routes, governed by API security and API
keys, not Console session cookies. Unprefixed routes return HTTP 404.
Browser Console management uses /console/api/v1 on the actual Console origin
and its independent login/session policy. Console HTTP defaults to 18080,
enabled native HTTPS to 18443, and the canonical API to 8001. Explicit
overrides are preserved; explicit control.ui_port: 0 shares the API listener.
See Web and API Security.
Health And Readiness
| Method | Stable path | Role | Purpose |
|---|---|---|---|
GET |
/api/v1/health |
public or authenticated by policy | Lightweight process health and shared-memory manager connectivity |
GET |
/api/v1/ready |
public or authenticated by policy | Runtime readiness with HTTP 200 when accepted and 503 when not ready |
These health routes may be unauthenticated when
security.health.unauthenticated=true. Network admission still applies.
Security
| Method | Path | Role | Purpose | Request body |
|---|---|---|---|---|
POST |
/console/api/v1/auth/login |
public through Console admission policy | Create a Web Console session on the Console origin | admin password login payload |
GET |
/console/api/v1/auth/session |
viewer | Read current Console browser/session identity | none |
POST |
/console/api/v1/auth/logout |
viewer | Clear Console browser/session identity | none |
GET |
/api/v1/control/security |
admin | Read security configuration and API key metadata | none |
POST |
/api/v1/control/security/admin-password |
admin | Change the managed admin password | current/new password payload |
POST |
/api/v1/control/security/api-keys |
admin | Create an API key | key name and role payload |
DELETE |
/api/v1/control/security/api-keys/{key_name} |
admin | Revoke an API key | none |
API key secret values are returned once at creation time and hidden afterwards.
Console clients replace /api/v1 with /console/api/v1 for the listed
management routes, including security settings. Those settings additionally
require the exact permitted Console origin/listener; an API key on a product
listener does not bypass that restriction. Package frontend assets/context and
product proxies remain under /api/v1/packages/... with product authentication.
Runtime Status And Bindings
| Method | Stable path | Role | Purpose | Request body |
|---|---|---|---|---|
GET |
/api/v1/control/status |
viewer | Full host runtime snapshot, including live lease-to-package instance ownership | none |
GET |
/api/v1/control/capabilities |
viewer | Product/API capability snapshot including frontend mode and security policy | none |
GET |
/api/v1/control/specs |
viewer | Installed spec dictionary used by the Web Console | none |
GET |
/api/v1/control/frames |
viewer | Resolved frame graph, spatial ports, transforms, and diagnostics | none |
GET |
/api/v1/control/frames/lookup |
viewer | Compose the current transform between source and target query frames |
none |
GET |
/api/v1/control/federation/hello |
viewer | Federation bootstrap/status payload for peer discovery | none |
GET |
/api/v1/control/federation/peers |
authenticated admin; disabled auth refused | Read desired/applied peer policy and pending retirement | none |
PUT |
/api/v1/control/federation/peers |
authenticated admin; disabled auth refused | Replace full admitted peer set without restarting Control | version, scope, expected_revision, revision, peers |
GET |
/api/v1/control/federation/security |
authenticated admin; disabled auth refused | Read active/accepted federation key ids and the last reload | none |
POST |
/api/v1/control/federation/security/reload |
authenticated admin; disabled auth refused | Re-read the protected federation key or keyring without restarting Control | none |
GET |
/api/v1/control/bindings |
viewer | Runtime binding override and effective binding inventory | optional query by subsystem |
POST |
/api/v1/control/bindings |
operator | Set a runtime binding override | source and target binding references |
DELETE |
/api/v1/control/bindings/{source} |
operator | Remove one runtime binding override | none |
GET |
/api/v1/publishers |
viewer | Event publisher/subscriber inventory and shared-memory state | none |
GET |
/api/v1/shm_manager |
viewer | Diagnostic/support shared-memory manager connectivity snapshot; not a stable application payload contract | none |
The source path segment for binding deletion is a binding reference such as
component.gripper.digital_io.
Setting a binding for a source subsystem that is not registered is refused; the
response carries binding.state: "source_missing" so deployment tools can retry
after the source registers. The GET inventory reports each binding row's
origin and lists launch binding intents with a result per requirement.
/api/v1/shm_manager is retained for diagnostics and support. Its current
implementation-level fields do not define a public shared-memory allocation,
layout, or native transport API. The security table's Console auth routes are
the intentional exception to the canonical prefix; cookies from those routes
never authorize canonical API requests.
Subsystem Runtime Control
| Method | Stable path | Role | Purpose | Request body |
|---|---|---|---|---|
POST |
/api/v1/control/subsystems/{subsystem}/lifecycle |
operator | Request a subsystem lifecycle transition | transition, optional reason, optional session_id |
POST |
/api/v1/control/subsystems/{subsystem}/process |
operator | Terminate or kill a managed subsystem process | action, optional session_id |
Lifecycle transitions are start, pause, resume, stop, reset, fault,
and degrade. Process actions are terminate and kill.
Configuration And Runtime Apply
| Method | Stable path | Role | Purpose | Request body |
|---|---|---|---|---|
GET |
/api/v1/control/config |
admin | Read effective, base, and override runtime config | none |
POST |
/api/v1/control/config |
admin | Save raw YAML override | raw YAML override payload |
POST |
/api/v1/control/config/fields |
admin | Save structured config field updates | dotted-key field update payload |
POST |
/api/v1/control/config/validate |
admin | Validate raw YAML override without applying it | raw YAML override payload |
POST |
/api/v1/control/runtime/apply |
admin | Apply managed runtime changes | none or apply options |
POST |
/api/v1/control/restart |
admin | Request control-service restart when available | none |
Prefer /api/v1/control/config/fields for ordinary UI or automation changes.
Local Web Terminal
Web Terminal supports local OS login only. Its status reports the fixed
local_login mode; no SSH destination or key is configured. The former SSH
target probe route has been removed.
| Method | Stable path | Role | Purpose | Request body |
|---|---|---|---|---|
GET |
/api/v1/control/terminal |
Terminal policy | Read local Terminal enabled/readiness state and session limits independently of Console login | none |
POST |
/api/v1/control/terminal/apply |
admin | Apply already-saved Terminal policy without restarting Control; does not save drafts | none |
GET |
/api/v1/ws/terminal |
Terminal policy | WebSocket for local OS login and terminal I/O | terminal protocol messages |
Managed Packages
| Method | Stable path | Role | Purpose | Request body |
|---|---|---|---|---|
GET |
/api/v1/control/packages |
viewer | List installed managed packages and active runtime instances | none |
POST |
/api/v1/control/packages/install |
admin | Install a package archive | filename, content_base64, replace |
DELETE |
/api/v1/control/packages/{package_id} |
admin | Uninstall a managed package | optional force query |
POST |
/api/v1/control/packages/{package_id}/start |
operator | Start one package runtime instance through the launcher | optional instance_id, params, runtime_dir, bindings, resources; other fields are rejected |
POST |
/api/v1/control/packages/{package_id}/stop |
operator | Stop one package runtime instance | optional instance_id; other fields are rejected |
POST |
/api/v1/control/packages/{package_id}/restart |
operator | Restart one package runtime instance | same fields as start |
GET |
/api/v1/control/packages/{package_id}/instances/{instance_id}/context |
viewer | Return frontend runtime context for one package instance | none |
Installation registers one package record by package name. Starting with a new
instance_id creates another managed runtime instance, subject to
resource-policy conflicts. Stopped, terminated, and killed instances are removed
from the active instance registry rather than retained as package history.
Package Frontend Assets And Proxies
| Method | Stable path | Role | Purpose |
|---|---|---|---|
GET |
/api/v1/packages/{package_id}/ui |
viewer | Serve a managed package frontend entrypoint |
GET |
/api/v1/packages/{package_id}/ui/ |
viewer | Serve a managed package frontend entrypoint |
GET |
/api/v1/packages/{package_id}/ui/{path} |
viewer | Serve static package frontend assets with SPA fallback |
GET |
/api/v1/packages/{package_id}/instances/{instance_id}/context |
viewer | Return frontend runtime context for one package instance |
ANY |
/api/v1/packages/{package_id}/instances/{instance_id}/api |
viewer or operator by package policy | Proxy same-origin REST calls to package instance GUI endpoint |
ANY |
/api/v1/packages/{package_id}/instances/{instance_id}/api/ |
viewer or operator by package policy | Proxy same-origin REST calls to package instance GUI endpoint |
ANY |
/api/v1/packages/{package_id}/instances/{instance_id}/api/{path} |
viewer or operator by package policy | Proxy same-origin REST calls to package instance GUI endpoint |
GET |
/api/v1/packages/{package_id}/instances/{instance_id}/ws |
viewer or operator by package policy | Proxy same-origin WebSocket calls to package instance GUI endpoint |
GET |
/api/v1/packages/{package_id}/instances/{instance_id}/ws/ |
viewer or operator by package policy | Proxy same-origin WebSocket calls to package instance GUI endpoint |
GET |
/api/v1/packages/{package_id}/instances/{instance_id}/ws/{path} |
viewer or operator by package policy | Proxy same-origin WebSocket calls to package instance GUI endpoint |
The proxy paths are not native subsystem transport. They are same-origin browser
routes for package-owned frontend backends declared in package.yaml.
WebSocket Upgrade Routes
| Method | Stable path | Role | Purpose |
|---|---|---|---|
GET |
/api/v1/ws/events |
viewer | WebSocket upgrade for Event observation |
GET |
/api/v1/ws/control |
operator | WebSocket upgrade for Procedure and Operation requests |
For message kinds and fields, see Host Control WebSocket Messages.
System Frontend Fallback
| Method | Path | Role | Purpose |
|---|---|---|---|
GET |
/ |
public or viewer by policy | Serve configured system frontend entrypoint |
GET |
/{path} |
public or viewer by policy | Serve configured system frontend assets or SPA fallback |
The system frontend can be the bundled Console, a custom static product frontend, or disabled.