{
  "openapi": "3.1.0",
  "info": {
    "title": "turnstone Console API",
    "version": "1.5.0a4",
    "description": "Cluster-wide visibility and control across all turnstone nodes."
  },
  "paths": {
    "/v1/api/cluster/overview": {
      "get": {
        "summary": "Cluster state summary",
        "operationId": "v1_api_cluster_overview_get",
        "tags": [
          "Cluster"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClusterOverviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/cluster/nodes": {
      "get": {
        "summary": "Paginated node list",
        "operationId": "v1_api_cluster_nodes_get",
        "tags": [
          "Cluster"
        ],
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "activity",
              "enum": [
                "activity",
                "tokens",
                "name"
              ]
            },
            "description": "Sort field"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100
            },
            "description": "Page size"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Pagination offset"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClusterNodesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/cluster/workstreams": {
      "get": {
        "summary": "Filtered workstream list",
        "operationId": "v1_api_cluster_workstreams_get",
        "tags": [
          "Cluster"
        ],
        "parameters": [
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "running",
                "thinking",
                "attention",
                "idle",
                "error"
              ]
            },
            "description": "Filter by state"
          },
          {
            "name": "node",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by node_id"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Search in name/title/node"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "state",
              "enum": [
                "state",
                "tokens",
                "name"
              ]
            },
            "description": "Sort field"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            },
            "description": "Page number"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50
            },
            "description": "Items per page (max 200)"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClusterWorkstreamsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/cluster/node/{node_id}": {
      "get": {
        "summary": "Single node detail",
        "operationId": "v1_api_cluster_node_{node_id}_get",
        "tags": [
          "Cluster"
        ],
        "parameters": [
          {
            "name": "node_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NodeDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/cluster/workstreams/new": {
      "post": {
        "summary": "Create workstream via HTTP dispatch",
        "operationId": "v1_api_cluster_workstreams_new_post",
        "tags": [
          "Cluster"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsoleCreateWsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsoleCreateWsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Error 503",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/cluster/snapshot": {
      "get": {
        "summary": "Full cluster state snapshot",
        "operationId": "v1_api_cluster_snapshot_get",
        "tags": [
          "Cluster"
        ],
        "description": "Returns the complete cluster state: all nodes with their workstreams and overview aggregates. Used for initial load and reconnection.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClusterSnapshotResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/cluster/events": {
      "get": {
        "summary": "Cluster SSE event stream",
        "operationId": "v1_api_cluster_events_get",
        "tags": [
          "Streaming"
        ],
        "description": "Server-Sent Events stream for real-time cluster updates. First event is a 'snapshot' with full cluster state, followed by node_joined, node_lost, cluster_state, ws_created, ws_closed, ws_rename events.",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/api/auth/login": {
      "post": {
        "summary": "Authenticate with a token",
        "operationId": "v1_api_auth_login_post",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthLoginRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthLoginResponse"
                }
              }
            }
          },
          "401": {
            "description": "Error 401",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/auth/setup": {
      "post": {
        "summary": "Create first admin user",
        "operationId": "v1_api_auth_setup_post",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthSetupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthSetupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Error 503",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/auth/status": {
      "get": {
        "summary": "Return auth state",
        "operationId": "v1_api_auth_status_get",
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthStatusResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/auth/logout": {
      "post": {
        "summary": "Clear auth cookie",
        "operationId": "v1_api_auth_logout_post",
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/auth/oidc/authorize": {
      "get": {
        "summary": "Redirect to OIDC provider for SSO login",
        "operationId": "v1_api_auth_oidc_authorize_get",
        "tags": [
          "Auth"
        ],
        "responses": {
          "302": {
            "description": "Success"
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Error 503",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/auth/oidc/callback": {
      "get": {
        "summary": "OIDC callback \u2014 validates code, provisions user, sets JWT cookie, redirects to app",
        "operationId": "v1_api_auth_oidc_callback_get",
        "tags": [
          "Auth"
        ],
        "responses": {
          "302": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/api/auth/whoami": {
      "get": {
        "summary": "Return authenticated user info and permissions",
        "operationId": "v1_api_auth_whoami_get",
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthWhoamiResponse"
                }
              }
            }
          },
          "401": {
            "description": "Error 401",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/users": {
      "get": {
        "summary": "List all users",
        "operationId": "v1_api_admin_users_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUsersResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a user",
        "operationId": "v1_api_admin_users_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfo"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/users/{user_id}": {
      "delete": {
        "summary": "Delete a user and their tokens",
        "operationId": "v1_api_admin_users_{user_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/users/{user_id}/tokens": {
      "get": {
        "summary": "List tokens for a user",
        "operationId": "v1_api_admin_users_{user_id}_tokens_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTokensResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create an API token (raw token shown once)",
        "operationId": "v1_api_admin_users_{user_id}_tokens_post",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/tokens/{token_id}": {
      "delete": {
        "summary": "Revoke an API token",
        "operationId": "v1_api_admin_tokens_{token_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "token_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/users/{user_id}/channels": {
      "get": {
        "summary": "List channel links for a user",
        "operationId": "v1_api_admin_users_{user_id}_channels_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListChannelUsersResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Link a channel account to a user",
        "operationId": "v1_api_admin_users_{user_id}_channels_post",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateChannelUserRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelUserInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/channels/{channel_type}/{channel_user_id}": {
      "delete": {
        "summary": "Unlink a channel account",
        "operationId": "v1_api_admin_channels_{channel_type}_{channel_user_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "channel_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "channel_user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/users/{user_id}/oidc-identities": {
      "get": {
        "summary": "List OIDC identities linked to a user",
        "operationId": "v1_api_admin_users_{user_id}_oidc-identities_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/api/admin/oidc-identities": {
      "delete": {
        "summary": "Unlink an OIDC identity (issuer + subject as query params)",
        "operationId": "v1_api_admin_oidc-identities_delete",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/schedules": {
      "get": {
        "summary": "List all scheduled tasks",
        "operationId": "v1_api_admin_schedules_get",
        "tags": [
          "Schedules"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSchedulesResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a scheduled task",
        "operationId": "v1_api_admin_schedules_post",
        "tags": [
          "Schedules"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateScheduleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/schedules/{task_id}": {
      "get": {
        "summary": "Get a scheduled task",
        "operationId": "v1_api_admin_schedules_{task_id}_get",
        "tags": [
          "Schedules"
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a scheduled task",
        "operationId": "v1_api_admin_schedules_{task_id}_put",
        "tags": [
          "Schedules"
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateScheduleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a scheduled task",
        "operationId": "v1_api_admin_schedules_{task_id}_delete",
        "tags": [
          "Schedules"
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/schedules/{task_id}/runs": {
      "get": {
        "summary": "List run history for a scheduled task",
        "operationId": "v1_api_admin_schedules_{task_id}_runs_get",
        "tags": [
          "Schedules"
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50
            },
            "description": "Max results (default 50, max 200)"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListScheduleRunsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/roles": {
      "get": {
        "summary": "List all roles",
        "operationId": "v1_api_admin_roles_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListRolesResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a custom role",
        "operationId": "v1_api_admin_roles_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/roles/{role_id}": {
      "put": {
        "summary": "Update a role",
        "operationId": "v1_api_admin_roles_{role_id}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "role_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRoleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a custom role",
        "operationId": "v1_api_admin_roles_{role_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "role_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/users/{user_id}/roles": {
      "get": {
        "summary": "List roles assigned to a user",
        "operationId": "v1_api_admin_users_{user_id}_roles_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserRolesResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Assign a role to a user",
        "operationId": "v1_api_admin_users_{user_id}_roles_post",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignRoleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/users/{user_id}/roles/{role_id}": {
      "delete": {
        "summary": "Unassign a role from a user",
        "operationId": "v1_api_admin_users_{user_id}_roles_{role_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "role_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/orgs": {
      "get": {
        "summary": "List organizations",
        "operationId": "v1_api_admin_orgs_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOrgsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/orgs/{org_id}": {
      "get": {
        "summary": "Get organization details",
        "operationId": "v1_api_admin_orgs_{org_id}_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "org_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrgInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update organization settings",
        "operationId": "v1_api_admin_orgs_{org_id}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "org_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOrgRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrgInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/policies": {
      "get": {
        "summary": "List tool policies",
        "operationId": "v1_api_admin_policies_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListToolPoliciesResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a tool policy",
        "operationId": "v1_api_admin_policies_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateToolPolicyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolPolicyInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/policies/{policy_id}": {
      "put": {
        "summary": "Update a tool policy",
        "operationId": "v1_api_admin_policies_{policy_id}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "policy_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateToolPolicyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolPolicyInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a tool policy",
        "operationId": "v1_api_admin_policies_{policy_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "policy_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/skills/discover": {
      "get": {
        "summary": "Search external skill registries for available skills",
        "operationId": "v1_api_admin_skills_discover_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Search query"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Max results (default 20, max 100)"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillDiscoverResponse"
                }
              }
            }
          },
          "502": {
            "description": "Error 502",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/skills/install": {
      "post": {
        "summary": "Install skill(s) from an external source",
        "operationId": "v1_api_admin_skills_install_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkillInstallRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillInstallResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Error 502",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/skills": {
      "get": {
        "summary": "List skills",
        "operationId": "v1_api_admin_skills_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSkillsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a skill",
        "operationId": "v1_api_admin_skills_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkillRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/skills/{skill_id}": {
      "get": {
        "summary": "Get a skill by ID",
        "operationId": "v1_api_admin_skills_{skill_id}_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a skill",
        "operationId": "v1_api_admin_skills_{skill_id}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkillRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a skill",
        "operationId": "v1_api_admin_skills_{skill_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/skills/{skill_id}/versions": {
      "get": {
        "summary": "List version history for a skill",
        "operationId": "v1_api_admin_skills_{skill_id}_versions_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSkillVersionsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/models": {
      "get": {
        "summary": "List enabled model aliases for workstream creation",
        "operationId": "v1_api_models_get",
        "tags": [
          "Models"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAvailableModelsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/skills": {
      "get": {
        "summary": "List available skills (summary)",
        "operationId": "v1_api_skills_get",
        "tags": [
          "Skills"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSkillSummaryResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/usage": {
      "get": {
        "summary": "Aggregated usage data",
        "operationId": "v1_api_admin_usage_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Start timestamp (ISO8601, defaults to last 7 days)"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "End timestamp (ISO8601)"
          },
          {
            "name": "user_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by user"
          },
          {
            "name": "model",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by model"
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "day",
                "hour",
                "model",
                "user"
              ]
            },
            "description": "Group results"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/audit": {
      "get": {
        "summary": "Paginated audit events",
        "operationId": "v1_api_admin_audit_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "action",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by action type"
          },
          {
            "name": "user_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by user"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Start timestamp (ISO8601)"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "End timestamp (ISO8601)"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50
            },
            "description": "Page size"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Pagination offset"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAuditEventsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/verdicts": {
      "get": {
        "summary": "Paginated intent verdicts",
        "operationId": "v1_api_admin_verdicts_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "ws_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by workstream"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Start timestamp (ISO8601)"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "End timestamp (ISO8601)"
          },
          {
            "name": "risk_level",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "low",
                "medium",
                "high",
                "critical"
              ]
            },
            "description": "Filter by risk level"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100
            },
            "description": "Page size (max 500)"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Pagination offset"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVerdictsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/output-assessments": {
      "get": {
        "summary": "Paginated output guard assessments",
        "operationId": "v1_api_admin_output-assessments_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "ws_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by workstream"
          },
          {
            "name": "risk_level",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "low",
                "medium",
                "high"
              ]
            },
            "description": "Filter by risk level"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Start timestamp (ISO8601)"
          },
          {
            "name": "until",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "End timestamp (ISO8601)"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100
            },
            "description": "Page size (max 500)"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Pagination offset"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOutputAssessmentsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/skills/{skill_id}/rescan": {
      "post": {
        "summary": "Re-scan a skill for security signals",
        "operationId": "v1_api_admin_skills_{skill_id}_rescan_post",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/api/admin/skills/{skill_id}/resources": {
      "get": {
        "summary": "List resource files for a skill",
        "operationId": "v1_api_admin_skills_{skill_id}_resources_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSkillResourcesResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Upload a resource file to a skill",
        "operationId": "v1_api_admin_skills_{skill_id}_resources_post",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkillResourceRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillResourceInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/skills/{skill_id}/resources/{path}": {
      "get": {
        "summary": "Get a single skill resource by path",
        "operationId": "v1_api_admin_skills_{skill_id}_resources_{path}_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillResourceInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a skill resource by path",
        "operationId": "v1_api_admin_skills_{skill_id}_resources_{path}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "skill_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/memories": {
      "get": {
        "summary": "List structured memories",
        "operationId": "v1_api_admin_memories_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by memory type"
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by scope"
          },
          {
            "name": "scope_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by scope identifier"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100
            },
            "description": "Page size (max 200)"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAdminMemoriesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/memories/search": {
      "get": {
        "summary": "Search memories by query",
        "operationId": "v1_api_admin_memories_search_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Search query"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by memory type"
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by scope"
          },
          {
            "name": "scope_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by scope identifier"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20
            },
            "description": "Max results"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAdminMemoriesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/memories/{memory_id}": {
      "get": {
        "summary": "Get a single memory by ID",
        "operationId": "v1_api_admin_memories_{memory_id}_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "memory_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminMemoryInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a memory by ID",
        "operationId": "v1_api_admin_memories_{memory_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "memory_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/settings": {
      "get": {
        "summary": "List all settings with effective values",
        "operationId": "v1_api_admin_settings_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "reveal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Show secret values in plaintext"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSettingsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/settings/schema": {
      "get": {
        "summary": "Return the full settings registry schema",
        "operationId": "v1_api_admin_settings_schema_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSettingSchemaResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/settings/{key}": {
      "put": {
        "summary": "Set a configuration setting value",
        "operationId": "v1_api_admin_settings_{key}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSettingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SettingInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Reset a setting to its default value",
        "operationId": "v1_api_admin_settings_{key}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Node ID for node-scoped settings"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteSettingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/mcp-registry/search": {
      "get": {
        "summary": "Search the MCP Registry for available servers",
        "operationId": "v1_api_admin_mcp-registry_search_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Search query"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Max results (default 20, max 100)"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Pagination cursor for next page"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrySearchResponse"
                }
              }
            }
          },
          "502": {
            "description": "Error 502",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/mcp-registry/install": {
      "post": {
        "summary": "Install an MCP server from the registry",
        "operationId": "v1_api_admin_mcp-registry_install_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistryInstallRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerDetail"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Error 502",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/mcp-servers": {
      "get": {
        "summary": "List MCP server definitions with live status",
        "operationId": "v1_api_admin_mcp-servers_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "reveal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Show secret env/header values"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMcpServersResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create an MCP server definition",
        "operationId": "v1_api_admin_mcp-servers_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMcpServerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerDetail"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/mcp-servers/{server_id}": {
      "get": {
        "summary": "Get a single MCP server with status",
        "operationId": "v1_api_admin_mcp-servers_{server_id}_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "server_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerDetail"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update an MCP server definition",
        "operationId": "v1_api_admin_mcp-servers_{server_id}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "server_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMcpServerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerDetail"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete an MCP server definition",
        "operationId": "v1_api_admin_mcp-servers_{server_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "server_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/mcp-servers/reload": {
      "post": {
        "summary": "Tell all nodes to re-read MCP server config from DB and reconcile",
        "operationId": "v1_api_admin_mcp-servers_reload_post",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpReloadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/mcp-servers/import": {
      "post": {
        "summary": "Import MCP servers from a JSON config file",
        "operationId": "v1_api_admin_mcp-servers_import_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportMcpConfigRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportMcpConfigResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/model-definitions": {
      "get": {
        "summary": "List model definitions with live status from cluster nodes",
        "operationId": "v1_api_admin_model-definitions_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListModelDefinitionsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a model definition",
        "operationId": "v1_api_admin_model-definitions_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateModelDefinitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelDefinitionInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/model-definitions/reload": {
      "post": {
        "summary": "Tell all nodes to re-read model definitions from DB and rebuild registry",
        "operationId": "v1_api_admin_model-definitions_reload_post",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelReloadResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/model-definitions/{definition_id}": {
      "get": {
        "summary": "Get a single model definition",
        "operationId": "v1_api_admin_model-definitions_{definition_id}_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "definition_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelDefinitionInfo"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a model definition",
        "operationId": "v1_api_admin_model-definitions_{definition_id}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "definition_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateModelDefinitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelDefinitionInfo"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error 409",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a model definition",
        "operationId": "v1_api_admin_model-definitions_{definition_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "definition_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/model-definitions/detect": {
      "post": {
        "summary": "Probe a model endpoint: verify reachability, list models, detect context window and server type",
        "operationId": "v1_api_admin_model-definitions_detect_post",
        "tags": [
          "Admin"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DetectModelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetectModelResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/model-capabilities": {
      "get": {
        "summary": "Look up static capabilities for a known model",
        "operationId": "v1_api_admin_model-capabilities_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Provider name"
          },
          {
            "name": "model",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Model ID to look up"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelCapabilitiesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/model-capabilities/known": {
      "get": {
        "summary": "List known model name prefixes for a provider",
        "operationId": "v1_api_admin_model-capabilities_known_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Provider name"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnownModelsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/prompt-policies": {
      "get": {
        "summary": "List all prompt policies for system message composition",
        "operationId": "v1_api_admin_prompt-policies_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "summary": "Create a prompt policy",
        "operationId": "v1_api_admin_prompt-policies_post",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/prompt-policies/{policy_id}": {
      "get": {
        "summary": "Get a single prompt policy",
        "operationId": "v1_api_admin_prompt-policies_{policy_id}_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "policy_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a prompt policy",
        "operationId": "v1_api_admin_prompt-policies_{policy_id}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "policy_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a prompt policy",
        "operationId": "v1_api_admin_prompt-policies_{policy_id}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "policy_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/node-metadata": {
      "get": {
        "summary": "Get metadata for all nodes (bulk)",
        "operationId": "v1_api_admin_node-metadata_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/api/admin/nodes/{node_id}/metadata": {
      "get": {
        "summary": "Get all metadata for a node",
        "operationId": "v1_api_admin_nodes_{node_id}_metadata_get",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "node_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NodeMetadataResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Bulk set user metadata for a node",
        "operationId": "v1_api_admin_nodes_{node_id}_metadata_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "node_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkSetNodeMetadataRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/nodes/{node_id}/metadata/{key}": {
      "put": {
        "summary": "Set a single metadata key for a node",
        "operationId": "v1_api_admin_nodes_{node_id}_metadata_{key}_put",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "node_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetNodeMetadataValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a single metadata key for a node",
        "operationId": "v1_api_admin_nodes_{node_id}_metadata_{key}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "node_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Error 400",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/tls/ca": {
      "get": {
        "summary": "CA status: initialization state, CN, cert count, cert inventory",
        "operationId": "v1_api_admin_tls_ca_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/api/admin/tls/ca.pem": {
      "get": {
        "summary": "Download CA root certificate (PEM format)",
        "operationId": "v1_api_admin_tls_ca.pem_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/api/admin/tls/certs": {
      "get": {
        "summary": "List all issued TLS certificates",
        "operationId": "v1_api_admin_tls_certs_get",
        "tags": [
          "Admin"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/v1/api/admin/tls/certs/{domain}/renew": {
      "post": {
        "summary": "Force-renew a certificate by domain",
        "operationId": "v1_api_admin_tls_certs_{domain}_renew_post",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Error 500",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/admin/tls/certs/{domain}": {
      "delete": {
        "summary": "Delete a certificate by domain",
        "operationId": "v1_api_admin_tls_certs_{domain}_delete",
        "tags": [
          "Admin"
        ],
        "parameters": [
          {
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Error 404",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api/route/workstreams/new": {
      "post": {
        "summary": "Create workstream via 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": {
      "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}/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"
          }
        },
        "required": [
          "role_id",
          "name",
          "display_name",
          "permissions",
          "builtin",
          "org_id",
          "created",
          "updated"
        ],
        "title": "RoleInfo",
        "type": "object"
      },
      "CreateRoleRequest": {
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "display_name": {
            "default": "",
            "title": "Display Name",
            "type": "string"
          },
          "permissions": {
            "default": "read",
            "title": "Permissions",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "title": "CreateRoleRequest",
        "type": "object"
      },
      "UpdateRoleRequest": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Display Name"
          },
          "permissions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Permissions"
          }
        },
        "title": "UpdateRoleRequest",
        "type": "object"
      },
      "ListRolesResponse": {
        "properties": {
          "roles": {
            "items": {
              "$ref": "#/components/schemas/RoleInfo"
            },
            "title": "Roles",
            "type": "array"
          }
        },
        "required": [
          "roles"
        ],
        "title": "ListRolesResponse",
        "type": "object"
      },
      "AssignRoleRequest": {
        "properties": {
          "role_id": {
            "title": "Role Id",
            "type": "string"
          }
        },
        "required": [
          "role_id"
        ],
        "title": "AssignRoleRequest",
        "type": "object"
      },
      "UserRoleInfo": {
        "properties": {
          "role_id": {
            "title": "Role Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "permissions": {
            "title": "Permissions",
            "type": "string"
          },
          "builtin": {
            "title": "Builtin",
            "type": "boolean"
          },
          "org_id": {
            "title": "Org Id",
            "type": "string"
          },
          "created": {
            "title": "Created",
            "type": "string"
          },
          "updated": {
            "title": "Updated",
            "type": "string"
          },
          "assigned_by": {
            "title": "Assigned By",
            "type": "string"
          },
          "assignment_created": {
            "title": "Assignment Created",
            "type": "string"
          }
        },
        "required": [
          "role_id",
          "name",
          "display_name",
          "permissions",
          "builtin",
          "org_id",
          "created",
          "updated",
          "assigned_by",
          "assignment_created"
        ],
        "title": "UserRoleInfo",
        "type": "object"
      },
      "ListUserRolesResponse": {
        "properties": {
          "roles": {
            "items": {
              "$ref": "#/components/schemas/UserRoleInfo"
            },
            "title": "Roles",
            "type": "array"
          }
        },
        "required": [
          "roles"
        ],
        "title": "ListUserRolesResponse",
        "type": "object"
      },
      "OrgInfo": {
        "properties": {
          "org_id": {
            "title": "Org Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "settings": {
            "title": "Settings",
            "type": "string"
          },
          "created": {
            "title": "Created",
            "type": "string"
          },
          "updated": {
            "title": "Updated",
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "name",
          "display_name",
          "settings",
          "created",
          "updated"
        ],
        "title": "OrgInfo",
        "type": "object"
      },
      "UpdateOrgRequest": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Display Name"
          },
          "settings": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Settings"
          }
        },
        "title": "UpdateOrgRequest",
        "type": "object"
      },
      "ListOrgsResponse": {
        "properties": {
          "orgs": {
            "items": {
              "$ref": "#/components/schemas/OrgInfo"
            },
            "title": "Orgs",
            "type": "array"
          }
        },
        "required": [
          "orgs"
        ],
        "title": "ListOrgsResponse",
        "type": "object"
      },
      "ToolPolicyInfo": {
        "properties": {
          "policy_id": {
            "title": "Policy Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "tool_pattern": {
            "title": "Tool Pattern",
            "type": "string"
          },
          "action": {
            "title": "Action",
            "type": "string"
          },
          "priority": {
            "title": "Priority",
            "type": "integer"
          },
          "org_id": {
            "title": "Org Id",
            "type": "string"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "created": {
            "title": "Created",
            "type": "string"
          },
          "updated": {
            "title": "Updated",
            "type": "string"
          }
        },
        "required": [
          "policy_id",
          "name",
          "tool_pattern",
          "action",
          "priority",
          "org_id",
          "enabled",
          "created_by",
          "created",
          "updated"
        ],
        "title": "ToolPolicyInfo",
        "type": "object"
      },
      "CreateToolPolicyRequest": {
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "tool_pattern": {
            "title": "Tool Pattern",
            "type": "string"
          },
          "action": {
            "title": "Action",
            "type": "string"
          },
          "priority": {
            "default": 0,
            "title": "Priority",
            "type": "integer"
          },
          "org_id": {
            "default": "",
            "title": "Org Id",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "tool_pattern",
          "action"
        ],
        "title": "CreateToolPolicyRequest",
        "type": "object"
      },
      "UpdateToolPolicyRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "tool_pattern": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Tool Pattern"
          },
          "action": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Action"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Priority"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Enabled"
          }
        },
        "title": "UpdateToolPolicyRequest",
        "type": "object"
      },
      "ListToolPoliciesResponse": {
        "properties": {
          "policies": {
            "items": {
              "$ref": "#/components/schemas/ToolPolicyInfo"
            },
            "title": "Policies",
            "type": "array"
          }
        },
        "required": [
          "policies"
        ],
        "title": "ListToolPoliciesResponse",
        "type": "object"
      },
      "UsageBreakdownItem": {
        "properties": {
          "key": {
            "default": "",
            "title": "Key",
            "type": "string"
          },
          "prompt_tokens": {
            "default": 0,
            "title": "Prompt Tokens",
            "type": "integer"
          },
          "completion_tokens": {
            "default": 0,
            "title": "Completion Tokens",
            "type": "integer"
          },
          "tool_calls_count": {
            "default": 0,
            "title": "Tool Calls Count",
            "type": "integer"
          },
          "cache_creation_tokens": {
            "default": 0,
            "title": "Cache Creation Tokens",
            "type": "integer"
          },
          "cache_read_tokens": {
            "default": 0,
            "title": "Cache Read Tokens",
            "type": "integer"
          }
        },
        "title": "UsageBreakdownItem",
        "type": "object"
      },
      "UsageResponse": {
        "properties": {
          "summary": {
            "items": {
              "$ref": "#/components/schemas/UsageBreakdownItem"
            },
            "title": "Summary",
            "type": "array"
          },
          "breakdown": {
            "items": {
              "$ref": "#/components/schemas/UsageBreakdownItem"
            },
            "title": "Breakdown",
            "type": "array"
          }
        },
        "required": [
          "summary",
          "breakdown"
        ],
        "title": "UsageResponse",
        "type": "object"
      },
      "AuditEventInfo": {
        "properties": {
          "event_id": {
            "title": "Event Id",
            "type": "string"
          },
          "timestamp": {
            "title": "Timestamp",
            "type": "string"
          },
          "user_id": {
            "title": "User Id",
            "type": "string"
          },
          "action": {
            "title": "Action",
            "type": "string"
          },
          "resource_type": {
            "title": "Resource Type",
            "type": "string"
          },
          "resource_id": {
            "title": "Resource Id",
            "type": "string"
          },
          "detail": {
            "title": "Detail",
            "type": "string"
          },
          "ip_address": {
            "title": "Ip Address",
            "type": "string"
          },
          "created": {
            "title": "Created",
            "type": "string"
          }
        },
        "required": [
          "event_id",
          "timestamp",
          "user_id",
          "action",
          "resource_type",
          "resource_id",
          "detail",
          "ip_address",
          "created"
        ],
        "title": "AuditEventInfo",
        "type": "object"
      },
      "ListAuditEventsResponse": {
        "properties": {
          "events": {
            "items": {
              "$ref": "#/components/schemas/AuditEventInfo"
            },
            "title": "Events",
            "type": "array"
          }
        },
        "required": [
          "events"
        ],
        "title": "ListAuditEventsResponse",
        "type": "object"
      },
      "VerdictInfo": {
        "description": "Intent validation verdict.",
        "properties": {
          "verdict_id": {
            "title": "Verdict Id",
            "type": "string"
          },
          "ws_id": {
            "title": "Ws Id",
            "type": "string"
          },
          "call_id": {
            "title": "Call Id",
            "type": "string"
          },
          "func_name": {
            "title": "Func Name",
            "type": "string"
          },
          "func_args": {
            "default": "",
            "title": "Func Args",
            "type": "string"
          },
          "intent_summary": {
            "title": "Intent Summary",
            "type": "string"
          },
          "risk_level": {
            "title": "Risk Level",
            "type": "string"
          },
          "confidence": {
            "title": "Confidence",
            "type": "number"
          },
          "recommendation": {
            "title": "Recommendation",
            "type": "string"
          },
          "reasoning": {
            "title": "Reasoning",
            "type": "string"
          },
          "evidence": {
            "default": "[]",
            "title": "Evidence",
            "type": "string"
          },
          "tier": {
            "title": "Tier",
            "type": "string"
          },
          "judge_model": {
            "default": "",
            "title": "Judge Model",
            "type": "string"
          },
          "user_decision": {
            "default": "",
            "title": "User Decision",
            "type": "string"
          },
          "latency_ms": {
            "default": 0,
            "title": "Latency Ms",
            "type": "integer"
          },
          "created": {
            "title": "Created",
            "type": "string"
          }
        },
        "required": [
          "verdict_id",
          "ws_id",
          "call_id",
          "func_name",
          "intent_summary",
          "risk_level",
          "confidence",
          "recommendation",
          "reasoning",
          "tier",
          "created"
        ],
        "title": "VerdictInfo",
        "type": "object"
      },
      "ListVerdictsResponse": {
        "description": "Response for verdict listing.",
        "properties": {
          "verdicts": {
            "items": {
              "$ref": "#/components/schemas/VerdictInfo"
            },
            "title": "Verdicts",
            "type": "array"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "verdicts",
          "total"
        ],
        "title": "ListVerdictsResponse",
        "type": "object"
      },
      "OutputAssessmentInfo": {
        "description": "Output guard assessment.",
        "properties": {
          "assessment_id": {
            "title": "Assessment Id",
            "type": "string"
          },
          "ws_id": {
            "title": "Ws Id",
            "type": "string"
          },
          "call_id": {
            "title": "Call Id",
            "type": "string"
          },
          "func_name": {
            "title": "Func Name",
            "type": "string"
          },
          "flags": {
            "default": "[]",
            "title": "Flags",
            "type": "string"
          },
          "risk_level": {
            "default": "none",
            "title": "Risk Level",
            "type": "string"
          },
          "annotations": {
            "default": "[]",
            "title": "Annotations",
            "type": "string"
          },
          "output_length": {
            "default": 0,
            "title": "Output Length",
            "type": "integer"
          },
          "redacted": {
            "default": 0,
            "title": "Redacted",
            "type": "integer"
          },
          "created": {
            "title": "Created",
            "type": "string"
          }
        },
        "required": [
          "assessment_id",
          "ws_id",
          "call_id",
          "func_name",
          "created"
        ],
        "title": "OutputAssessmentInfo",
        "type": "object"
      },
      "ListOutputAssessmentsResponse": {
        "description": "Response for output assessment listing.",
        "properties": {
          "assessments": {
            "items": {
              "$ref": "#/components/schemas/OutputAssessmentInfo"
            },
            "title": "Assessments",
            "type": "array"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "assessments",
          "total"
        ],
        "title": "ListOutputAssessmentsResponse",
        "type": "object"
      },
      "AdminMemoryInfo": {
        "properties": {
          "memory_id": {
            "title": "Memory Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "scope": {
            "title": "Scope",
            "type": "string"
          },
          "scope_id": {
            "default": "",
            "title": "Scope Id",
            "type": "string"
          },
          "content": {
            "title": "Content",
            "type": "string"
          },
          "created": {
            "title": "Created",
            "type": "string"
          },
          "updated": {
            "title": "Updated",
            "type": "string"
          },
          "last_accessed": {
            "default": "",
            "title": "Last Accessed",
            "type": "string"
          },
          "access_count": {
            "default": 0,
            "title": "Access Count",
            "type": "integer"
          }
        },
        "required": [
          "memory_id",
          "name",
          "type",
          "scope",
          "content",
          "created",
          "updated"
        ],
        "title": "AdminMemoryInfo",
        "type": "object"
      },
      "ListAdminMemoriesResponse": {
        "properties": {
          "memories": {
            "items": {
              "$ref": "#/components/schemas/AdminMemoryInfo"
            },
            "title": "Memories",
            "type": "array"
          },
          "total": {
            "default": 0,
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "memories"
        ],
        "title": "ListAdminMemoriesResponse",
        "type": "object"
      },
      "SettingInfo": {
        "properties": {
          "key": {
            "title": "Key",
            "type": "string"
          },
          "value": {
            "default": null,
            "title": "Value"
          },
          "source": {
            "default": "default",
            "title": "Source",
            "type": "string"
          },
          "type": {
            "default": "str",
            "title": "Type",
            "type": "string"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "section": {
            "default": "",
            "title": "Section",
            "type": "string"
          },
          "is_secret": {
            "default": false,
            "title": "Is Secret",
            "type": "boolean"
          },
          "node_id": {
            "default": "",
            "title": "Node Id",
            "type": "string"
          },
          "changed_by": {
            "default": "",
            "title": "Changed By",
            "type": "string"
          },
          "updated": {
            "default": "",
            "title": "Updated",
            "type": "string"
          },
          "restart_required": {
            "default": false,
            "title": "Restart Required",
            "type": "boolean"
          }
        },
        "required": [
          "key"
        ],
        "title": "SettingInfo",
        "type": "object"
      },
      "ListSettingsResponse": {
        "properties": {
          "settings": {
            "items": {
              "$ref": "#/components/schemas/SettingInfo"
            },
            "title": "Settings",
            "type": "array"
          }
        },
        "required": [
          "settings"
        ],
        "title": "ListSettingsResponse",
        "type": "object"
      },
      "SettingSchemaInfo": {
        "properties": {
          "key": {
            "title": "Key",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "default": {
            "default": null,
            "title": "Default"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "section": {
            "default": "",
            "title": "Section",
            "type": "string"
          },
          "is_secret": {
            "default": false,
            "title": "Is Secret",
            "type": "boolean"
          },
          "min_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Min Value"
          },
          "max_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max Value"
          },
          "choices": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Choices"
          },
          "restart_required": {
            "default": false,
            "title": "Restart Required",
            "type": "boolean"
          }
        },
        "required": [
          "key",
          "type"
        ],
        "title": "SettingSchemaInfo",
        "type": "object"
      },
      "ListSettingSchemaResponse": {
        "properties": {
          "schema": {
            "items": {
              "$ref": "#/components/schemas/SettingSchemaInfo"
            },
            "title": "Schema",
            "type": "array"
          }
        },
        "required": [
          "schema"
        ],
        "title": "ListSettingSchemaResponse",
        "type": "object"
      },
      "UpdateSettingRequest": {
        "properties": {
          "value": {
            "title": "Value"
          },
          "node_id": {
            "default": "",
            "title": "Node Id",
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "title": "UpdateSettingRequest",
        "type": "object"
      },
      "McpServerDetail": {
        "properties": {
          "server_id": {
            "title": "Server Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "transport": {
            "title": "Transport",
            "type": "string"
          },
          "command": {
            "default": "",
            "title": "Command",
            "type": "string"
          },
          "args": {
            "default": "[]",
            "title": "Args",
            "type": "string"
          },
          "url": {
            "default": "",
            "title": "Url",
            "type": "string"
          },
          "headers": {
            "default": "{}",
            "title": "Headers",
            "type": "string"
          },
          "env": {
            "default": "{}",
            "title": "Env",
            "type": "string"
          },
          "auto_approve": {
            "default": false,
            "title": "Auto Approve",
            "type": "boolean"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "created_by": {
            "default": "",
            "title": "Created By",
            "type": "string"
          },
          "registry_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Registry Name"
          },
          "registry_version": {
            "default": "",
            "title": "Registry Version",
            "type": "string"
          },
          "registry_meta": {
            "default": "{}",
            "title": "Registry Meta",
            "type": "string"
          },
          "created": {
            "title": "Created",
            "type": "string"
          },
          "updated": {
            "title": "Updated",
            "type": "string"
          },
          "status": {
            "additionalProperties": {
              "$ref": "#/components/schemas/McpServerStatus"
            },
            "title": "Status",
            "type": "object"
          },
          "source": {
            "default": "",
            "title": "Source",
            "type": "string"
          }
        },
        "required": [
          "server_id",
          "name",
          "transport",
          "created",
          "updated"
        ],
        "title": "McpServerDetail",
        "type": "object"
      },
      "McpServerStatus": {
        "properties": {
          "connected": {
            "default": false,
            "title": "Connected",
            "type": "boolean"
          },
          "tools": {
            "default": 0,
            "title": "Tools",
            "type": "integer"
          },
          "resources": {
            "default": 0,
            "title": "Resources",
            "type": "integer"
          },
          "prompts": {
            "default": 0,
            "title": "Prompts",
            "type": "integer"
          },
          "error": {
            "default": "",
            "title": "Error",
            "type": "string"
          },
          "transport": {
            "default": "",
            "title": "Transport",
            "type": "string"
          },
          "command": {
            "default": "",
            "title": "Command",
            "type": "string"
          },
          "url": {
            "default": "",
            "title": "Url",
            "type": "string"
          }
        },
        "title": "McpServerStatus",
        "type": "object"
      },
      "CreateMcpServerRequest": {
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "transport": {
            "title": "Transport",
            "type": "string"
          },
          "command": {
            "default": "",
            "title": "Command",
            "type": "string"
          },
          "args": {
            "default": [],
            "items": {
              "type": "string"
            },
            "title": "Args",
            "type": "array"
          },
          "url": {
            "default": "",
            "title": "Url",
            "type": "string"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Headers",
            "type": "object"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Env",
            "type": "object"
          },
          "auto_approve": {
            "default": false,
            "title": "Auto Approve",
            "type": "boolean"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "transport"
        ],
        "title": "CreateMcpServerRequest",
        "type": "object"
      },
      "UpdateMcpServerRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "transport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Transport"
          },
          "command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Command"
          },
          "args": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Args"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Url"
          },
          "headers": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Headers"
          },
          "env": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Env"
          },
          "auto_approve": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Auto Approve"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Enabled"
          }
        },
        "title": "UpdateMcpServerRequest",
        "type": "object"
      },
      "ListMcpServersResponse": {
        "properties": {
          "servers": {
            "items": {
              "$ref": "#/components/schemas/McpServerDetail"
            },
            "title": "Servers",
            "type": "array"
          }
        },
        "required": [
          "servers"
        ],
        "title": "ListMcpServersResponse",
        "type": "object"
      },
      "ImportMcpConfigRequest": {
        "properties": {
          "config": {
            "additionalProperties": true,
            "description": "JSON config object with mcpServers key",
            "title": "Config",
            "type": "object"
          }
        },
        "required": [
          "config"
        ],
        "title": "ImportMcpConfigRequest",
        "type": "object"
      },
      "ImportMcpConfigResponse": {
        "properties": {
          "imported": {
            "default": [],
            "items": {
              "type": "string"
            },
            "title": "Imported",
            "type": "array"
          },
          "skipped": {
            "default": [],
            "items": {
              "type": "string"
            },
            "title": "Skipped",
            "type": "array"
          },
          "errors": {
            "default": [],
            "items": {
              "type": "string"
            },
            "title": "Errors",
            "type": "array"
          }
        },
        "title": "ImportMcpConfigResponse",
        "type": "object"
      },
      "McpReloadResponse": {
        "properties": {
          "status": {
            "default": "ok",
            "title": "Status",
            "type": "string"
          },
          "results": {
            "additionalProperties": true,
            "title": "Results",
            "type": "object"
          }
        },
        "title": "McpReloadResponse",
        "type": "object"
      },
      "ModelDefinitionInfo": {
        "properties": {
          "definition_id": {
            "title": "Definition Id",
            "type": "string"
          },
          "alias": {
            "title": "Alias",
            "type": "string"
          },
          "model": {
            "title": "Model",
            "type": "string"
          },
          "provider": {
            "default": "openai",
            "title": "Provider",
            "type": "string"
          },
          "base_url": {
            "default": "",
            "title": "Base Url",
            "type": "string"
          },
          "api_key": {
            "default": "",
            "title": "Api Key",
            "type": "string"
          },
          "context_window": {
            "default": 32768,
            "title": "Context Window",
            "type": "integer"
          },
          "capabilities": {
            "default": "{}",
            "title": "Capabilities",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "temperature": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Temperature"
          },
          "max_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max Tokens"
          },
          "reasoning_effort": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Reasoning Effort"
          },
          "source": {
            "default": "",
            "title": "Source",
            "type": "string"
          },
          "created_by": {
            "default": "",
            "title": "Created By",
            "type": "string"
          },
          "created": {
            "default": "",
            "title": "Created",
            "type": "string"
          },
          "updated": {
            "default": "",
            "title": "Updated",
            "type": "string"
          }
        },
        "required": [
          "definition_id",
          "alias",
          "model"
        ],
        "title": "ModelDefinitionInfo",
        "type": "object"
      },
      "CreateModelDefinitionRequest": {
        "properties": {
          "alias": {
            "title": "Alias",
            "type": "string"
          },
          "model": {
            "title": "Model",
            "type": "string"
          },
          "provider": {
            "default": "openai",
            "title": "Provider",
            "type": "string"
          },
          "base_url": {
            "default": "",
            "title": "Base Url",
            "type": "string"
          },
          "api_key": {
            "default": "",
            "title": "Api Key",
            "type": "string"
          },
          "context_window": {
            "default": 32768,
            "title": "Context Window",
            "type": "integer"
          },
          "capabilities": {
            "additionalProperties": true,
            "title": "Capabilities",
            "type": "object"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "temperature": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Temperature"
          },
          "max_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max Tokens"
          },
          "reasoning_effort": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Reasoning Effort"
          }
        },
        "required": [
          "alias",
          "model"
        ],
        "title": "CreateModelDefinitionRequest",
        "type": "object"
      },
      "UpdateModelDefinitionRequest": {
        "properties": {
          "alias": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Alias"
          },
          "model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Model"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Provider"
          },
          "base_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Base Url"
          },
          "api_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Api Key"
          },
          "context_window": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Context Window"
          },
          "capabilities": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Capabilities"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Enabled"
          },
          "temperature": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Temperature"
          },
          "max_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max Tokens"
          },
          "reasoning_effort": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Reasoning Effort"
          }
        },
        "title": "UpdateModelDefinitionRequest",
        "type": "object"
      },
      "ListModelDefinitionsResponse": {
        "properties": {
          "models": {
            "items": {
              "$ref": "#/components/schemas/ModelDefinitionInfo"
            },
            "title": "Models",
            "type": "array"
          }
        },
        "required": [
          "models"
        ],
        "title": "ListModelDefinitionsResponse",
        "type": "object"
      },
      "ModelReloadResponse": {
        "properties": {
          "status": {
            "default": "ok",
            "title": "Status",
            "type": "string"
          },
          "results": {
            "additionalProperties": true,
            "title": "Results",
            "type": "object"
          }
        },
        "title": "ModelReloadResponse",
        "type": "object"
      },
      "DetectModelRequest": {
        "properties": {
          "provider": {
            "default": "openai",
            "title": "Provider",
            "type": "string"
          },
          "base_url": {
            "default": "",
            "title": "Base Url",
            "type": "string"
          },
          "api_key": {
            "default": "",
            "title": "Api Key",
            "type": "string"
          },
          "model": {
            "default": "",
            "title": "Model",
            "type": "string"
          },
          "definition_id": {
            "default": "",
            "title": "Definition Id",
            "type": "string"
          }
        },
        "title": "DetectModelRequest",
        "type": "object"
      },
      "DetectModelResponse": {
        "properties": {
          "reachable": {
            "default": false,
            "title": "Reachable",
            "type": "boolean"
          },
          "model_found": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Model Found"
          },
          "available_models": {
            "items": {
              "type": "string"
            },
            "title": "Available Models",
            "type": "array"
          },
          "context_window": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Context Window"
          },
          "server_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Server Type"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Error"
          }
        },
        "title": "DetectModelResponse",
        "type": "object"
      },
      "ModelCapabilitiesResponse": {
        "properties": {
          "model": {
            "title": "Model",
            "type": "string"
          },
          "provider": {
            "title": "Provider",
            "type": "string"
          },
          "known": {
            "default": false,
            "title": "Known",
            "type": "boolean"
          },
          "capabilities": {
            "additionalProperties": true,
            "title": "Capabilities",
            "type": "object"
          }
        },
        "required": [
          "model",
          "provider"
        ],
        "title": "ModelCapabilitiesResponse",
        "type": "object"
      },
      "KnownModelsResponse": {
        "properties": {
          "provider": {
            "title": "Provider",
            "type": "string"
          },
          "models": {
            "items": {
              "type": "string"
            },
            "title": "Models",
            "type": "array"
          }
        },
        "required": [
          "provider"
        ],
        "title": "KnownModelsResponse",
        "type": "object"
      },
      "AvailableModelInfo": {
        "properties": {
          "alias": {
            "title": "Alias",
            "type": "string"
          },
          "model": {
            "title": "Model",
            "type": "string"
          },
          "provider": {
            "title": "Provider",
            "type": "string"
          }
        },
        "required": [
          "alias",
          "model",
          "provider"
        ],
        "title": "AvailableModelInfo",
        "type": "object"
      },
      "ListAvailableModelsResponse": {
        "properties": {
          "models": {
            "items": {
              "$ref": "#/components/schemas/AvailableModelInfo"
            },
            "title": "Models",
            "type": "array"
          },
          "default_alias": {
            "default": "",
            "title": "Default Alias",
            "type": "string"
          },
          "channel_default_alias": {
            "default": "",
            "title": "Channel Default Alias",
            "type": "string"
          }
        },
        "title": "ListAvailableModelsResponse",
        "type": "object"
      },
      "RegistrySearchResponse": {
        "properties": {
          "servers": {
            "items": {
              "$ref": "#/components/schemas/RegistryServerInfo"
            },
            "title": "Servers",
            "type": "array"
          },
          "total": {
            "default": 0,
            "title": "Total",
            "type": "integer"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Next Cursor"
          }
        },
        "required": [
          "servers"
        ],
        "title": "RegistrySearchResponse",
        "type": "object"
      },
      "RegistryPackageInfo": {
        "properties": {
          "registry_type": {
            "default": "",
            "title": "Registry Type",
            "type": "string"
          },
          "identifier": {
            "default": "",
            "title": "Identifier",
            "type": "string"
          },
          "version": {
            "default": "",
            "title": "Version",
            "type": "string"
          },
          "transport_type": {
            "default": "stdio",
            "title": "Transport Type",
            "type": "string"
          },
          "environment_variables": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Environment Variables",
            "type": "array"
          }
        },
        "title": "RegistryPackageInfo",
        "type": "object"
      },
      "RegistryRemoteInfo": {
        "properties": {
          "type": {
            "default": "streamable-http",
            "title": "Type",
            "type": "string"
          },
          "url": {
            "default": "",
            "title": "Url",
            "type": "string"
          },
          "headers": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Headers",
            "type": "array"
          },
          "variables": {
            "additionalProperties": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Variables",
            "type": "object"
          }
        },
        "title": "RegistryRemoteInfo",
        "type": "object"
      },
      "RegistryServerInfo": {
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "title": {
            "default": "",
            "title": "Title",
            "type": "string"
          },
          "version": {
            "default": "",
            "title": "Version",
            "type": "string"
          },
          "website_url": {
            "default": "",
            "title": "Website Url",
            "type": "string"
          },
          "repository": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Repository",
            "type": "object"
          },
          "icons": {
            "items": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "title": "Icons",
            "type": "array"
          },
          "remotes": {
            "items": {
              "$ref": "#/components/schemas/RegistryRemoteInfo"
            },
            "title": "Remotes",
            "type": "array"
          },
          "packages": {
            "items": {
              "$ref": "#/components/schemas/RegistryPackageInfo"
            },
            "title": "Packages",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          },
          "installed": {
            "default": false,
            "title": "Installed",
            "type": "boolean"
          },
          "installed_server_id": {
            "default": "",
            "title": "Installed Server Id",
            "type": "string"
          },
          "installed_version": {
            "default": "",
            "title": "Installed Version",
            "type": "string"
          },
          "update_available": {
            "default": false,
            "title": "Update Available",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "title": "RegistryServerInfo",
        "type": "object"
      },
      "RegistryInstallRequest": {
        "properties": {
          "registry_name": {
            "title": "Registry Name",
            "type": "string"
          },
          "source": {
            "title": "Source",
            "type": "string"
          },
          "index": {
            "default": 0,
            "title": "Index",
            "type": "integer"
          },
          "name": {
            "default": "",
            "title": "Name",
            "type": "string"
          },
          "variables": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Variables",
            "type": "object"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Env",
            "type": "object"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Headers",
            "type": "object"
          }
        },
        "required": [
          "registry_name",
          "source"
        ],
        "title": "RegistryInstallRequest",
        "type": "object"
      },
      "SkillDiscoverResponse": {
        "properties": {
          "skills": {
            "items": {
              "$ref": "#/components/schemas/SkillDiscoverListing"
            },
            "title": "Skills",
            "type": "array"
          }
        },
        "required": [
          "skills"
        ],
        "title": "SkillDiscoverResponse",
        "type": "object"
      },
      "SkillDiscoverListing": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "author": {
            "default": "",
            "title": "Author",
            "type": "string"
          },
          "source": {
            "default": "",
            "title": "Source",
            "type": "string"
          },
          "source_url": {
            "default": "",
            "title": "Source Url",
            "type": "string"
          },
          "install_count": {
            "default": 0,
            "title": "Install Count",
            "type": "integer"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "installed": {
            "default": false,
            "title": "Installed",
            "type": "boolean"
          },
          "risk_level": {
            "default": "",
            "title": "Risk Level",
            "type": "string"
          },
          "template_id": {
            "default": "",
            "title": "Template Id",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "SkillDiscoverListing",
        "type": "object"
      },
      "SkillInstallRequest": {
        "properties": {
          "source": {
            "title": "Source",
            "type": "string"
          },
          "skill_id": {
            "default": "",
            "title": "Skill Id",
            "type": "string"
          },
          "url": {
            "default": "",
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "source"
        ],
        "title": "SkillInstallRequest",
        "type": "object"
      },
      "SkillInstallResponse": {
        "properties": {
          "installed": {
            "items": {
              "$ref": "#/components/schemas/SkillInfo"
            },
            "title": "Installed",
            "type": "array"
          },
          "skipped": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/SkillInstallSkipped"
            },
            "title": "Skipped",
            "type": "array"
          },
          "total": {
            "default": 0,
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "installed"
        ],
        "title": "SkillInstallResponse",
        "type": "object"
      },
      "SkillInfo": {
        "properties": {
          "template_id": {
            "description": "Skill ID",
            "title": "Template Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "category": {
            "title": "Category",
            "type": "string"
          },
          "content": {
            "title": "Content",
            "type": "string"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "variables": {
            "default": "[]",
            "title": "Variables",
            "type": "string"
          },
          "is_default": {
            "title": "Is Default",
            "type": "boolean"
          },
          "activation": {
            "default": "named",
            "title": "Activation",
            "type": "string"
          },
          "org_id": {
            "title": "Org Id",
            "type": "string"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "origin": {
            "default": "manual",
            "title": "Origin",
            "type": "string"
          },
          "mcp_server": {
            "default": "",
            "title": "Mcp Server",
            "type": "string"
          },
          "readonly": {
            "default": false,
            "title": "Readonly",
            "type": "boolean"
          },
          "source_url": {
            "default": "",
            "title": "Source Url",
            "type": "string"
          },
          "version": {
            "default": "1.0.0",
            "title": "Version",
            "type": "string"
          },
          "author": {
            "default": "",
            "title": "Author",
            "type": "string"
          },
          "token_estimate": {
            "default": 0,
            "title": "Token Estimate",
            "type": "integer"
          },
          "model": {
            "default": "",
            "title": "Model",
            "type": "string"
          },
          "auto_approve": {
            "default": false,
            "title": "Auto Approve",
            "type": "boolean"
          },
          "temperature": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Temperature"
          },
          "reasoning_effort": {
            "default": "",
            "title": "Reasoning Effort",
            "type": "string"
          },
          "max_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max Tokens"
          },
          "token_budget": {
            "default": 0,
            "title": "Token Budget",
            "type": "integer"
          },
          "agent_max_turns": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Agent Max Turns"
          },
          "notify_on_complete": {
            "default": "{}",
            "title": "Notify On Complete",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "priority": {
            "default": 0,
            "title": "Priority",
            "type": "integer"
          },
          "allowed_tools": {
            "default": "[]",
            "title": "Allowed Tools",
            "type": "string"
          },
          "license": {
            "default": "",
            "title": "License",
            "type": "string"
          },
          "compatibility": {
            "default": "",
            "title": "Compatibility",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/SkillKind",
            "default": "any"
          },
          "risk_level": {
            "default": "",
            "title": "Risk Level",
            "type": "string"
          },
          "scan_report": {
            "default": "{}",
            "title": "Scan Report",
            "type": "string"
          },
          "scan_version": {
            "default": "",
            "title": "Scan Version",
            "type": "string"
          },
          "resource_count": {
            "default": 0,
            "title": "Resource Count",
            "type": "integer"
          },
          "created": {
            "title": "Created",
            "type": "string"
          },
          "updated": {
            "title": "Updated",
            "type": "string"
          }
        },
        "required": [
          "template_id",
          "name",
          "category",
          "content",
          "is_default",
          "org_id",
          "created_by",
          "created",
          "updated"
        ],
        "title": "SkillInfo",
        "type": "object"
      },
      "SkillInstallSkipped": {
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "reason": {
            "title": "Reason",
            "type": "string"
          }
        },
        "required": [
          "name",
          "reason"
        ],
        "title": "SkillInstallSkipped",
        "type": "object"
      },
      "SkillKind": {
        "description": "Which ``list_skills`` surface a skill row is visible on.\n\n``INTERACTIVE`` \u2014 only the interactive-session activation path sees\nthis row.  ``COORDINATOR`` \u2014 only the coordinator's ``list_skills``\ntool sees this row.  ``ANY`` \u2014 both sides (default for legacy rows\npredating the classifier).",
        "enum": [
          "interactive",
          "coordinator",
          "any"
        ],
        "title": "SkillKind",
        "type": "string"
      },
      "SkillVersionInfo": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "skill_id": {
            "title": "Skill Id",
            "type": "string"
          },
          "version": {
            "title": "Version",
            "type": "integer"
          },
          "snapshot": {
            "title": "Snapshot",
            "type": "string"
          },
          "changed_by": {
            "title": "Changed By",
            "type": "string"
          },
          "created": {
            "title": "Created",
            "type": "string"
          }
        },
        "required": [
          "id",
          "skill_id",
          "version",
          "snapshot",
          "changed_by",
          "created"
        ],
        "title": "SkillVersionInfo",
        "type": "object"
      },
      "CreateSkillRequest": {
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "content": {
            "title": "Content",
            "type": "string"
          },
          "category": {
            "default": "general",
            "title": "Category",
            "type": "string"
          },
          "description": {
            "description": "Human-readable description surfaced by ``list_skills`` and the admin UI.  Must be non-empty \u2014 catches skills registered without thinking about discoverability before they reach a model's tool-selection prompt.",
            "maxLength": 1024,
            "minLength": 1,
            "title": "Description",
            "type": "string"
          },
          "tags": {
            "default": "[]",
            "title": "Tags",
            "type": "string"
          },
          "variables": {
            "default": "[]",
            "title": "Variables",
            "type": "string"
          },
          "is_default": {
            "default": false,
            "title": "Is Default",
            "type": "boolean"
          },
          "activation": {
            "default": "named",
            "title": "Activation",
            "type": "string"
          },
          "org_id": {
            "default": "",
            "title": "Org Id",
            "type": "string"
          },
          "author": {
            "default": "",
            "title": "Author",
            "type": "string"
          },
          "version": {
            "default": "1.0.0",
            "title": "Version",
            "type": "string"
          },
          "model": {
            "default": "",
            "title": "Model",
            "type": "string"
          },
          "auto_approve": {
            "default": false,
            "title": "Auto Approve",
            "type": "boolean"
          },
          "temperature": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Temperature"
          },
          "reasoning_effort": {
            "default": "",
            "title": "Reasoning Effort",
            "type": "string"
          },
          "max_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max Tokens"
          },
          "token_budget": {
            "default": 0,
            "title": "Token Budget",
            "type": "integer"
          },
          "agent_max_turns": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Agent Max Turns"
          },
          "notify_on_complete": {
            "default": "{}",
            "title": "Notify On Complete",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "priority": {
            "default": 0,
            "title": "Priority",
            "type": "integer"
          },
          "allowed_tools": {
            "default": "[]",
            "title": "Allowed Tools",
            "type": "string"
          },
          "license": {
            "default": "",
            "title": "License",
            "type": "string"
          },
          "compatibility": {
            "default": "",
            "title": "Compatibility",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/SkillKind",
            "default": "any",
            "description": "Classifier routing the skill to ``list_skills`` calls.  ``interactive`` is visible only to the interactive-session activation path; ``coordinator`` is visible only to the coordinator's ``list_skills`` tool; ``any`` (default) is visible on both sides, which preserves pre-upgrade behaviour for legacy rows."
          }
        },
        "required": [
          "name",
          "content",
          "description"
        ],
        "title": "CreateSkillRequest",
        "type": "object"
      },
      "UpdateSkillRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Content"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Category"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 1024,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When present, replaces the skill description.  Must be non-empty \u2014 the admin endpoint rejects a blanking update.",
            "title": "Description"
          },
          "tags": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Tags"
          },
          "variables": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Variables"
          },
          "is_default": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Is Default"
          },
          "activation": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Activation"
          },
          "author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Author"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Version"
          },
          "model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Model"
          },
          "auto_approve": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Auto Approve"
          },
          "temperature": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Temperature"
          },
          "reasoning_effort": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Reasoning Effort"
          },
          "max_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Max Tokens"
          },
          "token_budget": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Token Budget"
          },
          "agent_max_turns": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Agent Max Turns"
          },
          "notify_on_complete": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Notify On Complete"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Enabled"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Priority"
          },
          "allowed_tools": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Allowed Tools"
          },
          "license": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "License"
          },
          "compatibility": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Compatibility"
          },
          "kind": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SkillKind"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When present, updates the skill's classifier.  Same accepted values as ``CreateSkillRequest.kind``."
          }
        },
        "title": "UpdateSkillRequest",
        "type": "object"
      },
      "ListSkillsResponse": {
        "properties": {
          "skills": {
            "items": {
              "$ref": "#/components/schemas/SkillInfo"
            },
            "title": "Skills",
            "type": "array"
          }
        },
        "required": [
          "skills"
        ],
        "title": "ListSkillsResponse",
        "type": "object"
      },
      "ListSkillVersionsResponse": {
        "properties": {
          "versions": {
            "items": {
              "$ref": "#/components/schemas/SkillVersionInfo"
            },
            "title": "Versions",
            "type": "array"
          }
        },
        "required": [
          "versions"
        ],
        "title": "ListSkillVersionsResponse",
        "type": "object"
      },
      "SkillResourceInfo": {
        "properties": {
          "resource_id": {
            "title": "Resource Id",
            "type": "string"
          },
          "skill_id": {
            "title": "Skill Id",
            "type": "string"
          },
          "path": {
            "title": "Path",
            "type": "string"
          },
          "content": {
            "default": "",
            "title": "Content",
            "type": "string"
          },
          "content_type": {
            "default": "text/plain",
            "title": "Content Type",
            "type": "string"
          },
          "size": {
            "default": 0,
            "title": "Size",
            "type": "integer"
          },
          "created": {
            "title": "Created",
            "type": "string"
          }
        },
        "required": [
          "resource_id",
          "skill_id",
          "path",
          "created"
        ],
        "title": "SkillResourceInfo",
        "type": "object"
      },
      "CreateSkillResourceRequest": {
        "properties": {
          "path": {
            "title": "Path",
            "type": "string"
          },
          "content": {
            "title": "Content",
            "type": "string"
          },
          "content_type": {
            "default": "text/plain",
            "title": "Content Type",
            "type": "string"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "title": "CreateSkillResourceRequest",
        "type": "object"
      },
      "ListSkillResourcesResponse": {
        "properties": {
          "resources": {
            "items": {
              "$ref": "#/components/schemas/SkillResourceInfo"
            },
            "title": "Resources",
            "type": "array"
          }
        },
        "required": [
          "resources"
        ],
        "title": "ListSkillResourcesResponse",
        "type": "object"
      },
      "RouteResponse": {
        "description": "Route lookup result \u2014 which node owns a workstream.",
        "properties": {
          "node_url": {
            "title": "Node Url",
            "type": "string"
          },
          "node_id": {
            "title": "Node Id",
            "type": "string"
          }
        },
        "required": [
          "node_url",
          "node_id"
        ],
        "title": "RouteResponse",
        "type": "object"
      },
      "RouteCreateResponse": {
        "description": "Workstream creation via the routing proxy.",
        "properties": {
          "ws_id": {
            "default": "",
            "title": "Ws Id",
            "type": "string"
          },
          "node_url": {
            "default": "",
            "title": "Node Url",
            "type": "string"
          },
          "node_id": {
            "default": "",
            "title": "Node Id",
            "type": "string"
          }
        },
        "title": "RouteCreateResponse",
        "type": "object"
      },
      "SkillSummary": {
        "properties": {
          "name": {
            "description": "Skill name",
            "title": "Name",
            "type": "string"
          },
          "category": {
            "default": "",
            "description": "Skill category",
            "title": "Category",
            "type": "string"
          },
          "description": {
            "default": "",
            "description": "Skill description for discovery",
            "title": "Description",
            "type": "string"
          },
          "tags": {
            "description": "Semantic tags",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "is_default": {
            "default": false,
            "description": "Whether auto-applied to all sessions",
            "title": "Is Default",
            "type": "boolean"
          },
          "activation": {
            "default": "named",
            "description": "Activation mode: default, named, search",
            "title": "Activation",
            "type": "string"
          },
          "origin": {
            "default": "manual",
            "description": "Source: manual, mcp, skills.sh, github",
            "title": "Origin",
            "type": "string"
          },
          "author": {
            "default": "",
            "description": "Skill author",
            "title": "Author",
            "type": "string"
          },
          "version": {
            "default": "1.0.0",
            "description": "Skill version",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "title": "SkillSummary",
        "type": "object"
      },
      "ListSkillSummaryResponse": {
        "properties": {
          "skills": {
            "items": {
              "$ref": "#/components/schemas/SkillSummary"
            },
            "title": "Skills",
            "type": "array"
          }
        },
        "required": [
          "skills"
        ],
        "title": "ListSkillSummaryResponse",
        "type": "object"
      },
      "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"
          }
        },
        "required": [
          "ws_id",
          "name",
          "state",
          "user_id"
        ],
        "title": "WorkstreamDetailResponse",
        "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 OpenAI-like message-row\nshape on both kinds; the lift adds the endpoint to interactive as\na feature gain (pre-lift interactive only exposed history through\nthe SSE replay on ``/events``).",
        "properties": {
          "ws_id": {
            "title": "Ws Id",
            "type": "string"
          },
          "messages": {
            "description": "Tail of the workstream's reconstructed message history (provider-fidelity OpenAI-like shape). Bounded by the ``limit`` query parameter (default 100, max 500).",
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Messages",
            "type": "array"
          }
        },
        "required": [
          "ws_id"
        ],
        "title": "WorkstreamHistoryResponse",
        "type": "object"
      }
    }
  }
}
