mirror of
https://github.com/turnstonelabs/turnstone.git
synced 2026-08-12 23:12:23 -06:00
9ed8b1e0b5
New ``make_create_handler(cfg, *, audit_emit=None)`` factory in ``turnstone/core/session_routes.py`` consumes five new ``SessionEndpointConfig`` fields (``create_supports_attachments``, ``create_supports_user_id_override``, ``create_validate_request``, ``create_build_kwargs``, ``create_post_install``) and replaces both ``create_workstream`` and ``coordinator_create`` bodies. Same factory + capability-flag pattern as the merged cancel / open / events lifts. ``_validate_and_save_uploaded_files`` lifted to ``turnstone.core.attachments`` so both processes call one kind-agnostic implementation. Coord parity gains (§ Post-P3 reckoning item #1 + carry-forward): - Create-time attachments: multipart parsing, validate+save+rollback, ``attachment_ids`` on the response. Coord adapter ``send`` doesn't yet reserve attachments at create time, so the rows save as pending and the next ``/send`` picks them up via the standard send-with-attachments path. - Disabled-skill rejection (matches interactive's pre-lift gate). - Always-include response shape ``{ws_id, name, resumed, message_count, attachment_ids}`` populated with default ``False``/``0``/``[]`` on the fields coord doesn't fill. - 200 status (was 201). - Audit-emit failures swallow + warning log instead of 500. Both kinds converge on the manager-at-capacity 429, factory-misconfig 503, and correlation_id'd 500 for unexpected ``mgr.create`` failure (interactive lifted up to coord's safer error envelope). Three /review fixes folded in: - ``notify_targets`` malformed input gates at the validator (400) instead of bubbling out of post_install as a 500 — pre-fix the workstream had already been created + audited + broadcast by the time the validation raised. - Skill-lookup storage failures now share the correlation_id'd 500 path with ``mgr.create`` (was masquerading as 400 "Skill not found"). - Whitespace-only ``skill`` field treated as empty (matches pre-lift coord). CHANGELOG entry under [Unreleased] documents every observable behaviour change. OpenAPI spec regenerated. Three new coord regression tests (create-time-attachments save pending rows, always-include parity fields, disabled-skill rejection) plus one interactive regression test (notify_targets 400). 4500 tests passing.
11743 lines
300 KiB
JSON
11743 lines
300 KiB
JSON
{
|
|
"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/CoordinatorListResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Error 403",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Error 503",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/api/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/CoordinatorDetailResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Error 400",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Error 403",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Error 404",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Error 500",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Error 503",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/api/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/CoordinatorHistoryResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Error 403",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Error 404",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Error 503",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/api/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 ``task_list`` model tool. Corrupt envelopes return an empty list (the tool itself surfaces corruption errors on mutation).",
|
|
"parameters": [
|
|
{
|
|
"name": "ws_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CoordinatorTasksResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Error 400",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Error 403",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Error 404",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Error 503",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/api/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"
|
|
},
|
|
"CoordinatorDetailResponse": {
|
|
"description": "Response body for GET /v1/api/workstreams/{ws_id}.",
|
|
"properties": {
|
|
"ws_id": {
|
|
"title": "Ws Id",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"title": "Name",
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"title": "State",
|
|
"type": "string"
|
|
},
|
|
"user_id": {
|
|
"title": "User Id",
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"default": "coordinator",
|
|
"title": "Kind",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"ws_id",
|
|
"name",
|
|
"state",
|
|
"user_id"
|
|
],
|
|
"title": "CoordinatorDetailResponse",
|
|
"type": "object"
|
|
},
|
|
"CoordinatorHistoryResponse": {
|
|
"description": "Response body for GET /v1/api/workstreams/{ws_id}/history.",
|
|
"properties": {
|
|
"ws_id": {
|
|
"title": "Ws Id",
|
|
"type": "string"
|
|
},
|
|
"messages": {
|
|
"description": "Tail of the coordinator's reconstructed message history (provider-fidelity OpenAI-like shape). Bounded by the ``limit`` query parameter (default 100, max 500).",
|
|
"items": {
|
|
"additionalProperties": true,
|
|
"type": "object"
|
|
},
|
|
"title": "Messages",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"ws_id"
|
|
],
|
|
"title": "CoordinatorHistoryResponse",
|
|
"type": "object"
|
|
},
|
|
"CoordinatorInfo": {
|
|
"description": "Per-coordinator row in the list response.",
|
|
"properties": {
|
|
"ws_id": {
|
|
"title": "Ws Id",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"title": "Name",
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"title": "State",
|
|
"type": "string"
|
|
},
|
|
"user_id": {
|
|
"title": "User Id",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"ws_id",
|
|
"name",
|
|
"state",
|
|
"user_id"
|
|
],
|
|
"title": "CoordinatorInfo",
|
|
"type": "object"
|
|
},
|
|
"CoordinatorListResponse": {
|
|
"description": "Response body for GET /v1/api/workstreams.",
|
|
"properties": {
|
|
"coordinators": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/CoordinatorInfo"
|
|
},
|
|
"title": "Coordinators",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"title": "CoordinatorListResponse",
|
|
"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 ``task_list(action='list')`` model tool returns.",
|
|
"properties": {
|
|
"version": {
|
|
"default": 1,
|
|
"title": "Version",
|
|
"type": "integer"
|
|
},
|
|
"tasks": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/CoordinatorTaskInfo"
|
|
},
|
|
"title": "Tasks",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"title": "CoordinatorTasksResponse",
|
|
"type": "object"
|
|
},
|
|
"CoordinatorTrustRequest": {
|
|
"description": "Body for POST /v1/api/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"
|
|
}
|
|
}
|
|
}
|
|
}
|