Files
turnstone/sdk/typescript/openapi-console.json
T
Patrick Buckley 9826ea15c5 feat(coordinator): phase 7 — governance + skill metadata + cross-cutt… (#383)
* feat(coordinator): phase 7 — governance + skill metadata + cross-cutting invariants

Combines three stacked sub-PRs into a single coordinator phase-7
shipment against the phase-7 plan doc.  The sub-PR structure (0 / A /
B) preserved on individual branches for reviewer drill-down; this
branch is the one reviewers should merge.

## Sub-PR 0 — service-auth boundary invariants

Shared helpers and contracts that lock the console ↔ node service-auth
boundary so later authz surfaces use them by construction.

- ``_effective_user_filter(request)`` in both ``turnstone.console.server``
  and ``turnstone.server`` with a shared ``DENY_EMPTY_SUB`` sentinel
  on ``turnstone.core.auth``.  Three-way return — admin/service
  bypass, scoped caller uid, or fail-closed sentinel on blank sub.
  Four callsite migrations (``_coordinator_rows``,
  ``coordinator_children``, ``coordinator_metrics``,
  ``cluster_ws_live_bulk``).

- ``StorageBackend`` class docstring codifies the tenancy contract
  (every list/count/aggregate method must accept ``user_id: str |
  None = None`` and push ``WHERE user_id = :user_id`` into SQL) and
  the ``_mapping`` row-access contract.  New
  ``turnstone.testing.row_contract`` ships ``assert_row_like()``.

- ``_verify_collector_service_scope`` probes an upstream node at boot
  with ``expected_node_id=_scope-probe_``; a 409 proves the scope
  gate was passed, a 403/401 sets ``collector_scope_error`` and
  causes ``cluster_snapshot`` / ``cluster_events_sse`` to return 503
  with a remediation hint.  Probe URL allowlist rejects non-http(s)
  schemes and 169.254.0.0/16 hosts.

- 4xx log-level floor on ``_NodeDashboardCache.get``,
  ``_fetch_live_block``, and ``_proxy_sse`` — dotted-hierarchy
  prefixes with bounded body previews.  ``_bounded_body_preview`` and
  ``_bounded_stream_preview`` strip control chars.

## Sub-PR A — coordinator governance core

Mid-session governance surface for coordinator workstreams.

- **Trusted-session mode.**  New ``coordinator.trust.send``
  permission (migration 042).  ``ChatSession.set_trust_send`` /
  ``revoke_tools`` methods with a ``_governance_lock``.  ``POST
  /v1/api/coordinator/{ws_id}/trust {send: bool}`` double-gated on
  ``admin.coordinator`` AND ``coordinator.trust.send`` with
  ``allow_service_bypass=False`` so service tokens can't escalate.
  ``_prepare_send_to_workstream`` auto-approves sends whose target is
  in the coordinator's own subtree; foreign ws_ids still require
  approval.  ``_is_own_subtree`` checks both ``parent_ws_id`` AND
  ``user_id`` to defend against cross-tenant row corruption.

- **Audit-layer credential redaction.**  ``record_audit`` walks
  ``detail`` (dicts, lists, tuples, sets, frozensets; keys too)
  and routes every string through ``redact_credentials`` + a C0
  control-char scrub.  New kw-only ``raw_detail=True`` opt-out.
  ``_has_any_string`` fast-path.  Audit action registry extended
  with the four new governance sub-prefixes.

- **Mid-session revocation + cascading stop.**  ``POST
  /v1/api/coordinator/{ws_id}/restrict {revoke: [...]}`` caps 256
  entries / 128 chars; ``_prepare_tool`` short-circuits with a
  tool-error.  ``POST /v1/api/coordinator/{ws_id}/stop_cascade``
  cancels the coord's in-flight generation then dispatches
  ``cancel_workstream`` for every direct child in parallel via
  ``asyncio.gather`` bounded by ``Semaphore(16)``.  Per-child
  outcomes split into ``cancelled`` / ``failed`` / ``skipped``
  (404 = already-gone rather than dispatch-broken).  Both endpoints
  apply ``allow_service_bypass=False`` on the admin gate.

- **Shared plumbing.**  ``_resolve_coord_session`` helper collapses
  the handler prelude three endpoints shared.  ``_emit_coord_audit``
  wraps ``record_audit`` in a dedicated ``ThreadPoolExecutor``
  (``app.state.audit_executor``) so audit bursts don't starve cancel
  dispatches.  ``_require_json_object`` guards body parsing so non-
  object JSON returns 400 instead of 500.

## Sub-PR B — skill metadata governance

- **Description validator (migration 043).**  ``prompt_templates``
  rows now require a non-empty ``description``.  Existing empty rows
  get backfilled with a ``"Skill: <name>"`` placeholder on upgrade.
  The installer (``admin_skill_discover``) and MCP prompt sync both
  synthesise a placeholder when the upstream description is blank
  so non-admin write paths satisfy the invariant.

- **Skill kind classifier (migration 044).**  New
  ``prompt_templates.kind`` column (``interactive`` / ``coordinator``
  / ``any``; defaults to ``any``).  New
  ``turnstone.core.skill_kind.SkillKind`` StrEnum is the single
  source of truth; Pydantic schemas type ``kind`` as ``SkillKind``
  (OpenAPI advertises the enum) and the handler validator catches
  the ValueError.  ``list_skills_filtered`` gains a
  ``kinds: list[str] | None = None`` SQL filter.
  ``CoordinatorClient.list_skills`` defaults to
  ``kinds=["coordinator", "any"]`` so interactive-only skills are
  hidden from the orchestrator.

- **``scan_status`` → ``risk_level`` rename (migration 045).**
  Lossless column rename to align with ``IntentVerdict.risk_level``
  terminology.  Swept storage (both backends + schema + protocol),
  handlers, API schemas, tool JSON, generated OpenAPI specs,
  TypeScript SDK types, frontend (``governance.js``), tests, and
  English prose in ``docs/judge.md`` + ``docs/tools.md``.  The
  user-facing on-load warning now reads ``has risk level:
  {risk_tier}``.  Tool JSON's ``risk_level`` enum corrected to the
  scanner's actual taxonomy (``safe / low / medium / high /
  critical``; was the never-shipped ``clean / flagged / unscanned /
  pending``).  Historical migration 021 left untouched.

## Migrations

042 (``coordinator.trust.send`` perm — PR A)
043 (description backfill — PR B)
044 (``kind`` column add — PR B)
045 (``scan_status`` → ``risk_level`` rename — PR B)

All four use position-anchored permission strings / host-side
parse-filter-rejoin on downgrade where SQL ``REPLACE`` could
corrupt prefix-overlapping values.

## Verification

- ``ruff check turnstone tests`` clean.
- ``mypy turnstone`` clean on 165 source files.
- ``pytest -m "not live"``: 4431 passed (+85 over the phase-6
  baseline).  Includes +32 tests in ``tests/test_service_auth_boundary.py``
  and +38 in ``tests/test_coordinator_governance.py``; shared fixtures
  extracted to ``tests/_coord_test_helpers.py``.
- Generated OpenAPI JSON (``sdk/typescript/openapi-{console,server}.json``)
  regenerated via ``sdk/typescript/scripts/generate-types.py``; zero
  ``scan_status`` occurrences remaining outside the historical
  migration 021 and the rename migration 045.

## Security reviews

Both reviews flagged by the phase-7 plan (items 1 + 5, plus 0a's
refuse-to-serve gate) ran through the multi-stage ``/review``
pipeline twice per sub-PR; all confirmed findings landed in-branch.

* fixup(phase-7): CI lint + PR #383 review fixups

Addresses the lint CI failure (ruff format) plus 12 findings from the
two automated PR reviewers.

Copilot:
- ``_sqlite.list_installed_skill_urls`` / ``_postgresql.list_installed_skill_urls``
  used positional row indexing (``r[0]``/``r[1]``/``r[2]``) while this
  same PR's ``StorageBackend`` class docstring forbids it.  Switched
  both to ``r._mapping["..."]`` access.
- ``list_skills.json`` previously advertised ``risk_level=""`` as a
  filter for unscanned skills, but the implementation treats empty
  strings as "no filter".  Clarified the tool description to say
  omit the filter entirely to include unscanned rows, and added an
  explicit ``enum`` on the parameter restricting it to the scanner
  tiers.  ``_prepare_list_skills`` keeps the ``strip() or None``
  normalisation — unscanned filtering now has an unambiguous contract.
- ``test_storage_skills_filtered.test_risk_level_filter`` used the
  legacy ``clean`` / ``flagged`` values from the pre-rename column.
  Rewritten with the scanner's actual taxonomy (``safe`` / ``high``).

github-code-quality (CodeQL):
- ``test_deny_sentinel_is_singleton`` previously asserted
  ``cs.DENY_EMPTY_SUB is cs.DENY_EMPTY_SUB`` — an identical-expression
  comparison.  Rewritten as two separate ``from ... import ... as`` aliases
  (``FIRST_READ`` / ``SECOND_READ``) so the identity check is between
  distinct bindings.
- ``test_restrict_empty_revoke_is_noop_but_audits`` unpacked ``state``
  without using it.  Renamed to ``_state``.
- Mixed import styles in ``test_service_auth_boundary.py`` — the
  file previously used both ``import turnstone.console.server as cs``
  and ``from turnstone.console.server import ...`` for the same
  module (same story for ``turnstone.core.auth`` and
  ``turnstone.server``).  Consolidated to the ``from X import Y`` style
  used elsewhere in the file; the ``_fetch_live_block`` test now
  patches via pytest's ``monkeypatch`` fixture instead of a manual
  rebind through a module alias.

CI:
- ``ruff format`` reformatted one line in
  ``tests/test_coordinator_endpoints.py``.

Verification: ruff check + mypy clean (166 files); 4459 non-live
pytest pass.

* fix(tests): swap asyncio marker for anyio in service-auth boundary tests

PR #383 CI caught that the 13 ``@pytest.mark.asyncio`` decorators I
added in ``test_service_auth_boundary.py`` are an off-convention
choice — the rest of the repo uses ``@pytest.mark.anyio`` (148 sites
vs my 13).  The CI environment pulls in ``anyio`` but not
``pytest-asyncio``, so every async test in this one file was failing
with "async def functions are not natively supported".  It passed
locally by accident — my dev venv happens to have pytest-asyncio
installed ambiently.

Swapped all 13 marker sites to ``@pytest.mark.anyio``.  No functional
change; the tests run under the same default asyncio backend anyio
provides.

Verification: ruff + mypy clean (166 files); 4459 non-live pytest
pass.
2026-04-18 10:20:19 -07:00

11232 lines
284 KiB
JSON

{
"openapi": "3.1.0",
"info": {
"title": "turnstone Console API",
"version": "1.5.0a1",
"description": "Cluster-wide visibility and control across all turnstone nodes."
},
"paths": {
"/v1/api/cluster/overview": {
"get": {
"summary": "Cluster state summary",
"operationId": "v1_api_cluster_overview_get",
"tags": [
"Cluster"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ClusterOverviewResponse"
}
}
}
}
}
}
},
"/v1/api/cluster/nodes": {
"get": {
"summary": "Paginated node list",
"operationId": "v1_api_cluster_nodes_get",
"tags": [
"Cluster"
],
"parameters": [
{
"name": "sort",
"in": "query",
"required": false,
"schema": {
"type": "string",
"default": "activity",
"enum": [
"activity",
"tokens",
"name"
]
},
"description": "Sort field"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 100
},
"description": "Page size"
},
{
"name": "offset",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 0
},
"description": "Pagination offset"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ClusterNodesResponse"
}
}
}
}
}
}
},
"/v1/api/cluster/workstreams": {
"get": {
"summary": "Filtered workstream list",
"operationId": "v1_api_cluster_workstreams_get",
"tags": [
"Cluster"
],
"parameters": [
{
"name": "state",
"in": "query",
"required": false,
"schema": {
"type": "string",
"enum": [
"running",
"thinking",
"attention",
"idle",
"error"
]
},
"description": "Filter by state"
},
{
"name": "node",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by node_id"
},
{
"name": "search",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Search in name/title/node"
},
{
"name": "sort",
"in": "query",
"required": false,
"schema": {
"type": "string",
"default": "state",
"enum": [
"state",
"tokens",
"name"
]
},
"description": "Sort field"
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 1
},
"description": "Page number"
},
{
"name": "per_page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 50
},
"description": "Items per page (max 200)"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ClusterWorkstreamsResponse"
}
}
}
}
}
}
},
"/v1/api/cluster/node/{node_id}": {
"get": {
"summary": "Single node detail",
"operationId": "v1_api_cluster_node_{node_id}_get",
"tags": [
"Cluster"
],
"parameters": [
{
"name": "node_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodeDetailResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/cluster/workstreams/new": {
"post": {
"summary": "Create workstream via HTTP dispatch",
"operationId": "v1_api_cluster_workstreams_new_post",
"tags": [
"Cluster"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConsoleCreateWsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConsoleCreateWsResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/cluster/snapshot": {
"get": {
"summary": "Full cluster state snapshot",
"operationId": "v1_api_cluster_snapshot_get",
"tags": [
"Cluster"
],
"description": "Returns the complete cluster state: all nodes with their workstreams and overview aggregates. Used for initial load and reconnection.",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ClusterSnapshotResponse"
}
}
}
}
}
}
},
"/v1/api/cluster/events": {
"get": {
"summary": "Cluster SSE event stream",
"operationId": "v1_api_cluster_events_get",
"tags": [
"Streaming"
],
"description": "Server-Sent Events stream for real-time cluster updates. First event is a 'snapshot' with full cluster state, followed by node_joined, node_lost, cluster_state, ws_created, ws_closed, ws_rename events.",
"responses": {
"200": {
"description": "Success"
}
}
}
},
"/v1/api/auth/login": {
"post": {
"summary": "Authenticate with a token",
"operationId": "v1_api_auth_login_post",
"tags": [
"Auth"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthLoginRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthLoginResponse"
}
}
}
},
"401": {
"description": "Error 401",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/auth/setup": {
"post": {
"summary": "Create first admin user",
"operationId": "v1_api_auth_setup_post",
"tags": [
"Auth"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthSetupRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthSetupResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/auth/status": {
"get": {
"summary": "Return auth state",
"operationId": "v1_api_auth_status_get",
"tags": [
"Auth"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthStatusResponse"
}
}
}
}
}
}
},
"/v1/api/auth/logout": {
"post": {
"summary": "Clear auth cookie",
"operationId": "v1_api_auth_logout_post",
"tags": [
"Auth"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
}
}
}
},
"/v1/api/auth/oidc/authorize": {
"get": {
"summary": "Redirect to OIDC provider for SSO login",
"operationId": "v1_api_auth_oidc_authorize_get",
"tags": [
"Auth"
],
"responses": {
"302": {
"description": "Success"
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/auth/oidc/callback": {
"get": {
"summary": "OIDC callback \u2014 validates code, provisions user, sets JWT cookie, redirects to app",
"operationId": "v1_api_auth_oidc_callback_get",
"tags": [
"Auth"
],
"responses": {
"302": {
"description": "Success"
}
}
}
},
"/v1/api/auth/whoami": {
"get": {
"summary": "Return authenticated user info and permissions",
"operationId": "v1_api_auth_whoami_get",
"tags": [
"Auth"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthWhoamiResponse"
}
}
}
},
"401": {
"description": "Error 401",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/users": {
"get": {
"summary": "List all users",
"operationId": "v1_api_admin_users_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListUsersResponse"
}
}
}
}
}
},
"post": {
"summary": "Create a user",
"operationId": "v1_api_admin_users_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateUserRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserInfo"
}
}
}
}
}
}
},
"/v1/api/admin/users/{user_id}": {
"delete": {
"summary": "Delete a user and their tokens",
"operationId": "v1_api_admin_users_{user_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/users/{user_id}/tokens": {
"get": {
"summary": "List tokens for a user",
"operationId": "v1_api_admin_users_{user_id}_tokens_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListTokensResponse"
}
}
}
}
}
},
"post": {
"summary": "Create an API token (raw token shown once)",
"operationId": "v1_api_admin_users_{user_id}_tokens_post",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTokenRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTokenResponse"
}
}
}
}
}
}
},
"/v1/api/admin/tokens/{token_id}": {
"delete": {
"summary": "Revoke an API token",
"operationId": "v1_api_admin_tokens_{token_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "token_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/users/{user_id}/channels": {
"get": {
"summary": "List channel links for a user",
"operationId": "v1_api_admin_users_{user_id}_channels_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListChannelUsersResponse"
}
}
}
}
}
},
"post": {
"summary": "Link a channel account to a user",
"operationId": "v1_api_admin_users_{user_id}_channels_post",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateChannelUserRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChannelUserInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/channels/{channel_type}/{channel_user_id}": {
"delete": {
"summary": "Unlink a channel account",
"operationId": "v1_api_admin_channels_{channel_type}_{channel_user_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "channel_type",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "channel_user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/users/{user_id}/oidc-identities": {
"get": {
"summary": "List OIDC identities linked to a user",
"operationId": "v1_api_admin_users_{user_id}_oidc-identities_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
}
}
}
},
"/v1/api/admin/oidc-identities": {
"delete": {
"summary": "Unlink an OIDC identity (issuer + subject as query params)",
"operationId": "v1_api_admin_oidc-identities_delete",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/schedules": {
"get": {
"summary": "List all scheduled tasks",
"operationId": "v1_api_admin_schedules_get",
"tags": [
"Schedules"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListSchedulesResponse"
}
}
}
}
}
},
"post": {
"summary": "Create a scheduled task",
"operationId": "v1_api_admin_schedules_post",
"tags": [
"Schedules"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateScheduleRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScheduleInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/schedules/{task_id}": {
"get": {
"summary": "Get a scheduled task",
"operationId": "v1_api_admin_schedules_{task_id}_get",
"tags": [
"Schedules"
],
"parameters": [
{
"name": "task_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScheduleInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"put": {
"summary": "Update a scheduled task",
"operationId": "v1_api_admin_schedules_{task_id}_put",
"tags": [
"Schedules"
],
"parameters": [
{
"name": "task_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateScheduleRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScheduleInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a scheduled task",
"operationId": "v1_api_admin_schedules_{task_id}_delete",
"tags": [
"Schedules"
],
"parameters": [
{
"name": "task_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/schedules/{task_id}/runs": {
"get": {
"summary": "List run history for a scheduled task",
"operationId": "v1_api_admin_schedules_{task_id}_runs_get",
"tags": [
"Schedules"
],
"parameters": [
{
"name": "task_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 50
},
"description": "Max results (default 50, max 200)"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListScheduleRunsResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/roles": {
"get": {
"summary": "List all roles",
"operationId": "v1_api_admin_roles_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListRolesResponse"
}
}
}
}
}
},
"post": {
"summary": "Create a custom role",
"operationId": "v1_api_admin_roles_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateRoleRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/roles/{role_id}": {
"put": {
"summary": "Update a role",
"operationId": "v1_api_admin_roles_{role_id}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "role_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateRoleRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a custom role",
"operationId": "v1_api_admin_roles_{role_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "role_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/users/{user_id}/roles": {
"get": {
"summary": "List roles assigned to a user",
"operationId": "v1_api_admin_users_{user_id}_roles_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListUserRolesResponse"
}
}
}
}
}
},
"post": {
"summary": "Assign a role to a user",
"operationId": "v1_api_admin_users_{user_id}_roles_post",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssignRoleRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/users/{user_id}/roles/{role_id}": {
"delete": {
"summary": "Unassign a role from a user",
"operationId": "v1_api_admin_users_{user_id}_roles_{role_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "role_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/orgs": {
"get": {
"summary": "List organizations",
"operationId": "v1_api_admin_orgs_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListOrgsResponse"
}
}
}
}
}
}
},
"/v1/api/admin/orgs/{org_id}": {
"get": {
"summary": "Get organization details",
"operationId": "v1_api_admin_orgs_{org_id}_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "org_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"put": {
"summary": "Update organization settings",
"operationId": "v1_api_admin_orgs_{org_id}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "org_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrgRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/policies": {
"get": {
"summary": "List tool policies",
"operationId": "v1_api_admin_policies_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListToolPoliciesResponse"
}
}
}
}
}
},
"post": {
"summary": "Create a tool policy",
"operationId": "v1_api_admin_policies_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateToolPolicyRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ToolPolicyInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/policies/{policy_id}": {
"put": {
"summary": "Update a tool policy",
"operationId": "v1_api_admin_policies_{policy_id}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "policy_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateToolPolicyRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ToolPolicyInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a tool policy",
"operationId": "v1_api_admin_policies_{policy_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "policy_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/skills/discover": {
"get": {
"summary": "Search external skill registries for available skills",
"operationId": "v1_api_admin_skills_discover_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "q",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Search query"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "Max results (default 20, max 100)"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SkillDiscoverResponse"
}
}
}
},
"502": {
"description": "Error 502",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/skills/install": {
"post": {
"summary": "Install skill(s) from an external source",
"operationId": "v1_api_admin_skills_install_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SkillInstallRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SkillInstallResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"502": {
"description": "Error 502",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/skills": {
"get": {
"summary": "List skills",
"operationId": "v1_api_admin_skills_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListSkillsResponse"
}
}
}
}
}
},
"post": {
"summary": "Create a skill",
"operationId": "v1_api_admin_skills_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSkillRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SkillInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/skills/{skill_id}": {
"get": {
"summary": "Get a skill by ID",
"operationId": "v1_api_admin_skills_{skill_id}_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SkillInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"put": {
"summary": "Update a skill",
"operationId": "v1_api_admin_skills_{skill_id}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateSkillRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SkillInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a skill",
"operationId": "v1_api_admin_skills_{skill_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/skills/{skill_id}/versions": {
"get": {
"summary": "List version history for a skill",
"operationId": "v1_api_admin_skills_{skill_id}_versions_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListSkillVersionsResponse"
}
}
}
}
}
}
},
"/v1/api/models": {
"get": {
"summary": "List enabled model aliases for workstream creation",
"operationId": "v1_api_models_get",
"tags": [
"Models"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListAvailableModelsResponse"
}
}
}
}
}
}
},
"/v1/api/skills": {
"get": {
"summary": "List available skills (summary)",
"operationId": "v1_api_skills_get",
"tags": [
"Skills"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListSkillSummaryResponse"
}
}
}
}
}
}
},
"/v1/api/admin/usage": {
"get": {
"summary": "Aggregated usage data",
"operationId": "v1_api_admin_usage_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "since",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Start timestamp (ISO8601, defaults to last 7 days)"
},
{
"name": "until",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "End timestamp (ISO8601)"
},
{
"name": "user_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by user"
},
{
"name": "model",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by model"
},
{
"name": "group_by",
"in": "query",
"required": false,
"schema": {
"type": "string",
"enum": [
"day",
"hour",
"model",
"user"
]
},
"description": "Group results"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UsageResponse"
}
}
}
}
}
}
},
"/v1/api/admin/audit": {
"get": {
"summary": "Paginated audit events",
"operationId": "v1_api_admin_audit_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "action",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by action type"
},
{
"name": "user_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by user"
},
{
"name": "since",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Start timestamp (ISO8601)"
},
{
"name": "until",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "End timestamp (ISO8601)"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 50
},
"description": "Page size"
},
{
"name": "offset",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 0
},
"description": "Pagination offset"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListAuditEventsResponse"
}
}
}
}
}
}
},
"/v1/api/admin/verdicts": {
"get": {
"summary": "Paginated intent verdicts",
"operationId": "v1_api_admin_verdicts_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "ws_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by workstream"
},
{
"name": "since",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Start timestamp (ISO8601)"
},
{
"name": "until",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "End timestamp (ISO8601)"
},
{
"name": "risk_level",
"in": "query",
"required": false,
"schema": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"description": "Filter by risk level"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 100
},
"description": "Page size (max 500)"
},
{
"name": "offset",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 0
},
"description": "Pagination offset"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListVerdictsResponse"
}
}
}
}
}
}
},
"/v1/api/admin/output-assessments": {
"get": {
"summary": "Paginated output guard assessments",
"operationId": "v1_api_admin_output-assessments_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "ws_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by workstream"
},
{
"name": "risk_level",
"in": "query",
"required": false,
"schema": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"description": "Filter by risk level"
},
{
"name": "since",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Start timestamp (ISO8601)"
},
{
"name": "until",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "End timestamp (ISO8601)"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 100
},
"description": "Page size (max 500)"
},
{
"name": "offset",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 0
},
"description": "Pagination offset"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListOutputAssessmentsResponse"
}
}
}
}
}
}
},
"/v1/api/admin/skills/{skill_id}/rescan": {
"post": {
"summary": "Re-scan a skill for security signals",
"operationId": "v1_api_admin_skills_{skill_id}_rescan_post",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
}
}
}
},
"/v1/api/admin/skills/{skill_id}/resources": {
"get": {
"summary": "List resource files for a skill",
"operationId": "v1_api_admin_skills_{skill_id}_resources_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListSkillResourcesResponse"
}
}
}
}
}
},
"post": {
"summary": "Upload a resource file to a skill",
"operationId": "v1_api_admin_skills_{skill_id}_resources_post",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSkillResourceRequest"
}
}
}
},
"responses": {
"201": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SkillResourceInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/skills/{skill_id}/resources/{path}": {
"get": {
"summary": "Get a single skill resource by path",
"operationId": "v1_api_admin_skills_{skill_id}_resources_{path}_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "path",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SkillResourceInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a skill resource by path",
"operationId": "v1_api_admin_skills_{skill_id}_resources_{path}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "path",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/memories": {
"get": {
"summary": "List structured memories",
"operationId": "v1_api_admin_memories_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "type",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by memory type"
},
{
"name": "scope",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by scope"
},
{
"name": "scope_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by scope identifier"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 100
},
"description": "Page size (max 200)"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListAdminMemoriesResponse"
}
}
}
}
}
}
},
"/v1/api/admin/memories/search": {
"get": {
"summary": "Search memories by query",
"operationId": "v1_api_admin_memories_search_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "q",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Search query"
},
{
"name": "type",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by memory type"
},
{
"name": "scope",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by scope"
},
{
"name": "scope_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by scope identifier"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 20
},
"description": "Max results"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListAdminMemoriesResponse"
}
}
}
}
}
}
},
"/v1/api/admin/memories/{memory_id}": {
"get": {
"summary": "Get a single memory by ID",
"operationId": "v1_api_admin_memories_{memory_id}_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "memory_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminMemoryInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a memory by ID",
"operationId": "v1_api_admin_memories_{memory_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "memory_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/settings": {
"get": {
"summary": "List all settings with effective values",
"operationId": "v1_api_admin_settings_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "reveal",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
},
"description": "Show secret values in plaintext"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListSettingsResponse"
}
}
}
}
}
}
},
"/v1/api/admin/settings/schema": {
"get": {
"summary": "Return the full settings registry schema",
"operationId": "v1_api_admin_settings_schema_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListSettingSchemaResponse"
}
}
}
}
}
}
},
"/v1/api/admin/settings/{key}": {
"put": {
"summary": "Set a configuration setting value",
"operationId": "v1_api_admin_settings_{key}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "key",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateSettingRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SettingInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Reset a setting to its default value",
"operationId": "v1_api_admin_settings_{key}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "key",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "node_id",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Node ID for node-scoped settings"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteSettingResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/mcp-registry/search": {
"get": {
"summary": "Search the MCP Registry for available servers",
"operationId": "v1_api_admin_mcp-registry_search_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "search",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Search query"
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer"
},
"description": "Max results (default 20, max 100)"
},
{
"name": "cursor",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Pagination cursor for next page"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RegistrySearchResponse"
}
}
}
},
"502": {
"description": "Error 502",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/mcp-registry/install": {
"post": {
"summary": "Install an MCP server from the registry",
"operationId": "v1_api_admin_mcp-registry_install_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RegistryInstallRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/McpServerDetail"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"502": {
"description": "Error 502",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/mcp-servers": {
"get": {
"summary": "List MCP server definitions with live status",
"operationId": "v1_api_admin_mcp-servers_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "reveal",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
},
"description": "Show secret env/header values"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListMcpServersResponse"
}
}
}
}
}
},
"post": {
"summary": "Create an MCP server definition",
"operationId": "v1_api_admin_mcp-servers_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateMcpServerRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/McpServerDetail"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/mcp-servers/{server_id}": {
"get": {
"summary": "Get a single MCP server with status",
"operationId": "v1_api_admin_mcp-servers_{server_id}_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "server_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/McpServerDetail"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"put": {
"summary": "Update an MCP server definition",
"operationId": "v1_api_admin_mcp-servers_{server_id}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "server_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateMcpServerRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/McpServerDetail"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete an MCP server definition",
"operationId": "v1_api_admin_mcp-servers_{server_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "server_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/mcp-servers/reload": {
"post": {
"summary": "Tell all nodes to re-read MCP server config from DB and reconcile",
"operationId": "v1_api_admin_mcp-servers_reload_post",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/McpReloadResponse"
}
}
}
}
}
}
},
"/v1/api/admin/mcp-servers/import": {
"post": {
"summary": "Import MCP servers from a JSON config file",
"operationId": "v1_api_admin_mcp-servers_import_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportMcpConfigRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportMcpConfigResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/model-definitions": {
"get": {
"summary": "List model definitions with live status from cluster nodes",
"operationId": "v1_api_admin_model-definitions_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListModelDefinitionsResponse"
}
}
}
}
}
},
"post": {
"summary": "Create a model definition",
"operationId": "v1_api_admin_model-definitions_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateModelDefinitionRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelDefinitionInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/model-definitions/reload": {
"post": {
"summary": "Tell all nodes to re-read model definitions from DB and rebuild registry",
"operationId": "v1_api_admin_model-definitions_reload_post",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelReloadResponse"
}
}
}
}
}
}
},
"/v1/api/admin/model-definitions/{definition_id}": {
"get": {
"summary": "Get a single model definition",
"operationId": "v1_api_admin_model-definitions_{definition_id}_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "definition_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelDefinitionInfo"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"put": {
"summary": "Update a model definition",
"operationId": "v1_api_admin_model-definitions_{definition_id}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "definition_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateModelDefinitionRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelDefinitionInfo"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a model definition",
"operationId": "v1_api_admin_model-definitions_{definition_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "definition_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/model-definitions/detect": {
"post": {
"summary": "Probe a model endpoint: verify reachability, list models, detect context window and server type",
"operationId": "v1_api_admin_model-definitions_detect_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DetectModelRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DetectModelResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/model-capabilities": {
"get": {
"summary": "Look up static capabilities for a known model",
"operationId": "v1_api_admin_model-capabilities_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "provider",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Provider name"
},
{
"name": "model",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Model ID to look up"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelCapabilitiesResponse"
}
}
}
}
}
}
},
"/v1/api/admin/model-capabilities/known": {
"get": {
"summary": "List known model name prefixes for a provider",
"operationId": "v1_api_admin_model-capabilities_known_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "provider",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Provider name"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KnownModelsResponse"
}
}
}
}
}
}
},
"/v1/api/admin/prompt-policies": {
"get": {
"summary": "List all prompt policies for system message composition",
"operationId": "v1_api_admin_prompt-policies_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success"
}
}
},
"post": {
"summary": "Create a prompt policy",
"operationId": "v1_api_admin_prompt-policies_post",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/prompt-policies/{policy_id}": {
"get": {
"summary": "Get a single prompt policy",
"operationId": "v1_api_admin_prompt-policies_{policy_id}_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "policy_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"put": {
"summary": "Update a prompt policy",
"operationId": "v1_api_admin_prompt-policies_{policy_id}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "policy_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a prompt policy",
"operationId": "v1_api_admin_prompt-policies_{policy_id}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "policy_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/node-metadata": {
"get": {
"summary": "Get metadata for all nodes (bulk)",
"operationId": "v1_api_admin_node-metadata_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success"
}
}
}
},
"/v1/api/admin/nodes/{node_id}/metadata": {
"get": {
"summary": "Get all metadata for a node",
"operationId": "v1_api_admin_nodes_{node_id}_metadata_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "node_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NodeMetadataResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"put": {
"summary": "Bulk set user metadata for a node",
"operationId": "v1_api_admin_nodes_{node_id}_metadata_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "node_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkSetNodeMetadataRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/nodes/{node_id}/metadata/{key}": {
"put": {
"summary": "Set a single metadata key for a node",
"operationId": "v1_api_admin_nodes_{node_id}_metadata_{key}_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "node_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "key",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetNodeMetadataValueRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"delete": {
"summary": "Delete a single metadata key for a node",
"operationId": "v1_api_admin_nodes_{node_id}_metadata_{key}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "node_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "key",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/tls/ca": {
"get": {
"summary": "CA status: initialization state, CN, cert count, cert inventory",
"operationId": "v1_api_admin_tls_ca_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success"
}
}
}
},
"/v1/api/admin/tls/ca.pem": {
"get": {
"summary": "Download CA root certificate (PEM format)",
"operationId": "v1_api_admin_tls_ca.pem_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success"
}
}
}
},
"/v1/api/admin/tls/certs": {
"get": {
"summary": "List all issued TLS certificates",
"operationId": "v1_api_admin_tls_certs_get",
"tags": [
"Admin"
],
"responses": {
"200": {
"description": "Success"
}
}
}
},
"/v1/api/admin/tls/certs/{domain}/renew": {
"post": {
"summary": "Force-renew a certificate by domain",
"operationId": "v1_api_admin_tls_certs_{domain}_renew_post",
"tags": [
"Admin"
],
"parameters": [
{
"name": "domain",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "Error 500",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/tls/certs/{domain}": {
"delete": {
"summary": "Delete a certificate by domain",
"operationId": "v1_api_admin_tls_certs_{domain}_delete",
"tags": [
"Admin"
],
"parameters": [
{
"name": "domain",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/route/workstreams/new": {
"post": {
"summary": "Create workstream via hash-ring routing proxy",
"operationId": "v1_api_route_workstreams_new_post",
"tags": [
"Routing"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RouteCreateResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/route/send": {
"post": {
"summary": "Proxy send to routed node",
"operationId": "v1_api_route_send_post",
"tags": [
"Routing"
],
"responses": {
"200": {
"description": "Success"
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/route/approve": {
"post": {
"summary": "Proxy approve to routed node",
"operationId": "v1_api_route_approve_post",
"tags": [
"Routing"
],
"responses": {
"200": {
"description": "Success"
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/route/cancel": {
"post": {
"summary": "Proxy cancel to routed node",
"operationId": "v1_api_route_cancel_post",
"tags": [
"Routing"
],
"responses": {
"200": {
"description": "Success"
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/route/command": {
"post": {
"summary": "Proxy command to routed node",
"operationId": "v1_api_route_command_post",
"tags": [
"Routing"
],
"responses": {
"200": {
"description": "Success"
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/route/workstreams/close": {
"post": {
"summary": "Proxy workstream close to routed node",
"operationId": "v1_api_route_workstreams_close_post",
"tags": [
"Routing"
],
"responses": {
"200": {
"description": "Success"
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/route": {
"get": {
"summary": "Look up which node owns a workstream",
"operationId": "v1_api_route_get",
"tags": [
"Routing"
],
"parameters": [
{
"name": "ws_id",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Workstream ID to look up"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RouteResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/new": {
"post": {
"summary": "Create a new coordinator workstream",
"operationId": "v1_api_coordinator_new_post",
"tags": [
"Coordinator"
],
"description": "Allocates a console-hosted ``kind=\"coordinator\"`` ChatSession. 201 on create; 429 when the ``coordinator.max_active`` cap is reached and no idle coordinator can be evicted.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorCreateRequest"
}
}
}
},
"responses": {
"201": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorCreateResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"401": {
"description": "Error 401",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"429": {
"description": "Error 429",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "Error 500",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator": {
"get": {
"summary": "List coordinator workstreams visible to the caller",
"operationId": "v1_api_coordinator_get",
"tags": [
"Coordinator"
],
"description": "Returns coordinators owned by the caller. Callers with ``admin.system`` see every coordinator across tenants.",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorListResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}": {
"get": {
"summary": "Get coordinator detail (rehydrates lazily on miss)",
"operationId": "v1_api_coordinator_{ws_id}_get",
"tags": [
"Coordinator"
],
"description": "Returns the persisted coordinator's display fields. If the session isn't currently in memory the manager rehydrates it before responding; ``500`` on rehydrate failure carries a correlation id matching the server log line.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorDetailResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "Error 500",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/open": {
"post": {
"summary": "Open (rehydrate) a coordinator workstream by ws_id",
"operationId": "v1_api_coordinator_{ws_id}_open_post",
"tags": [
"Coordinator"
],
"description": "Parity with ``POST /v1/api/workstreams/{ws_id}/open`` \u2014 gives SDK callers and operators a way to warm a coordinator without browsing to it. Idempotent: ``already_loaded=true`` when the session was already in memory.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorOpenResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "Error 500",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/send": {
"post": {
"summary": "Queue a user message onto the coordinator session",
"operationId": "v1_api_coordinator_{ws_id}_send_post",
"tags": [
"Coordinator"
],
"description": "Worker thread picks up the message via the session's queue. ``429`` when the worker queue is full \u2014 caller should back off.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorSendRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"429": {
"description": "Error 429",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "Error 500",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/approve": {
"post": {
"summary": "Resolve a pending tool approval on the coordinator session",
"operationId": "v1_api_coordinator_{ws_id}_approve_post",
"tags": [
"Coordinator"
],
"description": "Approves or denies the pending tool call(s). Set ``always`` to True to also add the pending tool name(s) to the session's auto-approve set so subsequent calls of the same tool skip the prompt.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorApproveRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/cancel": {
"post": {
"summary": "Cancel in-flight generation on the coordinator session",
"operationId": "v1_api_coordinator_{ws_id}_cancel_post",
"tags": [
"Coordinator"
],
"description": "Drops the in-flight LLM call and unblocks any pending approval or plan review. The coordinator state moves to idle; storage is preserved.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/close": {
"post": {
"summary": "Soft-close the coordinator (unload from memory; storage preserved)",
"operationId": "v1_api_coordinator_{ws_id}_close_post",
"tags": [
"Coordinator"
],
"description": "Releases the worker thread + UI listeners and marks the row ``state=closed`` in storage. The row remains queryable (audit / history) but cannot be reopened \u2014 a closed coordinator is terminal from the manager's perspective.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "Error 500",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/events": {
"get": {
"summary": "Subscribe to the coordinator's SSE event stream",
"operationId": "v1_api_coordinator_{ws_id}_events_get",
"tags": [
"Coordinator"
],
"description": "Server-Sent Events stream carrying ``status``, ``message``, ``tool_call``, ``tool_result``, ``approval``, ``error``, and the phase-3 ``child_ws_*`` fan-out events. Pings every 5s. Body is text/event-stream \u2014 the response schema is omitted from the catalog because OpenAPI 3.1 has no first-class SSE type.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"409": {
"description": "Error 409",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/history": {
"get": {
"summary": "Read the coordinator's reconstructed message history",
"operationId": "v1_api_coordinator_{ws_id}_history_get",
"tags": [
"Coordinator"
],
"description": "Returns the tail of the conversation in OpenAI-like message format. Used by the page-load handshake; SSE handles updates after that. Bounded by the ``limit`` query parameter.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 100
},
"description": "Max conversation rows to fetch from storage (default 100, max 500)."
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorHistoryResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/children": {
"get": {
"summary": "List the coordinator's spawned child workstreams",
"operationId": "v1_api_coordinator_{ws_id}_children_get",
"tags": [
"Coordinator"
],
"description": "Returns interactive child workstreams whose ``parent_ws_id`` is this coordinator. Same row shape as the model-facing ``list_workstreams`` tool so the tree UI and the tool agree.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorChildrenResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "Error 500",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/tasks": {
"get": {
"summary": "Read the coordinator's task list envelope",
"operationId": "v1_api_coordinator_{ws_id}_tasks_get",
"tags": [
"Coordinator"
],
"description": "Returns the ``{version, tasks}`` envelope persisted via the ``task_list`` model tool. Corrupt envelopes return an empty list (the tool itself surfaces corruption errors on mutation).",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorTasksResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/trust": {
"post": {
"summary": "Toggle trusted-session mode for send_to_workstream",
"operationId": "v1_api_coordinator_{ws_id}_trust_post",
"tags": [
"Coordinator"
],
"description": "When enabled, ``send_to_workstream`` calls that target a ws_id in the coordinator's own subtree skip the approval prompt. Foreign ws_ids continue to require approval \u2014 trust only relaxes the guard for work the orchestrator itself spawned. Every auto-approved send still emits a ``coordinator.send.auto_approved`` audit row so the trail isn't lost. Gated on both ``admin.coordinator`` AND ``coordinator.trust.send`` so the trust feature is an explicit opt-in capability separate from ordinary coordinator administration.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorTrustRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorTrustResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/restrict": {
"post": {
"summary": "Revoke tool access on a live coordinator session",
"operationId": "v1_api_coordinator_{ws_id}_restrict_post",
"tags": [
"Coordinator"
],
"description": "Adds the named tools to the coordinator session's revoked set without closing the session. The model can keep working on whatever is already in flight but cannot invoke the revoked tools again. Idempotent and additive \u2014 calling twice with disjoint lists unions them. Revocations do not survive a session close / reopen; operators opt in per session. Writes ``coordinator.restricted`` with the revocation delta and the full post-state.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorRestrictRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorRestrictResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/coordinator/{ws_id}/stop_cascade": {
"post": {
"summary": "Cancel the coordinator and every direct child",
"operationId": "v1_api_coordinator_{ws_id}_stop_cascade_post",
"tags": [
"Coordinator"
],
"description": "Cancels the coordinator's in-flight generation AND dispatches ``cancel_workstream`` through the routing proxy for every direct child in the in-memory registry. Grandchildren are not touched directly \u2014 they sit behind their parent's cancel, which propagates via the child's SSE stream. Returns the per-child disposition (``cancelled`` / ``failed``) so the UI can show which children responded. Writes ``coordinator.stopped_cascade`` with the two lists.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorStopCascadeResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/cluster/ws/{ws_id}/detail": {
"get": {
"summary": "Cluster-wide live workstream detail (storage + live block + tail)",
"operationId": "v1_api_cluster_ws_{ws_id}_detail_get",
"tags": [
"Coordinator"
],
"description": "Aggregates the persisted row, a best-effort live block from the owning node (or the in-process coordinator manager for ``kind=\"coordinator\"`` rows), and the tail of the message history. Gated on the ``admin.cluster.inspect`` permission (granted to ``builtin-admin`` via migration 040; revoke or reassign to a custom role for tighter control). ``live`` is null on node unreachability / 5xx so callers can degrade gracefully.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "message_limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"default": 20
},
"description": "Max conversation rows in the tail (default 20, clamped to 200)."
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ClusterWsDetailResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Error 403",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/health": {
"get": {
"summary": "Console health check",
"operationId": "health_get",
"tags": [
"Observability"
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConsoleHealthResponse"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"ErrorResponse": {
"description": "Standard error response body.",
"properties": {
"error": {
"description": "Error message",
"title": "Error",
"type": "string"
}
},
"required": [
"error"
],
"title": "ErrorResponse",
"type": "object"
},
"StatusResponse": {
"description": "Generic success response.",
"properties": {
"status": {
"default": "ok",
"examples": [
"ok"
],
"title": "Status",
"type": "string"
}
},
"title": "StatusResponse",
"type": "object"
},
"DeleteSettingResponse": {
"description": "DELETE /v1/api/admin/settings/{key} response.",
"properties": {
"status": {
"default": "ok",
"examples": [
"ok"
],
"title": "Status",
"type": "string"
},
"key": {
"description": "Dotted setting key that was reset",
"title": "Key",
"type": "string"
},
"default": {
"description": "Registry default value the setting reverted to",
"title": "Default"
}
},
"required": [
"key",
"default"
],
"title": "DeleteSettingResponse",
"type": "object"
},
"AuthLoginRequest": {
"description": "POST /v1/api/auth/login request body.\n\nEither username+password or token must be provided.",
"properties": {
"username": {
"default": "",
"description": "Login username",
"title": "Username",
"type": "string"
},
"password": {
"default": "",
"description": "Login password",
"title": "Password",
"type": "string"
},
"token": {
"default": "",
"description": "Legacy: bearer token to authenticate",
"title": "Token",
"type": "string"
}
},
"title": "AuthLoginRequest",
"type": "object"
},
"AuthLoginResponse": {
"description": "POST /v1/api/auth/login success response.",
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"user_id": {
"default": "",
"description": "Authenticated user ID",
"title": "User Id",
"type": "string"
},
"role": {
"description": "Legacy role",
"examples": [
"full",
"read"
],
"title": "Role",
"type": "string"
},
"scopes": {
"default": "",
"description": "Comma-separated scopes",
"examples": [
"read,write,approve"
],
"title": "Scopes",
"type": "string"
},
"jwt": {
"default": "",
"description": "JWT session token (if JWT auth is configured)",
"title": "Jwt",
"type": "string"
}
},
"required": [
"role"
],
"title": "AuthLoginResponse",
"type": "object"
},
"AuthSetupRequest": {
"description": "POST /v1/api/auth/setup request body.",
"properties": {
"username": {
"description": "Login username (1-64 ASCII characters)",
"title": "Username",
"type": "string"
},
"display_name": {
"description": "Display name",
"title": "Display Name",
"type": "string"
},
"password": {
"description": "Password (minimum 8 characters)",
"title": "Password",
"type": "string"
}
},
"required": [
"username",
"display_name",
"password"
],
"title": "AuthSetupRequest",
"type": "object"
},
"AuthSetupResponse": {
"description": "POST /v1/api/auth/setup success response.",
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "string"
},
"username": {
"title": "Username",
"type": "string"
},
"role": {
"default": "full",
"title": "Role",
"type": "string"
},
"scopes": {
"default": "approve,read,write",
"title": "Scopes",
"type": "string"
},
"jwt": {
"default": "",
"description": "JWT session token",
"title": "Jwt",
"type": "string"
}
},
"required": [
"user_id",
"username"
],
"title": "AuthSetupResponse",
"type": "object"
},
"AuthStatusResponse": {
"description": "GET /v1/api/auth/status response.",
"properties": {
"auth_enabled": {
"title": "Auth Enabled",
"type": "boolean"
},
"has_users": {
"title": "Has Users",
"type": "boolean"
},
"setup_required": {
"title": "Setup Required",
"type": "boolean"
},
"oidc_enabled": {
"default": false,
"title": "Oidc Enabled",
"type": "boolean"
},
"oidc_provider_name": {
"default": "",
"title": "Oidc Provider Name",
"type": "string"
},
"password_enabled": {
"default": true,
"title": "Password Enabled",
"type": "boolean"
}
},
"required": [
"auth_enabled",
"has_users",
"setup_required"
],
"title": "AuthStatusResponse",
"type": "object"
},
"CreateUserRequest": {
"description": "POST /v1/api/admin/users request body.",
"properties": {
"username": {
"description": "Login username (unique)",
"title": "Username",
"type": "string"
},
"display_name": {
"description": "Human-readable display name",
"title": "Display Name",
"type": "string"
},
"password": {
"description": "Initial password",
"title": "Password",
"type": "string"
}
},
"required": [
"username",
"display_name",
"password"
],
"title": "CreateUserRequest",
"type": "object"
},
"UserInfo": {
"description": "User record (no password_hash).",
"properties": {
"user_id": {
"title": "User Id",
"type": "string"
},
"username": {
"title": "Username",
"type": "string"
},
"display_name": {
"title": "Display Name",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
}
},
"required": [
"user_id",
"username",
"display_name",
"created"
],
"title": "UserInfo",
"type": "object"
},
"ListUsersResponse": {
"description": "GET /v1/api/admin/users response.",
"properties": {
"users": {
"items": {
"$ref": "#/components/schemas/UserInfo"
},
"title": "Users",
"type": "array"
}
},
"required": [
"users"
],
"title": "ListUsersResponse",
"type": "object"
},
"CreateTokenRequest": {
"description": "POST /v1/api/admin/users/{user_id}/tokens request body.",
"properties": {
"name": {
"default": "",
"description": "Human label for the token",
"title": "Name",
"type": "string"
},
"scopes": {
"default": "read,write,approve",
"description": "Comma-separated scopes: read, write, approve",
"title": "Scopes",
"type": "string"
},
"expires_days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Days until expiry (null = no expiry)",
"title": "Expires Days"
}
},
"title": "CreateTokenRequest",
"type": "object"
},
"CreateTokenResponse": {
"description": "POST /v1/api/admin/users/{user_id}/tokens response (raw token shown once).",
"properties": {
"token": {
"description": "Raw API token \u2014 save this, it cannot be retrieved again",
"title": "Token",
"type": "string"
},
"token_id": {
"title": "Token Id",
"type": "string"
},
"token_prefix": {
"title": "Token Prefix",
"type": "string"
},
"scopes": {
"title": "Scopes",
"type": "string"
}
},
"required": [
"token",
"token_id",
"token_prefix",
"scopes"
],
"title": "CreateTokenResponse",
"type": "object"
},
"ListTokensResponse": {
"description": "GET /v1/api/admin/users/{user_id}/tokens response.",
"properties": {
"tokens": {
"items": {
"$ref": "#/components/schemas/TokenInfo"
},
"title": "Tokens",
"type": "array"
}
},
"required": [
"tokens"
],
"title": "ListTokensResponse",
"type": "object"
},
"TokenInfo": {
"description": "Token metadata (never includes the hash or raw token).",
"properties": {
"token_id": {
"title": "Token Id",
"type": "string"
},
"token_prefix": {
"title": "Token Prefix",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"scopes": {
"title": "Scopes",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
},
"expires": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Expires"
}
},
"required": [
"token_id",
"token_prefix",
"name",
"scopes",
"created"
],
"title": "TokenInfo",
"type": "object"
},
"ChannelUserInfo": {
"properties": {
"channel_type": {
"title": "Channel Type",
"type": "string"
},
"channel_user_id": {
"title": "Channel User Id",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
}
},
"required": [
"channel_type",
"channel_user_id",
"user_id",
"created"
],
"title": "ChannelUserInfo",
"type": "object"
},
"CreateChannelUserRequest": {
"properties": {
"channel_type": {
"description": "Channel type (e.g. discord, slack)",
"title": "Channel Type",
"type": "string"
},
"channel_user_id": {
"description": "External channel user identifier",
"title": "Channel User Id",
"type": "string"
}
},
"required": [
"channel_type",
"channel_user_id"
],
"title": "CreateChannelUserRequest",
"type": "object"
},
"ListChannelUsersResponse": {
"properties": {
"channels": {
"items": {
"$ref": "#/components/schemas/ChannelUserInfo"
},
"title": "Channels",
"type": "array"
}
},
"required": [
"channels"
],
"title": "ListChannelUsersResponse",
"type": "object"
},
"ClusterOverviewResponse": {
"properties": {
"nodes": {
"default": 0,
"title": "Nodes",
"type": "integer"
},
"workstreams": {
"default": 0,
"title": "Workstreams",
"type": "integer"
},
"states": {
"$ref": "#/components/schemas/StateCounts",
"default": {
"running": 0,
"thinking": 0,
"attention": 0,
"idle": 0,
"error": 0
}
},
"aggregate": {
"$ref": "#/components/schemas/ClusterAggregate",
"default": {
"total_tokens": 0,
"total_tool_calls": 0
}
},
"version_drift": {
"default": false,
"title": "Version Drift",
"type": "boolean"
},
"versions": {
"default": [],
"items": {
"type": "string"
},
"title": "Versions",
"type": "array"
}
},
"title": "ClusterOverviewResponse",
"type": "object"
},
"ClusterAggregate": {
"properties": {
"total_tokens": {
"default": 0,
"title": "Total Tokens",
"type": "integer"
},
"total_tool_calls": {
"default": 0,
"title": "Total Tool Calls",
"type": "integer"
}
},
"title": "ClusterAggregate",
"type": "object"
},
"StateCounts": {
"properties": {
"running": {
"default": 0,
"title": "Running",
"type": "integer"
},
"thinking": {
"default": 0,
"title": "Thinking",
"type": "integer"
},
"attention": {
"default": 0,
"title": "Attention",
"type": "integer"
},
"idle": {
"default": 0,
"title": "Idle",
"type": "integer"
},
"error": {
"default": 0,
"title": "Error",
"type": "integer"
}
},
"title": "StateCounts",
"type": "object"
},
"ClusterNodesResponse": {
"properties": {
"nodes": {
"items": {
"$ref": "#/components/schemas/ClusterNodeInfo"
},
"title": "Nodes",
"type": "array"
},
"total": {
"default": 0,
"title": "Total",
"type": "integer"
}
},
"required": [
"nodes"
],
"title": "ClusterNodesResponse",
"type": "object"
},
"ClusterNodeInfo": {
"properties": {
"node_id": {
"title": "Node Id",
"type": "string"
},
"server_url": {
"default": "",
"title": "Server Url",
"type": "string"
},
"ws_total": {
"default": 0,
"title": "Ws Total",
"type": "integer"
},
"ws_running": {
"default": 0,
"title": "Ws Running",
"type": "integer"
},
"ws_thinking": {
"default": 0,
"title": "Ws Thinking",
"type": "integer"
},
"ws_attention": {
"default": 0,
"title": "Ws Attention",
"type": "integer"
},
"ws_idle": {
"default": 0,
"title": "Ws Idle",
"type": "integer"
},
"ws_error": {
"default": 0,
"title": "Ws Error",
"type": "integer"
},
"total_tokens": {
"default": 0,
"title": "Total Tokens",
"type": "integer"
},
"started": {
"default": 0.0,
"title": "Started",
"type": "number"
},
"reachable": {
"default": true,
"title": "Reachable",
"type": "boolean"
},
"health": {
"additionalProperties": true,
"title": "Health",
"type": "object"
},
"version": {
"default": "",
"title": "Version",
"type": "string"
}
},
"required": [
"node_id"
],
"title": "ClusterNodeInfo",
"type": "object"
},
"ClusterWorkstreamsResponse": {
"properties": {
"workstreams": {
"items": {
"$ref": "#/components/schemas/ClusterWorkstreamInfo"
},
"title": "Workstreams",
"type": "array"
},
"total": {
"default": 0,
"title": "Total",
"type": "integer"
},
"page": {
"default": 1,
"title": "Page",
"type": "integer"
},
"per_page": {
"default": 50,
"title": "Per Page",
"type": "integer"
},
"pages": {
"default": 1,
"title": "Pages",
"type": "integer"
}
},
"required": [
"workstreams"
],
"title": "ClusterWorkstreamsResponse",
"type": "object"
},
"ClusterWorkstreamInfo": {
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"name": {
"default": "",
"title": "Name",
"type": "string"
},
"state": {
"default": "",
"title": "State",
"type": "string"
},
"node": {
"default": "",
"title": "Node",
"type": "string"
},
"title": {
"default": "",
"title": "Title",
"type": "string"
},
"tokens": {
"default": 0,
"title": "Tokens",
"type": "integer"
},
"context_ratio": {
"default": 0.0,
"title": "Context Ratio",
"type": "number"
},
"activity": {
"default": "",
"title": "Activity",
"type": "string"
},
"activity_state": {
"default": "",
"title": "Activity State",
"type": "string"
},
"tool_calls": {
"default": 0,
"title": "Tool Calls",
"type": "integer"
}
},
"required": [
"id"
],
"title": "ClusterWorkstreamInfo",
"type": "object"
},
"NodeDetailResponse": {
"properties": {
"node_id": {
"title": "Node Id",
"type": "string"
},
"server_url": {
"default": "",
"title": "Server Url",
"type": "string"
},
"health": {
"additionalProperties": true,
"title": "Health",
"type": "object"
},
"workstreams": {
"default": [],
"items": {
"$ref": "#/components/schemas/ClusterWorkstreamInfo"
},
"title": "Workstreams",
"type": "array"
},
"aggregate": {
"additionalProperties": {
"type": "integer"
},
"title": "Aggregate",
"type": "object"
},
"reachable": {
"default": true,
"title": "Reachable",
"type": "boolean"
},
"metadata": {
"items": {
"$ref": "#/components/schemas/NodeMetadataEntry"
},
"title": "Metadata",
"type": "array"
}
},
"required": [
"node_id"
],
"title": "NodeDetailResponse",
"type": "object"
},
"NodeMetadataEntry": {
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"title": "Value"
},
"source": {
"default": "user",
"title": "Source",
"type": "string"
}
},
"required": [
"key",
"value"
],
"title": "NodeMetadataEntry",
"type": "object"
},
"ClusterSnapshotResponse": {
"properties": {
"nodes": {
"items": {
"$ref": "#/components/schemas/ClusterSnapshotNode"
},
"title": "Nodes",
"type": "array"
},
"overview": {
"$ref": "#/components/schemas/ClusterOverviewResponse"
},
"timestamp": {
"default": 0.0,
"title": "Timestamp",
"type": "number"
}
},
"required": [
"nodes",
"overview"
],
"title": "ClusterSnapshotResponse",
"type": "object"
},
"ClusterSnapshotNode": {
"properties": {
"node_id": {
"title": "Node Id",
"type": "string"
},
"server_url": {
"default": "",
"title": "Server Url",
"type": "string"
},
"max_ws": {
"default": 10,
"title": "Max Ws",
"type": "integer"
},
"reachable": {
"default": true,
"title": "Reachable",
"type": "boolean"
},
"version": {
"default": "",
"title": "Version",
"type": "string"
},
"health": {
"additionalProperties": true,
"title": "Health",
"type": "object"
},
"aggregate": {
"additionalProperties": {
"type": "integer"
},
"title": "Aggregate",
"type": "object"
},
"workstreams": {
"default": [],
"items": {
"$ref": "#/components/schemas/ClusterWorkstreamInfo"
},
"title": "Workstreams",
"type": "array"
}
},
"required": [
"node_id"
],
"title": "ClusterSnapshotNode",
"type": "object"
},
"ClusterWsDetailResponse": {
"description": "Response body for GET /v1/api/cluster/ws/{ws_id}/detail.\n\nAggregates the persisted workstream row with a best-effort live block\nfetched from the owning node (or the in-process coordinator manager\nfor ``kind=\"coordinator\"`` rows). ``live`` is ``null`` when the\nowning node is unreachable, returns 5xx, or doesn't have the row in\nits in-memory dashboard cache \u2014 callers degrade gracefully without\ntreating it as an error.",
"properties": {
"persisted": {
"additionalProperties": true,
"description": "Full storage row for the workstream (state, kind, parent_ws_id, etc.).",
"title": "Persisted",
"type": "object"
},
"live": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Live in-flight counters (state, tokens, activity, pending_approval) when the owning node returns them; null on degrade.",
"title": "Live"
},
"messages": {
"description": "Tail of the workstream's reconstructed message history.",
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Messages",
"type": "array"
}
},
"required": [
"persisted"
],
"title": "ClusterWsDetailResponse",
"type": "object"
},
"ConsoleCreateWsRequest": {
"properties": {
"node_id": {
"default": "",
"description": "Target node: specific ID, 'auto', 'pool', or empty for auto",
"title": "Node Id",
"type": "string"
},
"name": {
"default": "",
"description": "Workstream name (auto-generated if empty)",
"title": "Name",
"type": "string"
},
"model": {
"default": "",
"description": "Model alias from node registry",
"title": "Model",
"type": "string"
},
"initial_message": {
"default": "",
"description": "Optional first message sent after creation",
"title": "Initial Message",
"type": "string"
},
"skill": {
"default": "",
"description": "Skill name (replaces default skills)",
"title": "Skill",
"type": "string"
},
"resume_ws": {
"default": "",
"description": "Workstream ID to resume (loads previous conversation)",
"title": "Resume Ws",
"type": "string"
},
"judge_model": {
"default": "",
"description": "Override judge model alias for this workstream",
"title": "Judge Model",
"type": "string"
}
},
"title": "ConsoleCreateWsRequest",
"type": "object"
},
"ConsoleCreateWsResponse": {
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"correlation_id": {
"default": "",
"title": "Correlation Id",
"type": "string"
},
"target_node": {
"default": "",
"title": "Target Node",
"type": "string"
}
},
"title": "ConsoleCreateWsResponse",
"type": "object"
},
"ConsoleHealthResponse": {
"properties": {
"status": {
"default": "ok",
"examples": [
"ok"
],
"title": "Status",
"type": "string"
},
"service": {
"default": "turnstone-console",
"title": "Service",
"type": "string"
},
"nodes": {
"default": 0,
"title": "Nodes",
"type": "integer"
},
"workstreams": {
"default": 0,
"title": "Workstreams",
"type": "integer"
},
"version_drift": {
"default": false,
"title": "Version Drift",
"type": "boolean"
},
"versions": {
"default": [],
"items": {
"type": "string"
},
"title": "Versions",
"type": "array"
}
},
"title": "ConsoleHealthResponse",
"type": "object"
},
"CoordinatorApproveRequest": {
"description": "Body for POST /v1/api/coordinator/{ws_id}/approve.",
"properties": {
"approved": {
"description": "True approves the pending tool call(s); False denies.",
"title": "Approved",
"type": "boolean"
},
"feedback": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human feedback string forwarded to the model.",
"title": "Feedback"
},
"always": {
"default": false,
"description": "When approved=True, also adds the pending tool name(s) to the session's auto-approve set so subsequent calls of the same tool skip the prompt.",
"title": "Always",
"type": "boolean"
}
},
"required": [
"approved"
],
"title": "CoordinatorApproveRequest",
"type": "object"
},
"CoordinatorChildInfo": {
"description": "Per-row shape in the coordinator children listing.",
"properties": {
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"node_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Node Id"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "State"
},
"created": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Created"
},
"updated": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Updated"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Kind"
},
"parent_ws_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Parent Ws Id"
},
"skill_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Skill Id"
},
"skill_version": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Skill Version"
}
},
"required": [
"ws_id"
],
"title": "CoordinatorChildInfo",
"type": "object"
},
"CoordinatorChildrenResponse": {
"description": "Response body for GET /v1/api/coordinator/{ws_id}/children.",
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/CoordinatorChildInfo"
},
"title": "Items",
"type": "array"
},
"truncated": {
"default": false,
"description": "True when the storage page filled the cap; more rows may exist.",
"title": "Truncated",
"type": "boolean"
}
},
"title": "CoordinatorChildrenResponse",
"type": "object"
},
"CoordinatorCreateRequest": {
"description": "Body for POST /v1/api/coordinator/new.",
"properties": {
"name": {
"default": "",
"description": "Optional display name; auto-generated when empty.",
"title": "Name",
"type": "string"
},
"skill": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional skill name to apply to the coordinator session.",
"title": "Skill"
},
"initial_message": {
"default": "",
"description": "Optional first user message dispatched to the new coordinator session.",
"title": "Initial Message",
"type": "string"
}
},
"title": "CoordinatorCreateRequest",
"type": "object"
},
"CoordinatorCreateResponse": {
"description": "Response body for POST /v1/api/coordinator/new (201).",
"properties": {
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"ws_id",
"name"
],
"title": "CoordinatorCreateResponse",
"type": "object"
},
"CoordinatorDetailResponse": {
"description": "Response body for GET /v1/api/coordinator/{ws_id}.",
"properties": {
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"state": {
"title": "State",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "string"
},
"kind": {
"default": "coordinator",
"title": "Kind",
"type": "string"
}
},
"required": [
"ws_id",
"name",
"state",
"user_id"
],
"title": "CoordinatorDetailResponse",
"type": "object"
},
"CoordinatorHistoryResponse": {
"description": "Response body for GET /v1/api/coordinator/{ws_id}/history.",
"properties": {
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"messages": {
"description": "Tail of the coordinator's reconstructed message history (provider-fidelity OpenAI-like shape). Bounded by the ``limit`` query parameter (default 100, max 500).",
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Messages",
"type": "array"
}
},
"required": [
"ws_id"
],
"title": "CoordinatorHistoryResponse",
"type": "object"
},
"CoordinatorInfo": {
"description": "Per-coordinator row in the list response.",
"properties": {
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"state": {
"title": "State",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "string"
}
},
"required": [
"ws_id",
"name",
"state",
"user_id"
],
"title": "CoordinatorInfo",
"type": "object"
},
"CoordinatorListResponse": {
"description": "Response body for GET /v1/api/coordinator.",
"properties": {
"coordinators": {
"items": {
"$ref": "#/components/schemas/CoordinatorInfo"
},
"title": "Coordinators",
"type": "array"
}
},
"title": "CoordinatorListResponse",
"type": "object"
},
"CoordinatorOpenResponse": {
"description": "Response body for POST /v1/api/coordinator/{ws_id}/open.",
"properties": {
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"already_loaded": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True when the coordinator was already in memory; absent after a fresh rehydrate.",
"title": "Already Loaded"
}
},
"required": [
"ws_id",
"name"
],
"title": "CoordinatorOpenResponse",
"type": "object"
},
"CoordinatorRestrictRequest": {
"description": "Body for POST /v1/api/coordinator/{ws_id}/restrict.",
"properties": {
"revoke": {
"description": "Tool names to add to the session's revoked set. Once revoked the coordinator cannot invoke the named tools on subsequent turns without closing and re-opening the session.",
"items": {
"type": "string"
},
"title": "Revoke",
"type": "array"
}
},
"required": [
"revoke"
],
"title": "CoordinatorRestrictRequest",
"type": "object"
},
"CoordinatorRestrictResponse": {
"description": "Response body for POST /v1/api/coordinator/{ws_id}/restrict.",
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"revoked_tools": {
"description": "Full post-revocation set of revoked tool names.",
"items": {
"type": "string"
},
"title": "Revoked Tools",
"type": "array"
}
},
"required": [
"revoked_tools"
],
"title": "CoordinatorRestrictResponse",
"type": "object"
},
"CoordinatorSendRequest": {
"description": "Body for POST /v1/api/coordinator/{ws_id}/send.",
"properties": {
"message": {
"description": "User message to queue onto the coordinator's worker.",
"title": "Message",
"type": "string"
}
},
"required": [
"message"
],
"title": "CoordinatorSendRequest",
"type": "object"
},
"CoordinatorStopCascadeResponse": {
"description": "Response body for POST /v1/api/coordinator/{ws_id}/stop_cascade.",
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"cancelled": {
"description": "Child ws_ids that accepted the cancel dispatch.",
"items": {
"type": "string"
},
"title": "Cancelled",
"type": "array"
},
"failed": {
"description": "Child ws_ids whose cancel dispatch returned an error other than an already-gone 404 \u2014 the cascade continues on per-child failure so a single unreachable node doesn't abort the whole batch.",
"items": {
"type": "string"
},
"title": "Failed",
"type": "array"
},
"skipped": {
"description": "Child ws_ids that returned 404 on cancel (already gone). Reported separately from ``failed`` so operators can distinguish already-done from dispatch-broken.",
"items": {
"type": "string"
},
"title": "Skipped",
"type": "array"
}
},
"title": "CoordinatorStopCascadeResponse",
"type": "object"
},
"CoordinatorTaskInfo": {
"description": "Per-task row in the coordinator's task envelope.",
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"title": {
"title": "Title",
"type": "string"
},
"status": {
"description": "One of: pending / in_progress / done / blocked.",
"title": "Status",
"type": "string"
},
"child_ws_id": {
"default": "",
"title": "Child Ws Id",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
},
"updated": {
"title": "Updated",
"type": "string"
}
},
"required": [
"id",
"title",
"status",
"created",
"updated"
],
"title": "CoordinatorTaskInfo",
"type": "object"
},
"CoordinatorTasksResponse": {
"description": "Response body for GET /v1/api/coordinator/{ws_id}/tasks.\n\nMirrors the envelope the ``task_list(action='list')`` model tool returns.",
"properties": {
"version": {
"default": 1,
"title": "Version",
"type": "integer"
},
"tasks": {
"items": {
"$ref": "#/components/schemas/CoordinatorTaskInfo"
},
"title": "Tasks",
"type": "array"
}
},
"title": "CoordinatorTasksResponse",
"type": "object"
},
"CoordinatorTrustRequest": {
"description": "Body for POST /v1/api/coordinator/{ws_id}/trust.",
"properties": {
"send": {
"description": "When true, ``send_to_workstream`` calls that target a ws_id in the coordinator's own subtree skip the approval prompt. Foreign ws_ids continue to require approval \u2014 trust only relaxes the guard for work the orchestrator itself spawned.",
"title": "Send",
"type": "boolean"
}
},
"required": [
"send"
],
"title": "CoordinatorTrustRequest",
"type": "object"
},
"CoordinatorTrustResponse": {
"description": "Response body for POST /v1/api/coordinator/{ws_id}/trust.",
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"trust_send": {
"description": "Post-toggle value of the flag.",
"title": "Trust Send",
"type": "boolean"
}
},
"required": [
"trust_send"
],
"title": "CoordinatorTrustResponse",
"type": "object"
},
"CreateScheduleRequest": {
"description": "POST /v1/api/admin/schedules request body.",
"properties": {
"name": {
"description": "Human-readable schedule name",
"title": "Name",
"type": "string"
},
"description": {
"default": "",
"description": "Optional description",
"title": "Description",
"type": "string"
},
"schedule_type": {
"description": "'cron' or 'at'",
"title": "Schedule Type",
"type": "string"
},
"cron_expr": {
"default": "",
"description": "Cron expression (when schedule_type='cron')",
"title": "Cron Expr",
"type": "string"
},
"at_time": {
"default": "",
"description": "ISO8601 timestamp (when schedule_type='at')",
"title": "At Time",
"type": "string"
},
"target_mode": {
"default": "auto",
"description": "auto, pool, all, or specific node_id",
"title": "Target Mode",
"type": "string"
},
"model": {
"default": "",
"description": "Model alias for the workstream",
"title": "Model",
"type": "string"
},
"initial_message": {
"description": "Message sent to the new workstream",
"title": "Initial Message",
"type": "string"
},
"auto_approve": {
"default": false,
"title": "Auto Approve",
"type": "boolean"
},
"auto_approve_tools": {
"items": {
"type": "string"
},
"title": "Auto Approve Tools",
"type": "array"
},
"skill": {
"default": "",
"description": "Skill name (replaces default skills)",
"title": "Skill",
"type": "string"
},
"notify_targets": {
"description": "Notification targets on completion (channel_type + channel_id/user_id)",
"items": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"title": "Notify Targets",
"type": "array"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"name",
"schedule_type",
"initial_message"
],
"title": "CreateScheduleRequest",
"type": "object"
},
"UpdateScheduleRequest": {
"description": "PUT /v1/api/admin/schedules/{task_id} request body (partial update).",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"schedule_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Schedule Type"
},
"cron_expr": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Cron Expr"
},
"at_time": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "At Time"
},
"target_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Target Mode"
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Model"
},
"initial_message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Initial Message"
},
"auto_approve": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Auto Approve"
},
"auto_approve_tools": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Auto Approve Tools"
},
"skill": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Skill"
},
"notify_targets": {
"anyOf": [
{
"items": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Notify Targets"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Enabled"
}
},
"title": "UpdateScheduleRequest",
"type": "object"
},
"ScheduleInfo": {
"description": "Scheduled task details.",
"properties": {
"task_id": {
"title": "Task Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"schedule_type": {
"title": "Schedule Type",
"type": "string"
},
"cron_expr": {
"default": "",
"title": "Cron Expr",
"type": "string"
},
"at_time": {
"default": "",
"title": "At Time",
"type": "string"
},
"target_mode": {
"default": "auto",
"title": "Target Mode",
"type": "string"
},
"model": {
"default": "",
"title": "Model",
"type": "string"
},
"initial_message": {
"title": "Initial Message",
"type": "string"
},
"auto_approve": {
"default": false,
"title": "Auto Approve",
"type": "boolean"
},
"auto_approve_tools": {
"items": {
"type": "string"
},
"title": "Auto Approve Tools",
"type": "array"
},
"skill": {
"default": "",
"title": "Skill",
"type": "string"
},
"notify_targets": {
"items": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"title": "Notify Targets",
"type": "array"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"created_by": {
"default": "",
"title": "Created By",
"type": "string"
},
"last_run": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Run"
},
"next_run": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Run"
},
"created": {
"default": "",
"title": "Created",
"type": "string"
},
"updated": {
"default": "",
"title": "Updated",
"type": "string"
}
},
"required": [
"task_id",
"name",
"schedule_type",
"initial_message"
],
"title": "ScheduleInfo",
"type": "object"
},
"ListSchedulesResponse": {
"description": "GET /v1/api/admin/schedules response.",
"properties": {
"schedules": {
"items": {
"$ref": "#/components/schemas/ScheduleInfo"
},
"title": "Schedules",
"type": "array"
}
},
"required": [
"schedules"
],
"title": "ListSchedulesResponse",
"type": "object"
},
"ListScheduleRunsResponse": {
"description": "GET /v1/api/admin/schedules/{task_id}/runs response.",
"properties": {
"runs": {
"items": {
"$ref": "#/components/schemas/ScheduleRunInfo"
},
"title": "Runs",
"type": "array"
}
},
"required": [
"runs"
],
"title": "ListScheduleRunsResponse",
"type": "object"
},
"ScheduleRunInfo": {
"description": "Single execution record for a scheduled task.",
"properties": {
"run_id": {
"title": "Run Id",
"type": "string"
},
"task_id": {
"title": "Task Id",
"type": "string"
},
"node_id": {
"default": "",
"title": "Node Id",
"type": "string"
},
"ws_id": {
"default": "",
"title": "Ws Id",
"type": "string"
},
"correlation_id": {
"default": "",
"title": "Correlation Id",
"type": "string"
},
"started": {
"title": "Started",
"type": "string"
},
"status": {
"default": "dispatched",
"title": "Status",
"type": "string"
},
"error": {
"default": "",
"title": "Error",
"type": "string"
}
},
"required": [
"run_id",
"task_id",
"started"
],
"title": "ScheduleRunInfo",
"type": "object"
},
"RoleInfo": {
"properties": {
"role_id": {
"title": "Role Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"display_name": {
"title": "Display Name",
"type": "string"
},
"permissions": {
"title": "Permissions",
"type": "string"
},
"builtin": {
"title": "Builtin",
"type": "boolean"
},
"org_id": {
"title": "Org Id",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
},
"updated": {
"title": "Updated",
"type": "string"
}
},
"required": [
"role_id",
"name",
"display_name",
"permissions",
"builtin",
"org_id",
"created",
"updated"
],
"title": "RoleInfo",
"type": "object"
},
"CreateRoleRequest": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"display_name": {
"default": "",
"title": "Display Name",
"type": "string"
},
"permissions": {
"default": "read",
"title": "Permissions",
"type": "string"
}
},
"required": [
"name"
],
"title": "CreateRoleRequest",
"type": "object"
},
"UpdateRoleRequest": {
"properties": {
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Display Name"
},
"permissions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Permissions"
}
},
"title": "UpdateRoleRequest",
"type": "object"
},
"ListRolesResponse": {
"properties": {
"roles": {
"items": {
"$ref": "#/components/schemas/RoleInfo"
},
"title": "Roles",
"type": "array"
}
},
"required": [
"roles"
],
"title": "ListRolesResponse",
"type": "object"
},
"AssignRoleRequest": {
"properties": {
"role_id": {
"title": "Role Id",
"type": "string"
}
},
"required": [
"role_id"
],
"title": "AssignRoleRequest",
"type": "object"
},
"UserRoleInfo": {
"properties": {
"role_id": {
"title": "Role Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"display_name": {
"title": "Display Name",
"type": "string"
},
"permissions": {
"title": "Permissions",
"type": "string"
},
"builtin": {
"title": "Builtin",
"type": "boolean"
},
"org_id": {
"title": "Org Id",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
},
"updated": {
"title": "Updated",
"type": "string"
},
"assigned_by": {
"title": "Assigned By",
"type": "string"
},
"assignment_created": {
"title": "Assignment Created",
"type": "string"
}
},
"required": [
"role_id",
"name",
"display_name",
"permissions",
"builtin",
"org_id",
"created",
"updated",
"assigned_by",
"assignment_created"
],
"title": "UserRoleInfo",
"type": "object"
},
"ListUserRolesResponse": {
"properties": {
"roles": {
"items": {
"$ref": "#/components/schemas/UserRoleInfo"
},
"title": "Roles",
"type": "array"
}
},
"required": [
"roles"
],
"title": "ListUserRolesResponse",
"type": "object"
},
"OrgInfo": {
"properties": {
"org_id": {
"title": "Org Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"display_name": {
"title": "Display Name",
"type": "string"
},
"settings": {
"title": "Settings",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
},
"updated": {
"title": "Updated",
"type": "string"
}
},
"required": [
"org_id",
"name",
"display_name",
"settings",
"created",
"updated"
],
"title": "OrgInfo",
"type": "object"
},
"UpdateOrgRequest": {
"properties": {
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Display Name"
},
"settings": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Settings"
}
},
"title": "UpdateOrgRequest",
"type": "object"
},
"ListOrgsResponse": {
"properties": {
"orgs": {
"items": {
"$ref": "#/components/schemas/OrgInfo"
},
"title": "Orgs",
"type": "array"
}
},
"required": [
"orgs"
],
"title": "ListOrgsResponse",
"type": "object"
},
"ToolPolicyInfo": {
"properties": {
"policy_id": {
"title": "Policy Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"tool_pattern": {
"title": "Tool Pattern",
"type": "string"
},
"action": {
"title": "Action",
"type": "string"
},
"priority": {
"title": "Priority",
"type": "integer"
},
"org_id": {
"title": "Org Id",
"type": "string"
},
"enabled": {
"title": "Enabled",
"type": "boolean"
},
"created_by": {
"title": "Created By",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
},
"updated": {
"title": "Updated",
"type": "string"
}
},
"required": [
"policy_id",
"name",
"tool_pattern",
"action",
"priority",
"org_id",
"enabled",
"created_by",
"created",
"updated"
],
"title": "ToolPolicyInfo",
"type": "object"
},
"CreateToolPolicyRequest": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"tool_pattern": {
"title": "Tool Pattern",
"type": "string"
},
"action": {
"title": "Action",
"type": "string"
},
"priority": {
"default": 0,
"title": "Priority",
"type": "integer"
},
"org_id": {
"default": "",
"title": "Org Id",
"type": "string"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"name",
"tool_pattern",
"action"
],
"title": "CreateToolPolicyRequest",
"type": "object"
},
"UpdateToolPolicyRequest": {
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"tool_pattern": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Tool Pattern"
},
"action": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Action"
},
"priority": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Priority"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Enabled"
}
},
"title": "UpdateToolPolicyRequest",
"type": "object"
},
"ListToolPoliciesResponse": {
"properties": {
"policies": {
"items": {
"$ref": "#/components/schemas/ToolPolicyInfo"
},
"title": "Policies",
"type": "array"
}
},
"required": [
"policies"
],
"title": "ListToolPoliciesResponse",
"type": "object"
},
"UsageBreakdownItem": {
"properties": {
"key": {
"default": "",
"title": "Key",
"type": "string"
},
"prompt_tokens": {
"default": 0,
"title": "Prompt Tokens",
"type": "integer"
},
"completion_tokens": {
"default": 0,
"title": "Completion Tokens",
"type": "integer"
},
"tool_calls_count": {
"default": 0,
"title": "Tool Calls Count",
"type": "integer"
},
"cache_creation_tokens": {
"default": 0,
"title": "Cache Creation Tokens",
"type": "integer"
},
"cache_read_tokens": {
"default": 0,
"title": "Cache Read Tokens",
"type": "integer"
}
},
"title": "UsageBreakdownItem",
"type": "object"
},
"UsageResponse": {
"properties": {
"summary": {
"items": {
"$ref": "#/components/schemas/UsageBreakdownItem"
},
"title": "Summary",
"type": "array"
},
"breakdown": {
"items": {
"$ref": "#/components/schemas/UsageBreakdownItem"
},
"title": "Breakdown",
"type": "array"
}
},
"required": [
"summary",
"breakdown"
],
"title": "UsageResponse",
"type": "object"
},
"AuditEventInfo": {
"properties": {
"event_id": {
"title": "Event Id",
"type": "string"
},
"timestamp": {
"title": "Timestamp",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "string"
},
"action": {
"title": "Action",
"type": "string"
},
"resource_type": {
"title": "Resource Type",
"type": "string"
},
"resource_id": {
"title": "Resource Id",
"type": "string"
},
"detail": {
"title": "Detail",
"type": "string"
},
"ip_address": {
"title": "Ip Address",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
}
},
"required": [
"event_id",
"timestamp",
"user_id",
"action",
"resource_type",
"resource_id",
"detail",
"ip_address",
"created"
],
"title": "AuditEventInfo",
"type": "object"
},
"ListAuditEventsResponse": {
"properties": {
"events": {
"items": {
"$ref": "#/components/schemas/AuditEventInfo"
},
"title": "Events",
"type": "array"
}
},
"required": [
"events"
],
"title": "ListAuditEventsResponse",
"type": "object"
},
"VerdictInfo": {
"description": "Intent validation verdict.",
"properties": {
"verdict_id": {
"title": "Verdict Id",
"type": "string"
},
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"call_id": {
"title": "Call Id",
"type": "string"
},
"func_name": {
"title": "Func Name",
"type": "string"
},
"func_args": {
"default": "",
"title": "Func Args",
"type": "string"
},
"intent_summary": {
"title": "Intent Summary",
"type": "string"
},
"risk_level": {
"title": "Risk Level",
"type": "string"
},
"confidence": {
"title": "Confidence",
"type": "number"
},
"recommendation": {
"title": "Recommendation",
"type": "string"
},
"reasoning": {
"title": "Reasoning",
"type": "string"
},
"evidence": {
"default": "[]",
"title": "Evidence",
"type": "string"
},
"tier": {
"title": "Tier",
"type": "string"
},
"judge_model": {
"default": "",
"title": "Judge Model",
"type": "string"
},
"user_decision": {
"default": "",
"title": "User Decision",
"type": "string"
},
"latency_ms": {
"default": 0,
"title": "Latency Ms",
"type": "integer"
},
"created": {
"title": "Created",
"type": "string"
}
},
"required": [
"verdict_id",
"ws_id",
"call_id",
"func_name",
"intent_summary",
"risk_level",
"confidence",
"recommendation",
"reasoning",
"tier",
"created"
],
"title": "VerdictInfo",
"type": "object"
},
"ListVerdictsResponse": {
"description": "Response for verdict listing.",
"properties": {
"verdicts": {
"items": {
"$ref": "#/components/schemas/VerdictInfo"
},
"title": "Verdicts",
"type": "array"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"verdicts",
"total"
],
"title": "ListVerdictsResponse",
"type": "object"
},
"OutputAssessmentInfo": {
"description": "Output guard assessment.",
"properties": {
"assessment_id": {
"title": "Assessment Id",
"type": "string"
},
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"call_id": {
"title": "Call Id",
"type": "string"
},
"func_name": {
"title": "Func Name",
"type": "string"
},
"flags": {
"default": "[]",
"title": "Flags",
"type": "string"
},
"risk_level": {
"default": "none",
"title": "Risk Level",
"type": "string"
},
"annotations": {
"default": "[]",
"title": "Annotations",
"type": "string"
},
"output_length": {
"default": 0,
"title": "Output Length",
"type": "integer"
},
"redacted": {
"default": 0,
"title": "Redacted",
"type": "integer"
},
"created": {
"title": "Created",
"type": "string"
}
},
"required": [
"assessment_id",
"ws_id",
"call_id",
"func_name",
"created"
],
"title": "OutputAssessmentInfo",
"type": "object"
},
"ListOutputAssessmentsResponse": {
"description": "Response for output assessment listing.",
"properties": {
"assessments": {
"items": {
"$ref": "#/components/schemas/OutputAssessmentInfo"
},
"title": "Assessments",
"type": "array"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"assessments",
"total"
],
"title": "ListOutputAssessmentsResponse",
"type": "object"
},
"AdminMemoryInfo": {
"properties": {
"memory_id": {
"title": "Memory Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"type": {
"title": "Type",
"type": "string"
},
"scope": {
"title": "Scope",
"type": "string"
},
"scope_id": {
"default": "",
"title": "Scope Id",
"type": "string"
},
"content": {
"title": "Content",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
},
"updated": {
"title": "Updated",
"type": "string"
},
"last_accessed": {
"default": "",
"title": "Last Accessed",
"type": "string"
},
"access_count": {
"default": 0,
"title": "Access Count",
"type": "integer"
}
},
"required": [
"memory_id",
"name",
"type",
"scope",
"content",
"created",
"updated"
],
"title": "AdminMemoryInfo",
"type": "object"
},
"ListAdminMemoriesResponse": {
"properties": {
"memories": {
"items": {
"$ref": "#/components/schemas/AdminMemoryInfo"
},
"title": "Memories",
"type": "array"
},
"total": {
"default": 0,
"title": "Total",
"type": "integer"
}
},
"required": [
"memories"
],
"title": "ListAdminMemoriesResponse",
"type": "object"
},
"SettingInfo": {
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"source": {
"default": "default",
"title": "Source",
"type": "string"
},
"type": {
"default": "str",
"title": "Type",
"type": "string"
},
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"section": {
"default": "",
"title": "Section",
"type": "string"
},
"is_secret": {
"default": false,
"title": "Is Secret",
"type": "boolean"
},
"node_id": {
"default": "",
"title": "Node Id",
"type": "string"
},
"changed_by": {
"default": "",
"title": "Changed By",
"type": "string"
},
"updated": {
"default": "",
"title": "Updated",
"type": "string"
},
"restart_required": {
"default": false,
"title": "Restart Required",
"type": "boolean"
}
},
"required": [
"key"
],
"title": "SettingInfo",
"type": "object"
},
"ListSettingsResponse": {
"properties": {
"settings": {
"items": {
"$ref": "#/components/schemas/SettingInfo"
},
"title": "Settings",
"type": "array"
}
},
"required": [
"settings"
],
"title": "ListSettingsResponse",
"type": "object"
},
"SettingSchemaInfo": {
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"type": {
"title": "Type",
"type": "string"
},
"default": {
"default": null,
"title": "Default"
},
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"section": {
"default": "",
"title": "Section",
"type": "string"
},
"is_secret": {
"default": false,
"title": "Is Secret",
"type": "boolean"
},
"min_value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Min Value"
},
"max_value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Value"
},
"choices": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Choices"
},
"restart_required": {
"default": false,
"title": "Restart Required",
"type": "boolean"
}
},
"required": [
"key",
"type"
],
"title": "SettingSchemaInfo",
"type": "object"
},
"ListSettingSchemaResponse": {
"properties": {
"schema": {
"items": {
"$ref": "#/components/schemas/SettingSchemaInfo"
},
"title": "Schema",
"type": "array"
}
},
"required": [
"schema"
],
"title": "ListSettingSchemaResponse",
"type": "object"
},
"UpdateSettingRequest": {
"properties": {
"value": {
"title": "Value"
},
"node_id": {
"default": "",
"title": "Node Id",
"type": "string"
}
},
"required": [
"value"
],
"title": "UpdateSettingRequest",
"type": "object"
},
"McpServerDetail": {
"properties": {
"server_id": {
"title": "Server Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"transport": {
"title": "Transport",
"type": "string"
},
"command": {
"default": "",
"title": "Command",
"type": "string"
},
"args": {
"default": "[]",
"title": "Args",
"type": "string"
},
"url": {
"default": "",
"title": "Url",
"type": "string"
},
"headers": {
"default": "{}",
"title": "Headers",
"type": "string"
},
"env": {
"default": "{}",
"title": "Env",
"type": "string"
},
"auto_approve": {
"default": false,
"title": "Auto Approve",
"type": "boolean"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"created_by": {
"default": "",
"title": "Created By",
"type": "string"
},
"registry_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Registry Name"
},
"registry_version": {
"default": "",
"title": "Registry Version",
"type": "string"
},
"registry_meta": {
"default": "{}",
"title": "Registry Meta",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
},
"updated": {
"title": "Updated",
"type": "string"
},
"status": {
"additionalProperties": {
"$ref": "#/components/schemas/McpServerStatus"
},
"title": "Status",
"type": "object"
},
"source": {
"default": "",
"title": "Source",
"type": "string"
}
},
"required": [
"server_id",
"name",
"transport",
"created",
"updated"
],
"title": "McpServerDetail",
"type": "object"
},
"McpServerStatus": {
"properties": {
"connected": {
"default": false,
"title": "Connected",
"type": "boolean"
},
"tools": {
"default": 0,
"title": "Tools",
"type": "integer"
},
"resources": {
"default": 0,
"title": "Resources",
"type": "integer"
},
"prompts": {
"default": 0,
"title": "Prompts",
"type": "integer"
},
"error": {
"default": "",
"title": "Error",
"type": "string"
},
"transport": {
"default": "",
"title": "Transport",
"type": "string"
},
"command": {
"default": "",
"title": "Command",
"type": "string"
},
"url": {
"default": "",
"title": "Url",
"type": "string"
}
},
"title": "McpServerStatus",
"type": "object"
},
"CreateMcpServerRequest": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"transport": {
"title": "Transport",
"type": "string"
},
"command": {
"default": "",
"title": "Command",
"type": "string"
},
"args": {
"default": [],
"items": {
"type": "string"
},
"title": "Args",
"type": "array"
},
"url": {
"default": "",
"title": "Url",
"type": "string"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"title": "Headers",
"type": "object"
},
"env": {
"additionalProperties": {
"type": "string"
},
"title": "Env",
"type": "object"
},
"auto_approve": {
"default": false,
"title": "Auto Approve",
"type": "boolean"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"name",
"transport"
],
"title": "CreateMcpServerRequest",
"type": "object"
},
"UpdateMcpServerRequest": {
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"transport": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Transport"
},
"command": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Command"
},
"args": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Args"
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Url"
},
"headers": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Headers"
},
"env": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Env"
},
"auto_approve": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Auto Approve"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Enabled"
}
},
"title": "UpdateMcpServerRequest",
"type": "object"
},
"ListMcpServersResponse": {
"properties": {
"servers": {
"items": {
"$ref": "#/components/schemas/McpServerDetail"
},
"title": "Servers",
"type": "array"
}
},
"required": [
"servers"
],
"title": "ListMcpServersResponse",
"type": "object"
},
"ImportMcpConfigRequest": {
"properties": {
"config": {
"additionalProperties": true,
"description": "JSON config object with mcpServers key",
"title": "Config",
"type": "object"
}
},
"required": [
"config"
],
"title": "ImportMcpConfigRequest",
"type": "object"
},
"ImportMcpConfigResponse": {
"properties": {
"imported": {
"default": [],
"items": {
"type": "string"
},
"title": "Imported",
"type": "array"
},
"skipped": {
"default": [],
"items": {
"type": "string"
},
"title": "Skipped",
"type": "array"
},
"errors": {
"default": [],
"items": {
"type": "string"
},
"title": "Errors",
"type": "array"
}
},
"title": "ImportMcpConfigResponse",
"type": "object"
},
"McpReloadResponse": {
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"results": {
"additionalProperties": true,
"title": "Results",
"type": "object"
}
},
"title": "McpReloadResponse",
"type": "object"
},
"ModelDefinitionInfo": {
"properties": {
"definition_id": {
"title": "Definition Id",
"type": "string"
},
"alias": {
"title": "Alias",
"type": "string"
},
"model": {
"title": "Model",
"type": "string"
},
"provider": {
"default": "openai",
"title": "Provider",
"type": "string"
},
"base_url": {
"default": "",
"title": "Base Url",
"type": "string"
},
"api_key": {
"default": "",
"title": "Api Key",
"type": "string"
},
"context_window": {
"default": 32768,
"title": "Context Window",
"type": "integer"
},
"capabilities": {
"default": "{}",
"title": "Capabilities",
"type": "string"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"temperature": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Temperature"
},
"max_tokens": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Tokens"
},
"reasoning_effort": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reasoning Effort"
},
"source": {
"default": "",
"title": "Source",
"type": "string"
},
"created_by": {
"default": "",
"title": "Created By",
"type": "string"
},
"created": {
"default": "",
"title": "Created",
"type": "string"
},
"updated": {
"default": "",
"title": "Updated",
"type": "string"
}
},
"required": [
"definition_id",
"alias",
"model"
],
"title": "ModelDefinitionInfo",
"type": "object"
},
"CreateModelDefinitionRequest": {
"properties": {
"alias": {
"title": "Alias",
"type": "string"
},
"model": {
"title": "Model",
"type": "string"
},
"provider": {
"default": "openai",
"title": "Provider",
"type": "string"
},
"base_url": {
"default": "",
"title": "Base Url",
"type": "string"
},
"api_key": {
"default": "",
"title": "Api Key",
"type": "string"
},
"context_window": {
"default": 32768,
"title": "Context Window",
"type": "integer"
},
"capabilities": {
"additionalProperties": true,
"title": "Capabilities",
"type": "object"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"temperature": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Temperature"
},
"max_tokens": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Tokens"
},
"reasoning_effort": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reasoning Effort"
}
},
"required": [
"alias",
"model"
],
"title": "CreateModelDefinitionRequest",
"type": "object"
},
"UpdateModelDefinitionRequest": {
"properties": {
"alias": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Alias"
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Model"
},
"provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Provider"
},
"base_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Base Url"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Api Key"
},
"context_window": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Context Window"
},
"capabilities": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Capabilities"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Enabled"
},
"temperature": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Temperature"
},
"max_tokens": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Tokens"
},
"reasoning_effort": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reasoning Effort"
}
},
"title": "UpdateModelDefinitionRequest",
"type": "object"
},
"ListModelDefinitionsResponse": {
"properties": {
"models": {
"items": {
"$ref": "#/components/schemas/ModelDefinitionInfo"
},
"title": "Models",
"type": "array"
}
},
"required": [
"models"
],
"title": "ListModelDefinitionsResponse",
"type": "object"
},
"ModelReloadResponse": {
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"results": {
"additionalProperties": true,
"title": "Results",
"type": "object"
}
},
"title": "ModelReloadResponse",
"type": "object"
},
"DetectModelRequest": {
"properties": {
"provider": {
"default": "openai",
"title": "Provider",
"type": "string"
},
"base_url": {
"default": "",
"title": "Base Url",
"type": "string"
},
"api_key": {
"default": "",
"title": "Api Key",
"type": "string"
},
"model": {
"default": "",
"title": "Model",
"type": "string"
},
"definition_id": {
"default": "",
"title": "Definition Id",
"type": "string"
}
},
"title": "DetectModelRequest",
"type": "object"
},
"DetectModelResponse": {
"properties": {
"reachable": {
"default": false,
"title": "Reachable",
"type": "boolean"
},
"model_found": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Model Found"
},
"available_models": {
"items": {
"type": "string"
},
"title": "Available Models",
"type": "array"
},
"context_window": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Context Window"
},
"server_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Server Type"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
}
},
"title": "DetectModelResponse",
"type": "object"
},
"ModelCapabilitiesResponse": {
"properties": {
"model": {
"title": "Model",
"type": "string"
},
"provider": {
"title": "Provider",
"type": "string"
},
"known": {
"default": false,
"title": "Known",
"type": "boolean"
},
"capabilities": {
"additionalProperties": true,
"title": "Capabilities",
"type": "object"
}
},
"required": [
"model",
"provider"
],
"title": "ModelCapabilitiesResponse",
"type": "object"
},
"KnownModelsResponse": {
"properties": {
"provider": {
"title": "Provider",
"type": "string"
},
"models": {
"items": {
"type": "string"
},
"title": "Models",
"type": "array"
}
},
"required": [
"provider"
],
"title": "KnownModelsResponse",
"type": "object"
},
"AvailableModelInfo": {
"properties": {
"alias": {
"title": "Alias",
"type": "string"
},
"model": {
"title": "Model",
"type": "string"
},
"provider": {
"title": "Provider",
"type": "string"
}
},
"required": [
"alias",
"model",
"provider"
],
"title": "AvailableModelInfo",
"type": "object"
},
"ListAvailableModelsResponse": {
"properties": {
"models": {
"items": {
"$ref": "#/components/schemas/AvailableModelInfo"
},
"title": "Models",
"type": "array"
},
"default_alias": {
"default": "",
"title": "Default Alias",
"type": "string"
},
"channel_default_alias": {
"default": "",
"title": "Channel Default Alias",
"type": "string"
}
},
"title": "ListAvailableModelsResponse",
"type": "object"
},
"RegistrySearchResponse": {
"properties": {
"servers": {
"items": {
"$ref": "#/components/schemas/RegistryServerInfo"
},
"title": "Servers",
"type": "array"
},
"total": {
"default": 0,
"title": "Total",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
}
},
"required": [
"servers"
],
"title": "RegistrySearchResponse",
"type": "object"
},
"RegistryPackageInfo": {
"properties": {
"registry_type": {
"default": "",
"title": "Registry Type",
"type": "string"
},
"identifier": {
"default": "",
"title": "Identifier",
"type": "string"
},
"version": {
"default": "",
"title": "Version",
"type": "string"
},
"transport_type": {
"default": "stdio",
"title": "Transport Type",
"type": "string"
},
"environment_variables": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Environment Variables",
"type": "array"
}
},
"title": "RegistryPackageInfo",
"type": "object"
},
"RegistryRemoteInfo": {
"properties": {
"type": {
"default": "streamable-http",
"title": "Type",
"type": "string"
},
"url": {
"default": "",
"title": "Url",
"type": "string"
},
"headers": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Headers",
"type": "array"
},
"variables": {
"additionalProperties": {
"additionalProperties": true,
"type": "object"
},
"title": "Variables",
"type": "object"
}
},
"title": "RegistryRemoteInfo",
"type": "object"
},
"RegistryServerInfo": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"title": {
"default": "",
"title": "Title",
"type": "string"
},
"version": {
"default": "",
"title": "Version",
"type": "string"
},
"website_url": {
"default": "",
"title": "Website Url",
"type": "string"
},
"repository": {
"additionalProperties": {
"type": "string"
},
"title": "Repository",
"type": "object"
},
"icons": {
"items": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"title": "Icons",
"type": "array"
},
"remotes": {
"items": {
"$ref": "#/components/schemas/RegistryRemoteInfo"
},
"title": "Remotes",
"type": "array"
},
"packages": {
"items": {
"$ref": "#/components/schemas/RegistryPackageInfo"
},
"title": "Packages",
"type": "array"
},
"meta": {
"additionalProperties": true,
"title": "Meta",
"type": "object"
},
"installed": {
"default": false,
"title": "Installed",
"type": "boolean"
},
"installed_server_id": {
"default": "",
"title": "Installed Server Id",
"type": "string"
},
"installed_version": {
"default": "",
"title": "Installed Version",
"type": "string"
},
"update_available": {
"default": false,
"title": "Update Available",
"type": "boolean"
}
},
"required": [
"name"
],
"title": "RegistryServerInfo",
"type": "object"
},
"RegistryInstallRequest": {
"properties": {
"registry_name": {
"title": "Registry Name",
"type": "string"
},
"source": {
"title": "Source",
"type": "string"
},
"index": {
"default": 0,
"title": "Index",
"type": "integer"
},
"name": {
"default": "",
"title": "Name",
"type": "string"
},
"variables": {
"additionalProperties": {
"type": "string"
},
"title": "Variables",
"type": "object"
},
"env": {
"additionalProperties": {
"type": "string"
},
"title": "Env",
"type": "object"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"title": "Headers",
"type": "object"
}
},
"required": [
"registry_name",
"source"
],
"title": "RegistryInstallRequest",
"type": "object"
},
"SkillDiscoverResponse": {
"properties": {
"skills": {
"items": {
"$ref": "#/components/schemas/SkillDiscoverListing"
},
"title": "Skills",
"type": "array"
}
},
"required": [
"skills"
],
"title": "SkillDiscoverResponse",
"type": "object"
},
"SkillDiscoverListing": {
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"author": {
"default": "",
"title": "Author",
"type": "string"
},
"source": {
"default": "",
"title": "Source",
"type": "string"
},
"source_url": {
"default": "",
"title": "Source Url",
"type": "string"
},
"install_count": {
"default": 0,
"title": "Install Count",
"type": "integer"
},
"tags": {
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"installed": {
"default": false,
"title": "Installed",
"type": "boolean"
},
"risk_level": {
"default": "",
"title": "Risk Level",
"type": "string"
},
"template_id": {
"default": "",
"title": "Template Id",
"type": "string"
}
},
"required": [
"id",
"name"
],
"title": "SkillDiscoverListing",
"type": "object"
},
"SkillInstallRequest": {
"properties": {
"source": {
"title": "Source",
"type": "string"
},
"skill_id": {
"default": "",
"title": "Skill Id",
"type": "string"
},
"url": {
"default": "",
"title": "Url",
"type": "string"
}
},
"required": [
"source"
],
"title": "SkillInstallRequest",
"type": "object"
},
"SkillInstallResponse": {
"properties": {
"installed": {
"items": {
"$ref": "#/components/schemas/SkillInfo"
},
"title": "Installed",
"type": "array"
},
"skipped": {
"default": [],
"items": {
"$ref": "#/components/schemas/SkillInstallSkipped"
},
"title": "Skipped",
"type": "array"
},
"total": {
"default": 0,
"title": "Total",
"type": "integer"
}
},
"required": [
"installed"
],
"title": "SkillInstallResponse",
"type": "object"
},
"SkillInfo": {
"properties": {
"template_id": {
"description": "Skill ID",
"title": "Template Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"category": {
"title": "Category",
"type": "string"
},
"content": {
"title": "Content",
"type": "string"
},
"description": {
"default": "",
"title": "Description",
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"variables": {
"default": "[]",
"title": "Variables",
"type": "string"
},
"is_default": {
"title": "Is Default",
"type": "boolean"
},
"activation": {
"default": "named",
"title": "Activation",
"type": "string"
},
"org_id": {
"title": "Org Id",
"type": "string"
},
"created_by": {
"title": "Created By",
"type": "string"
},
"origin": {
"default": "manual",
"title": "Origin",
"type": "string"
},
"mcp_server": {
"default": "",
"title": "Mcp Server",
"type": "string"
},
"readonly": {
"default": false,
"title": "Readonly",
"type": "boolean"
},
"source_url": {
"default": "",
"title": "Source Url",
"type": "string"
},
"version": {
"default": "1.0.0",
"title": "Version",
"type": "string"
},
"author": {
"default": "",
"title": "Author",
"type": "string"
},
"token_estimate": {
"default": 0,
"title": "Token Estimate",
"type": "integer"
},
"model": {
"default": "",
"title": "Model",
"type": "string"
},
"auto_approve": {
"default": false,
"title": "Auto Approve",
"type": "boolean"
},
"temperature": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Temperature"
},
"reasoning_effort": {
"default": "",
"title": "Reasoning Effort",
"type": "string"
},
"max_tokens": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Tokens"
},
"token_budget": {
"default": 0,
"title": "Token Budget",
"type": "integer"
},
"agent_max_turns": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Max Turns"
},
"notify_on_complete": {
"default": "{}",
"title": "Notify On Complete",
"type": "string"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"priority": {
"default": 0,
"title": "Priority",
"type": "integer"
},
"allowed_tools": {
"default": "[]",
"title": "Allowed Tools",
"type": "string"
},
"license": {
"default": "",
"title": "License",
"type": "string"
},
"compatibility": {
"default": "",
"title": "Compatibility",
"type": "string"
},
"kind": {
"$ref": "#/components/schemas/SkillKind",
"default": "any"
},
"risk_level": {
"default": "",
"title": "Risk Level",
"type": "string"
},
"scan_report": {
"default": "{}",
"title": "Scan Report",
"type": "string"
},
"scan_version": {
"default": "",
"title": "Scan Version",
"type": "string"
},
"resource_count": {
"default": 0,
"title": "Resource Count",
"type": "integer"
},
"created": {
"title": "Created",
"type": "string"
},
"updated": {
"title": "Updated",
"type": "string"
}
},
"required": [
"template_id",
"name",
"category",
"content",
"is_default",
"org_id",
"created_by",
"created",
"updated"
],
"title": "SkillInfo",
"type": "object"
},
"SkillInstallSkipped": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"reason": {
"title": "Reason",
"type": "string"
}
},
"required": [
"name",
"reason"
],
"title": "SkillInstallSkipped",
"type": "object"
},
"SkillKind": {
"description": "Which ``list_skills`` surface a skill row is visible on.\n\n``INTERACTIVE`` \u2014 only the interactive-session activation path sees\nthis row. ``COORDINATOR`` \u2014 only the coordinator's ``list_skills``\ntool sees this row. ``ANY`` \u2014 both sides (default for legacy rows\npredating the classifier).",
"enum": [
"interactive",
"coordinator",
"any"
],
"title": "SkillKind",
"type": "string"
},
"SkillVersionInfo": {
"properties": {
"id": {
"title": "Id",
"type": "integer"
},
"skill_id": {
"title": "Skill Id",
"type": "string"
},
"version": {
"title": "Version",
"type": "integer"
},
"snapshot": {
"title": "Snapshot",
"type": "string"
},
"changed_by": {
"title": "Changed By",
"type": "string"
},
"created": {
"title": "Created",
"type": "string"
}
},
"required": [
"id",
"skill_id",
"version",
"snapshot",
"changed_by",
"created"
],
"title": "SkillVersionInfo",
"type": "object"
},
"CreateSkillRequest": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"content": {
"title": "Content",
"type": "string"
},
"category": {
"default": "general",
"title": "Category",
"type": "string"
},
"description": {
"description": "Human-readable description surfaced by ``list_skills`` and the admin UI. Must be non-empty \u2014 catches skills registered without thinking about discoverability before they reach a model's tool-selection prompt.",
"maxLength": 1024,
"minLength": 1,
"title": "Description",
"type": "string"
},
"tags": {
"default": "[]",
"title": "Tags",
"type": "string"
},
"variables": {
"default": "[]",
"title": "Variables",
"type": "string"
},
"is_default": {
"default": false,
"title": "Is Default",
"type": "boolean"
},
"activation": {
"default": "named",
"title": "Activation",
"type": "string"
},
"org_id": {
"default": "",
"title": "Org Id",
"type": "string"
},
"author": {
"default": "",
"title": "Author",
"type": "string"
},
"version": {
"default": "1.0.0",
"title": "Version",
"type": "string"
},
"model": {
"default": "",
"title": "Model",
"type": "string"
},
"auto_approve": {
"default": false,
"title": "Auto Approve",
"type": "boolean"
},
"temperature": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Temperature"
},
"reasoning_effort": {
"default": "",
"title": "Reasoning Effort",
"type": "string"
},
"max_tokens": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Tokens"
},
"token_budget": {
"default": 0,
"title": "Token Budget",
"type": "integer"
},
"agent_max_turns": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Max Turns"
},
"notify_on_complete": {
"default": "{}",
"title": "Notify On Complete",
"type": "string"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"priority": {
"default": 0,
"title": "Priority",
"type": "integer"
},
"allowed_tools": {
"default": "[]",
"title": "Allowed Tools",
"type": "string"
},
"license": {
"default": "",
"title": "License",
"type": "string"
},
"compatibility": {
"default": "",
"title": "Compatibility",
"type": "string"
},
"kind": {
"$ref": "#/components/schemas/SkillKind",
"default": "any",
"description": "Classifier routing the skill to ``list_skills`` calls. ``interactive`` is visible only to the interactive-session activation path; ``coordinator`` is visible only to the coordinator's ``list_skills`` tool; ``any`` (default) is visible on both sides, which preserves pre-upgrade behaviour for legacy rows."
}
},
"required": [
"name",
"content",
"description"
],
"title": "CreateSkillRequest",
"type": "object"
},
"UpdateSkillRequest": {
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Category"
},
"description": {
"anyOf": [
{
"maxLength": 1024,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "When present, replaces the skill description. Must be non-empty \u2014 the admin endpoint rejects a blanking update.",
"title": "Description"
},
"tags": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Tags"
},
"variables": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Variables"
},
"is_default": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Default"
},
"activation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Activation"
},
"author": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Author"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Version"
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Model"
},
"auto_approve": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Auto Approve"
},
"temperature": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Temperature"
},
"reasoning_effort": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reasoning Effort"
},
"max_tokens": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Tokens"
},
"token_budget": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Token Budget"
},
"agent_max_turns": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Max Turns"
},
"notify_on_complete": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Notify On Complete"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Enabled"
},
"priority": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Priority"
},
"allowed_tools": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Allowed Tools"
},
"license": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "License"
},
"compatibility": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Compatibility"
},
"kind": {
"anyOf": [
{
"$ref": "#/components/schemas/SkillKind"
},
{
"type": "null"
}
],
"default": null,
"description": "When present, updates the skill's classifier. Same accepted values as ``CreateSkillRequest.kind``."
}
},
"title": "UpdateSkillRequest",
"type": "object"
},
"ListSkillsResponse": {
"properties": {
"skills": {
"items": {
"$ref": "#/components/schemas/SkillInfo"
},
"title": "Skills",
"type": "array"
}
},
"required": [
"skills"
],
"title": "ListSkillsResponse",
"type": "object"
},
"ListSkillVersionsResponse": {
"properties": {
"versions": {
"items": {
"$ref": "#/components/schemas/SkillVersionInfo"
},
"title": "Versions",
"type": "array"
}
},
"required": [
"versions"
],
"title": "ListSkillVersionsResponse",
"type": "object"
},
"SkillResourceInfo": {
"properties": {
"resource_id": {
"title": "Resource Id",
"type": "string"
},
"skill_id": {
"title": "Skill Id",
"type": "string"
},
"path": {
"title": "Path",
"type": "string"
},
"content": {
"default": "",
"title": "Content",
"type": "string"
},
"content_type": {
"default": "text/plain",
"title": "Content Type",
"type": "string"
},
"size": {
"default": 0,
"title": "Size",
"type": "integer"
},
"created": {
"title": "Created",
"type": "string"
}
},
"required": [
"resource_id",
"skill_id",
"path",
"created"
],
"title": "SkillResourceInfo",
"type": "object"
},
"CreateSkillResourceRequest": {
"properties": {
"path": {
"title": "Path",
"type": "string"
},
"content": {
"title": "Content",
"type": "string"
},
"content_type": {
"default": "text/plain",
"title": "Content Type",
"type": "string"
}
},
"required": [
"path",
"content"
],
"title": "CreateSkillResourceRequest",
"type": "object"
},
"ListSkillResourcesResponse": {
"properties": {
"resources": {
"items": {
"$ref": "#/components/schemas/SkillResourceInfo"
},
"title": "Resources",
"type": "array"
}
},
"required": [
"resources"
],
"title": "ListSkillResourcesResponse",
"type": "object"
},
"RouteResponse": {
"description": "Route lookup result \u2014 which node owns a workstream.",
"properties": {
"node_url": {
"title": "Node Url",
"type": "string"
},
"node_id": {
"title": "Node Id",
"type": "string"
}
},
"required": [
"node_url",
"node_id"
],
"title": "RouteResponse",
"type": "object"
},
"RouteCreateResponse": {
"description": "Workstream creation via the routing proxy.",
"properties": {
"ws_id": {
"default": "",
"title": "Ws Id",
"type": "string"
},
"node_url": {
"default": "",
"title": "Node Url",
"type": "string"
},
"node_id": {
"default": "",
"title": "Node Id",
"type": "string"
}
},
"title": "RouteCreateResponse",
"type": "object"
},
"SkillSummary": {
"properties": {
"name": {
"description": "Skill name",
"title": "Name",
"type": "string"
},
"category": {
"default": "",
"description": "Skill category",
"title": "Category",
"type": "string"
},
"description": {
"default": "",
"description": "Skill description for discovery",
"title": "Description",
"type": "string"
},
"tags": {
"description": "Semantic tags",
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"is_default": {
"default": false,
"description": "Whether auto-applied to all sessions",
"title": "Is Default",
"type": "boolean"
},
"activation": {
"default": "named",
"description": "Activation mode: default, named, search",
"title": "Activation",
"type": "string"
},
"origin": {
"default": "manual",
"description": "Source: manual, mcp, skills.sh, github",
"title": "Origin",
"type": "string"
},
"author": {
"default": "",
"description": "Skill author",
"title": "Author",
"type": "string"
},
"version": {
"default": "1.0.0",
"description": "Skill version",
"title": "Version",
"type": "string"
}
},
"required": [
"name"
],
"title": "SkillSummary",
"type": "object"
},
"ListSkillSummaryResponse": {
"properties": {
"skills": {
"items": {
"$ref": "#/components/schemas/SkillSummary"
},
"title": "Skills",
"type": "array"
}
},
"required": [
"skills"
],
"title": "ListSkillSummaryResponse",
"type": "object"
}
}
}
}