Files
turnstone/sdk/typescript/openapi-console.json
T
Patrick Buckley 3e5633f440 chore(sdk): regenerate OpenAPI snapshots from current specs
openapi-server.json / openapi-console.json had drifted well behind
build_server_spec() / build_console_spec() — the committed snapshots are
regenerated periodically (via sdk/typescript/scripts/generate-types.py)
rather than on every schema-changing PR, so accumulated additions (skill
parsing, pending-approval items, model-definition CRUD, etc.) had not been
captured. This resyncs both with no code changes.
2026-05-29 12:35:51 -07:00

12878 lines
333 KiB
JSON

{
"openapi": "3.1.0",
"info": {
"title": "turnstone Console API",
"version": "1.6.0a6",
"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/roles/{role_id}/effective": {
"get": {
"summary": "Get effective permissions for a role (baseline + overrides)",
"operationId": "v1_api_admin_roles_{role_id}_effective_get",
"tags": [
"Admin"
],
"parameters": [
{
"name": "role_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleEffectiveResponse"
}
}
}
},
"404": {
"description": "Error 404",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/admin/roles/{role_id}/overrides": {
"put": {
"summary": "Replace the grant/revoke override set for a builtin role",
"operationId": "v1_api_admin_roles_{role_id}_overrides_put",
"tags": [
"Admin"
],
"parameters": [
{
"name": "role_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleOverridesRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleEffectiveResponse"
}
}
}
},
"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/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/parse": {
"post": {
"summary": "Parse a SKILL.md document and return its frontmatter fields and body",
"operationId": "v1_api_admin_skills_parse_post",
"tags": [
"Admin"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ParseSkillRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ParseSkillResponse"
}
}
}
},
"400": {
"description": "Error 400",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"413": {
"description": "Error 413",
"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}/unlock": {
"post": {
"summary": "Unlock a readonly (installed) skill so spec fields and resources can be edited",
"operationId": "v1_api_admin_skills_{skill_id}_unlock_post",
"tags": [
"Admin"
],
"parameters": [
{
"name": "skill_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"
}
}
}
}
}
}
},
"/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 rendezvous 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/workstreams/new": {
"post": {
"summary": "Create a new coordinator workstream",
"operationId": "v1_api_workstreams_new_post",
"tags": [
"Coordinator"
],
"description": "Allocates a console-hosted ``kind=\"coordinator\"`` ChatSession. 200 on create; 429 when the ``coordinator.max_active`` cap is reached and no idle coordinator can be evicted. Pre-1.5.0 this returned 201; the lifted ``create`` factory (Stage 2 verb lift) converges on 200 across both kinds.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorCreateRequest"
}
}
}
},
"responses": {
"200": {
"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/workstreams": {
"get": {
"summary": "List coordinator workstreams visible to the caller",
"operationId": "v1_api_workstreams_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/ListWorkstreamsResponse"
}
}
}
},
"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/workstreams/{ws_id}": {
"get": {
"summary": "Get coordinator detail (rehydrates lazily on miss)",
"operationId": "v1_api_workstreams_{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/WorkstreamDetailResponse"
}
}
}
},
"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/workstreams/{ws_id}/open": {
"post": {
"summary": "Open (rehydrate) a coordinator workstream by ws_id",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/send": {
"delete": {
"summary": "Cancel a queued coordinator message",
"operationId": "v1_api_workstreams_{ws_id}_send_delete",
"tags": [
"Coordinator"
],
"description": "Removes a previously-queued message identified by ``msg_id`` from the coordinator session's pending queue. Returns ``status: removed`` when the queue had the entry, ``status: not_found`` otherwise. Reservations attached to the dequeued message are released so the attachments can be reused \u2014 parity with the interactive surface.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DequeueRequest"
}
}
}
},
"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"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"post": {
"summary": "Queue a user message onto the coordinator session",
"operationId": "v1_api_workstreams_{ws_id}_send_post",
"tags": [
"Coordinator"
],
"description": "Worker thread picks up the message via the session's queue. Optional ``attachment_ids`` reserve attachments under the message's send_id token (parity with the interactive surface). Response carries ``attached_ids`` / ``dropped_attachment_ids`` so callers can detect partial reservations and ``priority`` / ``msg_id`` on the queued path. ``status: queue_full`` 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/CoordinatorSendResponse"
}
}
}
},
"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"
}
}
}
},
"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/workstreams/{ws_id}/attachments": {
"post": {
"summary": "Upload a file attachment to a coordinator workstream",
"operationId": "v1_api_workstreams_{ws_id}_attachments_post",
"tags": [
"Coordinator"
],
"description": "Multipart upload (field ``file``). Same validation rules as the interactive surface: magic-byte image sniff, UTF-8 text decode, per-kind size cap, per-(ws,user) pending cap. Attachments stay pending until a subsequent ``/send`` reserves them under its ``send_id`` token.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UploadAttachmentResponse"
}
}
}
},
"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"
}
}
}
},
"413": {
"description": "Error 413",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"get": {
"summary": "List the caller's pending coordinator attachments",
"operationId": "v1_api_workstreams_{ws_id}_attachments_get",
"tags": [
"Coordinator"
],
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListAttachmentsResponse"
}
}
}
},
"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/workstreams/{ws_id}/attachments/{attachment_id}/content": {
"get": {
"summary": "Return raw bytes of a coordinator attachment",
"operationId": "v1_api_workstreams_{ws_id}_attachments_{attachment_id}_content_get",
"tags": [
"Coordinator"
],
"description": "Same byte-stream + headers as the interactive surface. Text kinds are forced to ``text/plain`` so an HTML-shaped text upload can't render same-origin.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "attachment_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"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/workstreams/{ws_id}/attachments/{attachment_id}": {
"delete": {
"summary": "Remove a pending coordinator attachment",
"operationId": "v1_api_workstreams_{ws_id}_attachments_{attachment_id}_delete",
"tags": [
"Coordinator"
],
"description": "Consumed attachments return 404.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "attachment_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/workstreams/{ws_id}/approve": {
"post": {
"summary": "Resolve a pending tool approval on the coordinator session",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/cancel": {
"post": {
"summary": "Cancel in-flight generation on the coordinator session",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/rewind": {
"post": {
"summary": "Drop the last N conversation turns on the coordinator (emits clear_ui)",
"operationId": "v1_api_workstreams_{ws_id}_rewind_post",
"tags": [
"Coordinator"
],
"description": "Truncates the coordinator conversation by N turns via the shared rewind handler and emits ``clear_ui`` so the dashboard re-fetches the truncated history. Gated on ``admin.coordinator``.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RewindRequest"
}
}
}
},
"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"
}
}
}
},
"503": {
"description": "Error 503",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v1/api/workstreams/{ws_id}/retry": {
"post": {
"summary": "Re-send the last user message on the coordinator for a fresh response",
"operationId": "v1_api_workstreams_{ws_id}_retry_post",
"tags": [
"Coordinator"
],
"description": "Drops the last response and re-sends the last user message via the shared worker dispatch, emitting ``clear_ui``. Gated on ``admin.coordinator``.",
"parameters": [
{
"name": "ws_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"
}
}
}
},
"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/workstreams/{ws_id}/close": {
"post": {
"summary": "Soft-close the coordinator (unload from memory; storage preserved)",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/events": {
"get": {
"summary": "Subscribe to the coordinator's SSE event stream",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/history": {
"get": {
"summary": "Read the coordinator's reconstructed message history",
"operationId": "v1_api_workstreams_{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/WorkstreamHistoryResponse"
}
}
}
},
"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/workstreams/{ws_id}/children": {
"get": {
"summary": "List the coordinator's spawned child workstreams",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/tasks": {
"get": {
"summary": "Read the coordinator's task list envelope",
"operationId": "v1_api_workstreams_{ws_id}_tasks_get",
"tags": [
"Coordinator"
],
"description": "Returns the ``{version, tasks}`` envelope persisted via the ``tasks`` 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/workstreams/{ws_id}/trust": {
"post": {
"summary": "Toggle trusted-session mode for send_to_workstream",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/restrict": {
"post": {
"summary": "Revoke tool access on a live coordinator session",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/stop_cascade": {
"post": {
"summary": "Cancel the coordinator and every direct child",
"operationId": "v1_api_workstreams_{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/workstreams/{ws_id}/close_all_children": {
"post": {
"summary": "Soft-close every direct child of the coordinator",
"operationId": "v1_api_workstreams_{ws_id}_close_all_children_post",
"tags": [
"Coordinator"
],
"description": "Reads the in-memory child registry and dispatches ``close_workstream`` via the routing proxy for every direct child under a bounded (16-concurrency) semaphore. Unlike ``stop_cascade`` this does not touch grandchildren \u2014 the model-facing tool asks for a bounded teardown of its own fan-out. Returns ``{closed, failed, skipped}`` where ``skipped`` distinguishes already-gone (404) from dispatch-broken (``failed``). The optional ``reason`` propagates to every closed child's audit + workstream_config. Writes ``coordinator.closed_all_children`` at the coord level.",
"parameters": [
{
"name": "ws_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorCloseAllChildrenRequest"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CoordinatorCloseAllChildrenResponse"
}
}
}
},
"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/workstreams/{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/workstreams/{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"
},
"CoordinatorCloseAllChildrenRequest": {
"description": "Body for POST /v1/api/workstreams/{ws_id}/close_all_children.",
"properties": {
"reason": {
"default": "",
"description": "Optional human-readable reason \u2014 propagated to every closed child's audit + workstream_config for postmortem. Capped at 512 chars; the handler returns 400 on overflow.",
"maxLength": 512,
"title": "Reason",
"type": "string"
}
},
"title": "CoordinatorCloseAllChildrenRequest",
"type": "object"
},
"CoordinatorCloseAllChildrenResponse": {
"description": "Response body for POST /v1/api/workstreams/{ws_id}/close_all_children.",
"properties": {
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"closed": {
"description": "Child ws_ids that accepted the close dispatch.",
"items": {
"type": "string"
},
"title": "Closed",
"type": "array"
},
"failed": {
"description": "Child ws_ids whose close 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 close (already gone). Reported separately from ``failed`` so operators can distinguish already-done from dispatch-broken.",
"items": {
"type": "string"
},
"title": "Skipped",
"type": "array"
}
},
"title": "CoordinatorCloseAllChildrenResponse",
"type": "object"
},
"CoordinatorCreateRequest": {
"description": "Body for POST /v1/api/workstreams/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/workstreams/new (200).",
"properties": {
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"resumed": {
"default": false,
"title": "Resumed",
"type": "boolean"
},
"message_count": {
"default": 0,
"title": "Message Count",
"type": "integer"
},
"attachment_ids": {
"items": {
"type": "string"
},
"title": "Attachment Ids",
"type": "array"
}
},
"required": [
"ws_id",
"name"
],
"title": "CoordinatorCreateResponse",
"type": "object"
},
"CoordinatorOpenResponse": {
"description": "Response body for POST /v1/api/workstreams/{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/workstreams/{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/workstreams/{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/workstreams/{ws_id}/send.",
"properties": {
"message": {
"description": "User message to queue onto the coordinator's worker.",
"title": "Message",
"type": "string"
},
"attachment_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Explicit list of attachment ids to inject into this turn. When omitted, any pending attachments for the caller on this coordinator are auto-consumed. An empty list disables auto-consumption for this send.",
"title": "Attachment Ids"
}
},
"required": [
"message"
],
"title": "CoordinatorSendRequest",
"type": "object"
},
"CoordinatorSendResponse": {
"description": "Response shape for POST /v1/api/workstreams/{ws_id}/send (coord).",
"properties": {
"status": {
"description": "'ok' (fresh worker spawned), 'queued' (live worker reuse), or 'queue_full'.",
"examples": [
"ok",
"queued",
"queue_full"
],
"title": "Status",
"type": "string"
},
"attached_ids": {
"description": "Attachment ids actually reserved onto this turn. Subset of the request's `attachment_ids` (or the auto-consumed pending set). Empty when the send carries no attachments.",
"items": {
"type": "string"
},
"title": "Attached Ids",
"type": "array"
},
"dropped_attachment_ids": {
"description": "Attachment ids the caller requested that the server could not reserve (lost a race, already consumed, or cross-scope). The request still proceeds with whatever was reserved.",
"items": {
"type": "string"
},
"title": "Dropped Attachment Ids",
"type": "array"
},
"priority": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Set on `queued` responses: relative priority of the queued message.",
"title": "Priority"
},
"msg_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Set on `queued` responses: id used to dequeue the message.",
"title": "Msg Id"
}
},
"required": [
"status"
],
"title": "CoordinatorSendResponse",
"type": "object"
},
"CoordinatorStopCascadeResponse": {
"description": "Response body for POST /v1/api/workstreams/{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/workstreams/{ws_id}/tasks.\n\nMirrors the envelope the ``tasks(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/workstreams/{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/workstreams/{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"
},
"effective": {
"default": [],
"items": {
"type": "string"
},
"title": "Effective",
"type": "array"
},
"grants": {
"default": [],
"items": {
"type": "string"
},
"title": "Grants",
"type": "array"
},
"revokes": {
"default": [],
"items": {
"type": "string"
},
"title": "Revokes",
"type": "array"
}
},
"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 (one row per ``(call_id, tier)``).\n\n``tier`` is one of ``\"heuristic\"`` (regex stage), ``\"llm\"`` (the judge's\nown successful verdict), or ``\"llm_error\"`` (the judge ran but failed \u2014\naudit-only; ``reasoning`` carries the error). ``reasoning`` /\n``judge_model`` / ``latency_ms`` / ``confidence`` are populated on the\nLLM tiers (migration 057) and carry their defaults on heuristic rows.\nThe inline UI chip MERGES the heuristic + ``llm`` rows; this list\nendpoint exposes the raw rows for audit/calibration.",
"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"
},
"tier": {
"default": "heuristic",
"title": "Tier",
"type": "string"
},
"reasoning": {
"default": "",
"title": "Reasoning",
"type": "string"
},
"judge_model": {
"default": "",
"title": "Judge Model",
"type": "string"
},
"latency_ms": {
"default": 0,
"title": "Latency Ms",
"type": "integer"
},
"confidence": {
"default": 0.0,
"title": "Confidence",
"type": "number"
},
"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"
},
"auth_type": {
"default": "static",
"title": "Auth Type",
"type": "string"
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Client Id"
},
"oauth_scopes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Scopes"
},
"oauth_audience": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Audience"
},
"oauth_registration_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Registration Mode"
},
"oauth_authorization_server_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Authorization Server Url"
},
"oauth_as_issuer_cached": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth As Issuer Cached"
},
"oauth_client_secret_ct": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Client Secret Ct"
},
"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"
},
"auth_type": {
"default": "static",
"title": "Auth Type",
"type": "string"
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Client Id"
},
"oauth_client_secret": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Client Secret"
},
"oauth_scopes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Scopes"
},
"oauth_audience": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Audience"
},
"oauth_registration_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Registration Mode"
},
"oauth_authorization_server_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Authorization Server Url"
}
},
"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"
},
"auth_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Auth Type"
},
"oauth_client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Client Id"
},
"oauth_client_secret": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Client Secret"
},
"oauth_scopes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Scopes"
},
"oauth_audience": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Audience"
},
"oauth_registration_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Registration Mode"
},
"oauth_authorization_server_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Oauth Authorization Server Url"
}
},
"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"
},
"surface_persisted_reasoning": {
"default": true,
"title": "Surface Persisted Reasoning",
"type": "boolean"
},
"replay_reasoning_to_model": {
"default": false,
"title": "Replay Reasoning To Model",
"type": "boolean"
},
"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"
},
"surface_persisted_reasoning": {
"default": true,
"title": "Surface Persisted Reasoning",
"type": "boolean"
},
"replay_reasoning_to_model": {
"default": false,
"title": "Replay Reasoning To Model",
"type": "boolean"
}
},
"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"
},
"surface_persisted_reasoning": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Surface Persisted Reasoning"
},
"replay_reasoning_to_model": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Replay Reasoning To Model"
}
},
"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"
},
"coordinator_default_alias": {
"default": "",
"title": "Coordinator Default Alias",
"type": "string"
},
"judge_default_alias": {
"default": "",
"title": "Judge 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"
},
"paths": {
"default": "[]",
"title": "Paths",
"type": "string"
},
"hidden_from_menu": {
"default": false,
"title": "Hidden From Menu",
"type": "boolean"
},
"arguments": {
"default": "[]",
"title": "Arguments",
"type": "string"
},
"argument_hint": {
"default": "",
"title": "Argument Hint",
"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"
},
"ParseSkillRequest": {
"properties": {
"raw": {
"description": "Raw SKILL.md text \u2014 YAML frontmatter delimited by ``---`` followed by the markdown body. Capped at 32 KiB to match ``admin_create_skill``'s ``content`` ceiling and to bound the synchronous YAML parser's worst-case CPU cost. The handler reuses the Python parser at ``turnstone.core.skill_parser`` so admin UIs and external import paths agree on field extraction.",
"maxLength": 32768,
"minLength": 1,
"title": "Raw",
"type": "string"
}
},
"required": [
"raw"
],
"title": "ParseSkillRequest",
"type": "object"
},
"ParseSkillResponse": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"description": {
"title": "Description",
"type": "string"
},
"content": {
"title": "Content",
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"author": {
"default": "",
"title": "Author",
"type": "string"
},
"version": {
"default": "1.0.0",
"title": "Version",
"type": "string"
},
"allowed_tools": {
"items": {
"type": "string"
},
"title": "Allowed Tools",
"type": "array"
},
"license": {
"default": "",
"title": "License",
"type": "string"
},
"compatibility": {
"default": "",
"title": "Compatibility",
"type": "string"
},
"paths": {
"items": {
"type": "string"
},
"title": "Paths",
"type": "array"
},
"when_to_use": {
"default": "",
"title": "When To Use",
"type": "string"
},
"model": {
"default": "",
"title": "Model",
"type": "string"
},
"effort": {
"default": "",
"title": "Effort",
"type": "string"
},
"disable_model_invocation": {
"default": false,
"title": "Disable Model Invocation",
"type": "boolean"
},
"user_invocable": {
"default": true,
"title": "User Invocable",
"type": "boolean"
},
"arguments": {
"items": {
"type": "string"
},
"title": "Arguments",
"type": "array"
},
"argument_hint": {
"default": "",
"title": "Argument Hint",
"type": "string"
}
},
"required": [
"name",
"description",
"content"
],
"title": "ParseSkillResponse",
"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 the ``skills`` find/get tool 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": 1536,
"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"
},
"paths": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"default": "[]",
"title": "Paths"
},
"hidden_from_menu": {
"default": false,
"title": "Hidden From Menu",
"type": "boolean"
},
"arguments": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"default": "[]",
"title": "Arguments"
},
"argument_hint": {
"default": "",
"title": "Argument Hint",
"type": "string"
},
"kind": {
"$ref": "#/components/schemas/SkillKind",
"default": "any",
"description": "Authored audience metadata \u2014 passive marker for sorting/grouping and discoverability narrowing. ``interactive`` marks the skill as authored for interactive sessions; ``coordinator`` marks it for coordinator delegation; ``any`` (default) signals no preferred audience. Not a runtime visibility gate after the SkillKind enforcement flatten (#557) \u2014 every session kind can find, get, and load every skill regardless of this field; real access control remains ``allowed_tools`` + ``auto_approve``."
}
},
"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": 1536,
"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"
},
"paths": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Paths"
},
"hidden_from_menu": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Hidden From Menu"
},
"arguments": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Arguments"
},
"argument_hint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Argument Hint"
},
"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"
},
"WorkstreamDetailResponse": {
"description": "Response body for ``GET /v1/api/workstreams/{ws_id}``.\n\nRenamed and relocated from ``CoordinatorDetailResponse`` in the\nStage 2 history/detail verb lift. Both kinds populate every field;\nSDK consumers don't branch on kind to read them. The lift adds the\nendpoint to interactive as a feature gain (pre-lift only coord\nexposed it).",
"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": {
"$ref": "#/components/schemas/WorkstreamKind",
"default": "interactive"
},
"pending_approval": {
"default": false,
"description": "True when the workstream is parked on ``_approval_event`` awaiting an operator approve/deny. Mirrors the same field on ``DashboardWorkstream`` / cluster live projections so a freshly-loaded chat tab can render the inline approval gate from the detail snapshot before SSE replay arrives.",
"title": "Pending Approval",
"type": "boolean"
},
"pending_approval_detail": {
"anyOf": [
{
"$ref": "#/components/schemas/PendingApprovalDetail"
},
{
"type": "null"
}
],
"default": null,
"description": "Inline approval payload \u2014 same shape as ``DashboardWorkstream.pending_approval_detail``. ``None`` when no approval is pending. Lets a reload paint the action row + judge verdicts immediately instead of relying on the SSE approve_request replay timing window."
}
},
"required": [
"ws_id",
"name",
"state",
"user_id"
],
"title": "WorkstreamDetailResponse",
"type": "object"
},
"PendingApprovalDetail": {
"description": "Inline approval payload merged into ``DashboardWorkstream``.\n\nSet when a workstream's ``approve_tools`` is parked on\n``_approval_event``; ``None`` (omitted) otherwise. Cross-tenant\nexposure here follows the same trusted-team posture as\n``activity`` / ``tokens`` \u2014 see ``server.py``'s ``dashboard``\nhandler comment.",
"properties": {
"call_id": {
"default": "",
"description": "Primary call_id \u2014 first non-empty call_id in items list order. Matches the 409 ``current_call_id`` response from ``POST /v1/api/workstreams/{ws_id}/approve`` so the UI can render the same identifier the server reports as current.",
"title": "Call Id",
"type": "string"
},
"judge_pending": {
"default": false,
"description": "LLM judge tier still running; heuristic verdicts may already be present on items.",
"title": "Judge Pending",
"type": "boolean"
},
"items": {
"items": {
"$ref": "#/components/schemas/PendingApprovalItem"
},
"title": "Items",
"type": "array"
}
},
"title": "PendingApprovalDetail",
"type": "object"
},
"PendingApprovalItem": {
"description": "One pending tool-call inside a ``PendingApprovalDetail`` envelope.\n\nMirrors the dict ``SessionUIBase.serialize_pending_approval_detail``\nemits per item. ``heuristic_verdict`` / ``judge_verdict`` are kept\nloosely-typed because the underlying verdict shape varies by tier;\nconsumers that want the full structure can decode against\n:class:`turnstone.sdk.events.IntentVerdictEvent`.",
"properties": {
"call_id": {
"default": "",
"title": "Call Id",
"type": "string"
},
"header": {
"default": "",
"title": "Header",
"type": "string"
},
"preview": {
"default": "",
"title": "Preview",
"type": "string"
},
"func_name": {
"default": "",
"title": "Func Name",
"type": "string"
},
"approval_label": {
"default": "",
"title": "Approval Label",
"type": "string"
},
"needs_approval": {
"default": false,
"title": "Needs Approval",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"heuristic_verdict": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Heuristic Verdict"
},
"judge_verdict": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Judge Verdict"
}
},
"title": "PendingApprovalItem",
"type": "object"
},
"WorkstreamKind": {
"description": "Classifier for which manager hosts a workstream.\n\nStrEnum so members are drop-in ``str`` replacements for the DB column,\nJSON payloads, and existing ``==`` comparisons against raw strings.\nNarrow internal annotations to this type; wide boundaries (HTTP body,\nDB row) stay ``str`` and parse via ``WorkstreamKind(raw)`` / ``from_raw``\nat the edge.",
"enum": [
"interactive",
"coordinator"
],
"title": "WorkstreamKind",
"type": "string"
},
"WorkstreamHistoryResponse": {
"description": "Response body for ``GET /v1/api/workstreams/{ws_id}/history``.\n\nRenamed and relocated from ``CoordinatorHistoryResponse`` in the\nStage 2 history/detail verb lift. Same projected render shape on\nboth kinds; the lift adds the endpoint to interactive as a feature\ngain (pre-lift interactive only exposed history through the SSE\nreplay on ``/events``).",
"properties": {
"ws_id": {
"title": "Ws Id",
"type": "string"
},
"messages": {
"description": "Tail of the workstream's message history, projected to the canonical render shape (flat tool_calls with verdict / output_assessment, top-level source / reminders / attachments, derived denied / is_error / pending). Bounded by the ``limit`` query parameter (default 100, max 500).",
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Messages",
"type": "array"
}
},
"required": [
"ws_id"
],
"title": "WorkstreamHistoryResponse",
"type": "object"
}
}
}
}