{"openapi":"3.1.0","info":{"title":"Idun Agent Engine Server","description":"A production-ready server for conversational AI agents","version":"0.6.1"},"paths":{"/agent/capabilities":{"get":{"tags":["Runtime"],"summary":"Capabilities","description":"Return the agent's capability descriptor for UI auto-configuration.","operationId":"capabilities_agent_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/agent/sessions":{"get":{"tags":["Runtime"],"summary":"List Sessions","description":"List session summaries from the active memory backend.\n\nReturns 501 when the adapter doesn't support listing (an ADK agent,\nor a LangGraph agent without a checkpointer). When SSO is enabled,\nthe user id from the JWT is forwarded to the adapter for per-user\nscoping.","operationId":"list_sessions_agent_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SessionSummary"},"type":"array","title":"Response List Sessions Agent Sessions Get"}}}}}}},"/agent/sessions/{session_id}":{"get":{"tags":["Runtime"],"summary":"Get Session","description":"Return a single session's reconstructed text-only message thread.\n\nReturns 501 when the adapter doesn't support detail retrieval and\n404 when the session id is unknown (or when the SSO-scoped user\nisn't allowed to see it — the adapter enforces that and returns\n``None``).","operationId":"get_session_agent_sessions__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agent/run":{"post":{"tags":["Runtime"],"summary":"Run","description":"Canonical AG-UI interaction endpoint.\n\nAccepts RunAgentInput, returns SSE stream of AG-UI events.","operationId":"run_agent_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAgentInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agent/graph":{"get":{"tags":["Runtime"],"summary":"Get Graph Ir","description":"Framework-agnostic JSON IR — primary contract for UI rendering.","operationId":"get_graph_ir_agent_graph_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentGraph"}}}}}}},"/agent/graph/mermaid":{"get":{"tags":["Runtime"],"summary":"Get Graph Mermaid","description":"Mermaid source string.","operationId":"get_graph_mermaid_agent_graph_mermaid_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Get Graph Mermaid Agent Graph Mermaid Get"}}}}}}},"/agent/graph/ascii":{"get":{"tags":["Runtime"],"summary":"Get Graph Ascii","description":"ASCII art rendering.","operationId":"get_graph_ascii_agent_graph_ascii_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Get Graph Ascii Agent Graph Ascii Get"}}}}}}},"/agent/config":{"get":{"tags":["Runtime"],"summary":"Get Config","description":"Get the current agent configuration.\n\nReturns 503 ``agent_not_ready`` when the engine booted unconfigured\nand ``configure_app`` hasn't run yet (no agent → no config to expose).","operationId":"get_config_agent_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/agent/stream":{"post":{"tags":["Runtime"],"summary":"Stream","description":"Process a message with the agent, streaming ag-ui events.","operationId":"stream_agent_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true}},"/agent/copilotkit/stream":{"post":{"tags":["Runtime"],"summary":"Copilotkit Stream","description":"Process a message with the agent, streaming ag-ui events.","operationId":"copilotkit_stream_agent_copilotkit_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAgentInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true}},"/health":{"get":{"tags":["Runtime"],"summary":"Health Check","description":"Health check endpoint for monitoring and load balancers.\n\nReturns ``status: \"ok\"`` only when an agent is registered and\n``/agent/*`` will accept requests. Returns ``status: \"degraded\"`` with\n``agent_ready: false`` when no agent is configured — e.g. standalone\nadmin-only mode after an ``assemble_engine_config`` error, or the\npre-onboarding wizard state. When ``app.state.boot_error`` is set by\nthe standalone's assembly failure handler, it is surfaced as ``reason``\nso operators can diagnose without grepping logs.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/reload":{"post":{"tags":["Runtime"],"summary":"Reload Config","description":"Reload the agent configuration from the manager or a file.\n\nThe optional ``_auth`` dependency consults\n``app.state.reload_auth`` (configured via ``create_app(reload_auth=...)``)\nand, if set, invokes it. The configured callable is responsible for\nraising :class:`fastapi.HTTPException` to deny the request.","operationId":"reload_config_reload_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ReloadRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/_engine/info":{"get":{"tags":["Runtime"],"summary":"Engine Info","description":"Engine info endpoint — basic information about the service.","operationId":"engine_info__engine_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/agent/invoke":{"post":{"summary":"Invoke","description":"Invoke the agent with a message and get a response.","operationId":"invoke_agent_invoke_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true}},"/admin/api/v1/auth/me":{"get":{"tags":["Auth & SSO"],"summary":"Me","description":"Return the current auth state.","operationId":"me_admin_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneAuthMe"}}}}}}},"/admin/api/v1/auth/login":{"post":{"tags":["Auth & SSO"],"summary":"Login","description":"Verify the password and set the signed session cookie.","operationId":"login_admin_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneAuthLoginBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneAuthMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/auth/logout":{"post":{"tags":["Auth & SSO"],"summary":"Logout","description":"Drop the session row and clear the cookie.","operationId":"logout_admin_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneAuthMutationResult"}}}}}}},"/admin/api/v1/auth/change-password":{"post":{"tags":["Auth & SSO"],"summary":"Change Password","description":"Replace the admin password hash.","operationId":"change_password_admin_api_v1_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneAuthChangePasswordBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneAuthMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/agent":{"get":{"tags":["Agent Configuration"],"summary":"Get Agent","description":"Return the current singleton agent.","operationId":"get_agent_admin_api_v1_agent_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneAgentRead"}}}}}},"patch":{"tags":["Agent Configuration"],"summary":"Patch Agent","description":"Update metadata fields on the singleton agent.\n\nEmpty body short-circuits with no DB write and no reload. Any\nnon-empty mutation flows through the 3-round reload pipeline.","operationId":"patch_agent_admin_api_v1_agent_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneAgentPatch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneAgentRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/memory":{"get":{"tags":["Agent Configuration"],"summary":"Get Memory","description":"Return the singleton memory row or 404 if absent.","operationId":"get_memory_admin_api_v1_memory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMemoryRead"}}}}}},"delete":{"tags":["Agent Configuration"],"summary":"Delete Memory","description":"Remove the singleton memory row.\n\nAfter delete, the engine assembly falls back to the default\nin-memory backend. The reload pipeline reassembles + validates\nthat fallback so a misconfigured agent row surfaces as a 422\nrather than leaving the engine in a half-deleted state.","operationId":"delete_memory_admin_api_v1_memory_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneSingletonDeleteResult_"}}}}}},"patch":{"tags":["Agent Configuration"],"summary":"Patch Memory","description":"Upsert the singleton memory row.\n\nFirst write requires both ``agentFramework`` and ``memory``.\nUpdates apply only the fields explicitly present in the body.\nThe reload pipeline reassembles + validates the engine config; a\nframework/memory mismatch rolls back with a 422.","operationId":"patch_memory_admin_api_v1_memory_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMemoryPatch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneMemoryRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/memory/check-connection":{"post":{"tags":["Agent Configuration"],"summary":"Check Memory Connection","description":"Probe the configured memory backend.\n\nReturns 404 if no memory row exists; otherwise calls the probe\nagainst the stored config. The probe never raises — failures land\nin the response body as ``ok=False``.","operationId":"check_memory_connection_admin_api_v1_memory_check_connection_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneConnectionCheck"}}}}}}},"/admin/api/v1/observability":{"get":{"tags":["Observability"],"summary":"Get Observability","description":"Return the singleton observability row or 404 if absent.","operationId":"get_observability_admin_api_v1_observability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneObservabilityRead"}}}}}},"delete":{"tags":["Observability"],"summary":"Delete Observability","description":"Remove the singleton observability row.\n\nAfter delete, the engine assembly drops the observability list. The\nreload pipeline reassembles + validates so a misconfigured agent\nsurfaces as a 422 rather than leaving the engine in a half deleted\nstate.","operationId":"delete_observability_admin_api_v1_observability_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneSingletonDeleteResult_"}}}}}},"patch":{"tags":["Observability"],"summary":"Patch Observability","description":"Upsert the singleton observability row.\n\nFirst write requires ``observability``. Updates apply only the\nfields explicitly present in the body. The reload pipeline\nreassembles + validates the engine config; failures roll back\nwith a 422.","operationId":"patch_observability_admin_api_v1_observability_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneObservabilityPatch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneObservabilityRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/observability/check-connection":{"post":{"tags":["Observability"],"summary":"Check Observability Connection","description":"Probe the configured observability provider.\n\nReturns 404 if no provider is configured. The probe never raises —\nfailures land in the response body as ``ok=False``.","operationId":"check_observability_connection_admin_api_v1_observability_check_connection_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneConnectionCheck"}}}}}}},"/admin/api/v1/mcp-servers":{"get":{"tags":["Integrations & Tools"],"summary":"List Mcp Servers","description":"Return all configured MCP server rows ordered by created_at.","operationId":"list_mcp_servers_admin_api_v1_mcp_servers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StandaloneMCPServerRead"},"type":"array","title":"Response List Mcp Servers Admin Api V1 Mcp Servers Get"}}}}}},"post":{"tags":["Integrations & Tools"],"summary":"Create Mcp Server","description":"Create a new MCP server row.\n\nSlug is derived from ``name`` and made unique with numeric\nsuffixes on collision. Empty post normalization slug returns 422.","operationId":"create_mcp_server_admin_api_v1_mcp_servers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMCPServerCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneMCPServerRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/mcp-servers/{mcp_id}":{"get":{"tags":["Integrations & Tools"],"summary":"Get Mcp Server","description":"Return a single MCP server row or 404.","operationId":"get_mcp_server_admin_api_v1_mcp_servers__mcp_id__get","parameters":[{"name":"mcp_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Mcp Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMCPServerRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Integrations & Tools"],"summary":"Patch Mcp Server","description":"Apply a shallow update to an existing MCP server row.\n\nOnly fields present in the body are touched. Slug is sticky on\nrename so existing references stay valid. Inner ``mcp_server`` is\nreplaced wholesale when provided.","operationId":"patch_mcp_server_admin_api_v1_mcp_servers__mcp_id__patch","parameters":[{"name":"mcp_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Mcp Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMCPServerPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneMCPServerRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Integrations & Tools"],"summary":"Delete Mcp Server","description":"Remove an MCP server row.\n\nEngine assembly drops the row from the active set. If the row was\nthe last one, the engine continues without an MCP layer.","operationId":"delete_mcp_server_admin_api_v1_mcp_servers__mcp_id__delete","parameters":[{"name":"mcp_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Mcp Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneDeleteResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/mcp-servers/{mcp_id}/tools":{"post":{"tags":["Integrations & Tools"],"summary":"List Mcp Server Tools","description":"Discover tools exposed by a single MCP server.\n\nDoubles as a connection check — if the server cannot be reached or\ncannot speak MCP, ``ok=False`` carries the upstream error in the\nresponse body. ``details.tools`` carries the discovered tool names\non success.","operationId":"list_mcp_server_tools_admin_api_v1_mcp_servers__mcp_id__tools_post","parameters":[{"name":"mcp_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Mcp Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneConnectionCheck"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/guardrails":{"get":{"tags":["Agent Configuration"],"summary":"List Guardrails","description":"Return all guardrail rows ordered by position then sort_order.","operationId":"list_guardrails_admin_api_v1_guardrails_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StandaloneGuardrailRead"},"type":"array","title":"Response List Guardrails Admin Api V1 Guardrails Get"}}}}}},"post":{"tags":["Agent Configuration"],"summary":"Create Guardrail","description":"Create a new guardrail row.\n\nSlug is derived from ``name`` and made unique with numeric\nsuffixes on collision. Empty post normalization slug returns 422.","operationId":"create_guardrail_admin_api_v1_guardrails_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneGuardrailCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneGuardrailRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/guardrails/{guardrail_id}":{"get":{"tags":["Agent Configuration"],"summary":"Get Guardrail","description":"Return a single guardrail row or 404.","operationId":"get_guardrail_admin_api_v1_guardrails__guardrail_id__get","parameters":[{"name":"guardrail_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Guardrail Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneGuardrailRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Agent Configuration"],"summary":"Patch Guardrail","description":"Apply a shallow update to an existing guardrail row.\n\nOnly fields present in the body are touched. Slug is sticky on\nrename so existing references stay valid. Inner ``guardrail`` is\nreplaced wholesale when provided. Reordering happens via\n``sort_order``.","operationId":"patch_guardrail_admin_api_v1_guardrails__guardrail_id__patch","parameters":[{"name":"guardrail_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Guardrail Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneGuardrailPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneGuardrailRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Agent Configuration"],"summary":"Delete Guardrail","description":"Remove a guardrail row.\n\nEngine assembly drops the row from the active set. If no enabled\nrows remain, the engine continues without a guardrails layer.","operationId":"delete_guardrail_admin_api_v1_guardrails__guardrail_id__delete","parameters":[{"name":"guardrail_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Guardrail Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneDeleteResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/prompts":{"get":{"tags":["Agent Configuration"],"summary":"List Prompts","description":"Return all prompt versions ordered by prompt id then version.","operationId":"list_prompts_admin_api_v1_prompts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StandalonePromptRead"},"type":"array","title":"Response List Prompts Admin Api V1 Prompts Get"}}}}}},"post":{"tags":["Agent Configuration"],"summary":"Create Prompt","description":"Create a new prompt version.\n\nFirst write for a given ``promptId`` is version 1. Subsequent POSTs\nwith the same ``promptId`` allocate the next version. The whole\nSELECT MAX + INSERT runs under ``_reload_mutex`` so concurrent\nadmin POSTs serialize.","operationId":"create_prompt_admin_api_v1_prompts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandalonePromptCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandalonePromptRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/prompts/{prompt_row_id}":{"get":{"tags":["Agent Configuration"],"summary":"Get Prompt","description":"Return a single prompt version row or 404.","operationId":"get_prompt_admin_api_v1_prompts__prompt_row_id__get","parameters":[{"name":"prompt_row_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Prompt Row Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandalonePromptRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Agent Configuration"],"summary":"Patch Prompt","description":"Update tags on an existing prompt version.\n\nContent changes are not accepted; clients POST a new version\ninstead. Empty body is a no op (no DB write, no reload).","operationId":"patch_prompt_admin_api_v1_prompts__prompt_row_id__patch","parameters":[{"name":"prompt_row_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Prompt Row Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandalonePromptPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandalonePromptRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Agent Configuration"],"summary":"Delete Prompt","description":"Remove a single prompt version.\n\nDeleting the latest version of a logical prompt promotes the\nprevious version at the next assembly. Deleting all versions\ndrops that prompt from the engine config entirely.","operationId":"delete_prompt_admin_api_v1_prompts__prompt_row_id__delete","parameters":[{"name":"prompt_row_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Prompt Row Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneDeleteResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/integrations":{"get":{"tags":["Integrations & Tools"],"summary":"List Integrations","description":"Return all configured integration rows ordered by created_at.","operationId":"list_integrations_admin_api_v1_integrations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StandaloneIntegrationRead"},"type":"array","title":"Response List Integrations Admin Api V1 Integrations Get"}}}}}},"post":{"tags":["Integrations & Tools"],"summary":"Create Integration","description":"Create a new integration row.\n\nSlug is derived from ``name`` and made unique with numeric\nsuffixes on collision. Empty post normalization slug returns 422.","operationId":"create_integration_admin_api_v1_integrations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneIntegrationCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneIntegrationRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/integrations/{integration_id}":{"get":{"tags":["Integrations & Tools"],"summary":"Get Integration","description":"Return a single integration row or 404.","operationId":"get_integration_admin_api_v1_integrations__integration_id__get","parameters":[{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneIntegrationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Integrations & Tools"],"summary":"Patch Integration","description":"Apply a shallow update to an existing integration row.\n\nOnly fields present in the body are touched. Slug is sticky on\nrename so existing references stay valid. Inner ``integration``\nis replaced wholesale when provided.","operationId":"patch_integration_admin_api_v1_integrations__integration_id__patch","parameters":[{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneIntegrationPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneIntegrationRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Integrations & Tools"],"summary":"Delete Integration","description":"Remove an integration row.\n\nEngine assembly drops the row from the active set. If the row was\nthe last one, the engine continues without an integrations layer.","operationId":"delete_integration_admin_api_v1_integrations__integration_id__delete","parameters":[{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneDeleteResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/sso":{"get":{"tags":["Auth & SSO"],"summary":"Get Sso","operationId":"get_sso_admin_api_v1_sso_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneSsoRead"}}}}}},"delete":{"tags":["Auth & SSO"],"summary":"Delete Sso","operationId":"delete_sso_admin_api_v1_sso_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneSingletonDeleteResult_"}}}}}},"patch":{"tags":["Auth & SSO"],"summary":"Patch Sso","operationId":"patch_sso_admin_api_v1_sso_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneSsoPatch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneSsoRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/onboarding/scan":{"post":{"tags":["Agent Configuration"],"summary":"Scan","description":"Classify the project and return the scanner result.\n\nAlways runs the scanner so the response carries truthful\n``has_python_files`` / ``has_idun_config`` / ``detected`` values\neven when an agent row already exists — useful for direct-curl\ncallers inspecting state. When the row exists, ``current_agent``\nis populated so the UI can short-circuit to chat without a\nfollow-up ``GET /agent`` call.","operationId":"scan_admin_api_v1_onboarding_scan_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanResponse"}}}}}}},"/admin/api/v1/onboarding/create-from-detection":{"post":{"tags":["Agent Configuration"],"summary":"Create From Detection","description":"Materialize a detection picked by the wizard.","operationId":"create_from_detection_admin_api_v1_onboarding_create_from_detection_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFromDetectionBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneAgentRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/onboarding/create-starter":{"post":{"tags":["Agent Configuration"],"summary":"Create Starter","description":"Scaffold a starter project + register the singleton agent row.","operationId":"create_starter_admin_api_v1_onboarding_create_starter_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStarterBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneMutationResponse_StandaloneAgentRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/traces":{"get":{"tags":["Traces"],"summary":"List Traces","description":"List traces sorted by ``started_at DESC`` with cursor pagination.\n\nFilters compose AND-style. ``cursor`` is opaque (base64url JSON);\ncallers should treat it as a token to round-trip back. The list\nfetches ``limit + 1`` rows so it can detect whether a next page\nexists without a separate ``COUNT`` query.","operationId":"list_traces_admin_api_v1_traces_get","parameters":[{"name":"started_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started After"}},{"name":"started_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started Before"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"name_contains","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name Contains"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneTraceListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Traces"],"summary":"Bulk Delete Traces","description":"Bulk-delete traces matching the same filters as ``GET ``.\n\nStrategy: select the matching trace ids first, then DELETE both\ntables by id. Two queries instead of a join keeps the SQL portable\nacross PG and SQLite and avoids ``DELETE ... USING`` syntax that\nSQLite does not support.","operationId":"bulk_delete_traces_admin_api_v1_traces_delete","parameters":[{"name":"started_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started After"}},{"name":"started_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started Before"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"name_contains","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name Contains"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneTraceBulkDeleteResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/traces/_health":{"get":{"tags":["Traces"],"summary":"Trace Pipeline Health","description":"Return queue depth + drop count from the running exporter.\n\nSafe-default: when no exporter is attached to ``app.state`` (engine\nbooted without a trace pipeline, or T7 wiring not present), return\nzeroes plus ``writer_running=False`` so the UI panel stays\nrenderable instead of erroring.\n\nDeclared **before** the ``/{otel_trace_id}`` route so the literal\npath takes precedence over the path-parameter route at match time\n— FastAPI iterates in declaration order.\n\nAlso surfaces ``database_dialect`` (read off the sessionmaker bind)\nso the UI can conditionally render the SQLite operational banner\nwithout a second round-trip.","operationId":"trace_pipeline_health_admin_api_v1_traces__health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneTraceHealth"}}}}}}},"/admin/api/v1/traces/{otel_trace_id}":{"get":{"tags":["Traces"],"summary":"Get Trace Detail","description":"Return the trace + its span tree.\n\nTrace lookup uses the full 16-byte W3C id stored on\n``standalone_trace``. The span query uses the trailing 8-byte slice\n(``trace_id[8:]``) — that's the form the exporter persists onto\n``standalone_span.otel_trace_id``.","operationId":"get_trace_detail_admin_api_v1_traces__otel_trace_id__get","parameters":[{"name":"otel_trace_id","in":"path","required":true,"schema":{"type":"string","title":"Otel Trace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneTraceDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Traces"],"summary":"Delete Trace","description":"Delete a single trace and cascade to its spans.\n\nThe trace row's PK is composite ``(started_at, otel_trace_id)`` so\nwe look it up first to grab ``started_at``, then delete by full PK.\nSpans match on the 8-byte trace id slice. The 404 path leaves both\ntables untouched.","operationId":"delete_trace_admin_api_v1_traces__otel_trace_id__delete","parameters":[{"name":"otel_trace_id","in":"path","required":true,"schema":{"type":"string","title":"Otel Trace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneTraceDeleteResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/v1/dashboard":{"get":{"tags":["Dashboard"],"summary":"Get Dashboard","description":"Return all five v1 dashboard widgets for the requested time range.","operationId":"get_dashboard_admin_api_v1_dashboard_get","parameters":[{"name":"range","in":"query","required":false,"schema":{"$ref":"#/components/schemas/DashboardRange","default":"24h"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runtime-config.js":{"get":{"tags":["Runtime"],"summary":"Runtime Config Js","description":"Return a tiny script that seeds ``window.__IDUN_CONFIG__``.","operationId":"runtime_config_js_runtime_config_js_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sso/info":{"get":{"tags":["Auth & SSO"],"summary":"Sso Info","description":"Return the public OIDC parameters for the SPA, or ``enabled=false``.","operationId":"sso_info_sso_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sso Info Sso Info Get"}}}}}}}},"components":{"schemas":{"ActivityMessage":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","const":"activity","title":"Role","default":"activity"},"activityType":{"type":"string","title":"Activitytype"},"content":{"additionalProperties":true,"type":"object","title":"Content"}},"additionalProperties":true,"type":"object","required":["id","activityType","content"],"title":"ActivityMessage","description":"An activity progress message emitted between chat messages."},"AdkAgentConfig":{"properties":{"name":{"type":"string","title":"Name"},"observability":{"anyOf":[{"$ref":"#/components/schemas/idun_agent_schema__engine__observability__ObservabilityConfig"},{"type":"null"}],"description":"(Deprecated) Observability config is deprecated and will be removed in a future release.","deprecated":true},"agent":{"type":"string","title":"Agent","description":"Agent definition (e.g. module.path:agent_instance)"},"app_name":{"type":"string","title":"App Name","description":"Application name for the agent","default":""},"session_service":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/AdkInMemorySessionConfig"},{"$ref":"#/components/schemas/AdkVertexAiSessionConfig"},{"$ref":"#/components/schemas/AdkDatabaseSessionConfig"}],"discriminator":{"propertyName":"type","mapping":{"database":"#/components/schemas/AdkDatabaseSessionConfig","in_memory":"#/components/schemas/AdkInMemorySessionConfig","vertex_ai":"#/components/schemas/AdkVertexAiSessionConfig"}}},{"type":"null"}],"title":"Session Service","description":"Session service configuration"},"memory_service":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/AdkInMemoryMemoryConfig"},{"$ref":"#/components/schemas/AdkVertexAiMemoryConfig"}],"discriminator":{"propertyName":"type","mapping":{"in_memory":"#/components/schemas/AdkInMemoryMemoryConfig","vertex_ai":"#/components/schemas/AdkVertexAiMemoryConfig"}}},{"type":"null"}],"title":"Memory Service","description":"Memory service configuration"}},"type":"object","required":["name","agent"],"title":"AdkAgentConfig","description":"Configuration model for ADK agents."},"AdkDatabaseSessionConfig":{"properties":{"type":{"type":"string","const":"database","title":"Type","default":"database"},"db_url":{"type":"string","title":"Db Url","description":"Database URL (e.g. postgresql+psycopg://...)"}},"type":"object","required":["db_url"],"title":"AdkDatabaseSessionConfig","description":"Configuration for Database Session Service."},"AdkInMemoryMemoryConfig":{"properties":{"type":{"type":"string","const":"in_memory","title":"Type","default":"in_memory"}},"type":"object","title":"AdkInMemoryMemoryConfig","description":"Configuration for In-Memory Memory Service."},"AdkInMemorySessionConfig":{"properties":{"type":{"type":"string","const":"in_memory","title":"Type","default":"in_memory"}},"type":"object","title":"AdkInMemorySessionConfig","description":"Configuration for In-Memory Session Service."},"AdkVertexAiMemoryConfig":{"properties":{"type":{"type":"string","const":"vertex_ai","title":"Type","default":"vertex_ai"},"project_id":{"type":"string","title":"Project Id","description":"Google Cloud Project ID"},"location":{"type":"string","title":"Location","description":"Google Cloud Location"},"memory_bank_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Memory Bank Id","description":"Vertex AI Memory Bank Resource ID"}},"type":"object","required":["project_id","location"],"title":"AdkVertexAiMemoryConfig","description":"Configuration for Vertex AI Memory Service."},"AdkVertexAiSessionConfig":{"properties":{"type":{"type":"string","const":"vertex_ai","title":"Type","default":"vertex_ai"},"project_id":{"type":"string","title":"Project Id","description":"Google Cloud Project ID"},"location":{"type":"string","title":"Location","description":"Google Cloud Location (e.g. us-central1)"},"reasoning_engine_app_name":{"type":"string","title":"Reasoning Engine App Name","description":"Reasoning Engine Application Name or ID"}},"type":"object","required":["project_id","location","reasoning_engine_app_name"],"title":"AdkVertexAiSessionConfig","description":"Configuration for Vertex AI Session Service."},"AgentConfig":{"properties":{"type":{"$ref":"#/components/schemas/AgentFramework"},"config":{"anyOf":[{"$ref":"#/components/schemas/LangGraphAgentConfig"},{"$ref":"#/components/schemas/AdkAgentConfig"},{"$ref":"#/components/schemas/TranslationAgentConfig"},{"$ref":"#/components/schemas/CorrectionAgentConfig"},{"$ref":"#/components/schemas/DeepResearchAgentConfig"},{"$ref":"#/components/schemas/BaseAgentConfig"}],"title":"Config"}},"type":"object","required":["type","config"],"title":"AgentConfig","description":"Configuration for agent specification and settings."},"AgentFramework":{"type":"string","enum":["LANGGRAPH","ADK","CREWAI","CUSTOM","TRANSLATION_AGENT","CORRECTION_AGENT","DEEP_RESEARCH_AGENT"],"title":"AgentFramework","description":"Supported agent frameworks for engine."},"AgentGraph":{"properties":{"format_version":{"type":"string","const":"1","title":"Format Version","default":"1"},"metadata":{"$ref":"#/components/schemas/AgentGraphMetadata"},"nodes":{"items":{"oneOf":[{"$ref":"#/components/schemas/AgentNode"},{"$ref":"#/components/schemas/ToolNode"}],"discriminator":{"propertyName":"kind","mapping":{"agent":"#/components/schemas/AgentNode","tool":"#/components/schemas/ToolNode"}}},"type":"array","title":"Nodes"},"edges":{"items":{"$ref":"#/components/schemas/AgentGraphEdge"},"type":"array","title":"Edges"}},"type":"object","required":["metadata","nodes","edges"],"title":"AgentGraph"},"AgentGraphEdge":{"properties":{"source":{"type":"string","title":"Source"},"target":{"type":"string","title":"Target"},"kind":{"$ref":"#/components/schemas/EdgeKind"},"order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order"},"condition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Condition"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["source","target","kind"],"title":"AgentGraphEdge"},"AgentGraphMetadata":{"properties":{"framework":{"$ref":"#/components/schemas/AgentFramework"},"agent_name":{"type":"string","title":"Agent Name"},"root_id":{"type":"string","title":"Root Id"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["framework","agent_name","root_id"],"title":"AgentGraphMetadata"},"AgentKind":{"type":"string","enum":["llm","sequential","parallel","loop","custom"],"title":"AgentKind"},"AgentNode":{"properties":{"kind":{"type":"string","const":"agent","title":"Kind","default":"agent"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"agent_kind":{"$ref":"#/components/schemas/AgentKind"},"is_root":{"type":"boolean","title":"Is Root","default":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"loop_max_iterations":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loop Max Iterations"}},"type":"object","required":["id","name","agent_kind"],"title":"AgentNode"},"AgentStatus":{"type":"string","enum":["draft","active","inactive","deprecated","error"],"title":"AgentStatus","description":"Agent status enumeration."},"AssistantMessage":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","const":"assistant","title":"Role","default":"assistant"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"encryptedValue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encryptedvalue"},"toolCalls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Toolcalls"}},"additionalProperties":true,"type":"object","required":["id"],"title":"AssistantMessage","description":"An assistant message."},"BanListConfig":{"properties":{"config_id":{"type":"string","const":"ban_list","title":"Config Id","default":"ban_list"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":"ban!!"},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/ban_list"},"banned_words":{"items":{"type":"string"},"type":"array","title":"Banned Words","description":"A list of strings (words or phrases) to block"}},"type":"object","required":["banned_words"],"title":"BanListConfig","description":"Ban List configuration."},"BaseAgentConfig":{"properties":{"name":{"type":"string","title":"Name"},"observability":{"anyOf":[{"$ref":"#/components/schemas/idun_agent_schema__engine__observability__ObservabilityConfig"},{"type":"null"}],"description":"(Deprecated) Observability config is deprecated and will be removed in a future release.","deprecated":true}},"type":"object","required":["name"],"title":"BaseAgentConfig","description":"Base model for agent configurations. Extend for specific frameworks."},"BiasCheckConfig":{"properties":{"config_id":{"type":"string","const":"bias_check","title":"Config Id","default":"bias_check"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/bias_check"},"reject_message":{"type":"string","title":"Reject Message","default":"Bias detected"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for bias detection"}},"type":"object","required":["threshold"],"title":"BiasCheckConfig","description":"Bias Check configuration."},"BinaryInputContent":{"properties":{"type":{"type":"string","const":"binary","title":"Type","default":"binary"},"mimeType":{"type":"string","title":"Mimetype"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},"additionalProperties":true,"type":"object","required":["mimeType"],"title":"BinaryInputContent","description":"A binary payload reference in a multimodal user message."},"ChatRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"query":{"type":"string","title":"Query"}},"type":"object","required":["session_id","query"],"title":"ChatRequest","description":"Request payload for synchronous and streaming chat endpoints.\n\nAttributes:\n session_id: Client-provided session identifier for routing state.\n query: Natural language prompt or input for the agent."},"ChatResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"response":{"type":"string","title":"Response"}},"type":"object","required":["session_id","response"],"title":"ChatResponse","description":"Response payload for chat endpoints.\n\nAttributes:\n session_id: Echoed session identifier.\n response: Agent's textual response."},"CodeScannerConfig":{"properties":{"config_id":{"type":"string","const":"code_scanner","title":"Config Id","default":"code_scanner"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/code_scanner"},"reject_message":{"type":"string","title":"Reject Message","default":"Unauthorized code detected"},"allowed_languages":{"items":{"type":"string"},"type":"array","title":"Allowed Languages","description":"List of allowed programming languages"}},"type":"object","required":["allowed_languages"],"title":"CodeScannerConfig","description":"Code Scanner configuration."},"CompetitionCheckConfig":{"properties":{"config_id":{"type":"string","const":"competition_check","title":"Config Id","default":"competition_check"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/competitor_check"},"reject_message":{"type":"string","title":"Reject Message","default":"Competitor mentioned"},"competitors":{"items":{"type":"string"},"type":"array","title":"Competitors","description":"Names of competitor companies or products"}},"type":"object","required":["competitors"],"title":"CompetitionCheckConfig","description":"Competition Check configuration."},"Context":{"properties":{"description":{"type":"string","title":"Description"},"value":{"type":"string","title":"Value"}},"additionalProperties":true,"type":"object","required":["description","value"],"title":"Context","description":"Additional context for the agent."},"CorrectLanguageConfig":{"properties":{"config_id":{"type":"string","const":"correct_language","title":"Config Id","default":"correct_language"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://scb-10x/correct_language"},"reject_message":{"type":"string","title":"Reject Message","default":"Incorrect language detected"},"expected_languages":{"items":{"type":"string"},"type":"array","title":"Expected Languages","description":"Valid ISO language codes (e.g., en, fr, es)"}},"type":"object","required":["expected_languages"],"title":"CorrectLanguageConfig","description":"Correct Language configuration."},"CorrectionAgentConfig":{"properties":{"name":{"type":"string","title":"Name"},"observability":{"anyOf":[{"$ref":"#/components/schemas/idun_agent_schema__engine__observability__ObservabilityConfig"},{"type":"null"}],"description":"(Deprecated) Observability config is deprecated and will be removed in a future release.","deprecated":true},"language":{"type":"string","title":"Language","description":"Language to correct text in","default":"French"},"model_name":{"type":"string","title":"Model Name","description":"LLM model to use","default":"gemini-2.5-flash"},"checkpointer":{"anyOf":[{"$ref":"#/components/schemas/SqliteCheckpointConfig"},{"$ref":"#/components/schemas/InMemoryCheckpointConfig"},{"$ref":"#/components/schemas/PostgresCheckpointConfig"},{"type":"null"}],"title":"Checkpointer"}},"type":"object","required":["name"],"title":"CorrectionAgentConfig","description":"Configuration model for the Correction Agent Template."},"CostBlock":{"properties":{"totalUsd":{"type":"number","title":"Totalusd"},"deltaPct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Deltapct"},"series":{"items":{"$ref":"#/components/schemas/TimeBucketPoint"},"type":"array","title":"Series","default":[]}},"type":"object","required":["totalUsd"],"title":"CostBlock","description":"Headline + series for the Total cost widget."},"CreateFromDetectionBody":{"properties":{"framework":{"type":"string","enum":["LANGGRAPH","ADK"],"title":"Framework"},"filePath":{"type":"string","title":"Filepath"},"variableName":{"type":"string","title":"Variablename"}},"type":"object","required":["framework","filePath","variableName"],"title":"CreateFromDetectionBody","description":"Body for ``POST /admin/api/v1/onboarding/create-from-detection``.\n\nThe triple ``(framework, file_path, variable_name)`` is the lookup\nkey for re-validation against a fresh scan inside the handler.\n``inferred_name`` is intentionally not on the wire — the server\ncomputes it from the fresh scan, not from the body."},"CreateStarterBody":{"properties":{"framework":{"type":"string","enum":["LANGGRAPH","ADK"],"title":"Framework"},"name":{"anyOf":[{"type":"string","maxLength":80,"minLength":1},{"type":"null"}],"title":"Name"}},"type":"object","required":["framework"],"title":"CreateStarterBody","description":"Body for ``POST /admin/api/v1/onboarding/create-starter``.\n\n``name`` is optional. When omitted the server uses\n``\"Starter Agent\"``. Empty string is rejected."},"DashboardRange":{"type":"string","enum":["1h","24h","7d","30d"],"title":"DashboardRange","description":"Time-range filter values accepted by the dashboard endpoint."},"DashboardResponse":{"properties":{"range":{"$ref":"#/components/schemas/DashboardRange"},"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"},"bucketSeconds":{"type":"integer","title":"Bucketseconds"},"requests":{"$ref":"#/components/schemas/RequestsBlock"},"latency":{"$ref":"#/components/schemas/LatencyBlock"},"errorRate":{"$ref":"#/components/schemas/ErrorRateBlock"},"cost":{"$ref":"#/components/schemas/CostBlock"},"topErrors":{"items":{"$ref":"#/components/schemas/TopErrorRow"},"type":"array","title":"Toperrors","default":[]}},"type":"object","required":["range","generatedAt","bucketSeconds","requests","latency","errorRate","cost"],"title":"DashboardResponse","description":"Top-level dashboard payload returned by ``GET /admin/api/v1/dashboard``."},"DeepResearchAgentConfig":{"properties":{"name":{"type":"string","title":"Name"},"observability":{"anyOf":[{"$ref":"#/components/schemas/idun_agent_schema__engine__observability__ObservabilityConfig"},{"type":"null"}],"description":"(Deprecated) Observability config is deprecated and will be removed in a future release.","deprecated":true},"model_name":{"type":"string","title":"Model Name","description":"LLM model to use","default":"gemini-2.5-flash"},"project":{"type":"string","title":"Project","description":"Project identifier"},"region":{"type":"string","title":"Region","description":"Region identifier"},"tavily_api_key":{"type":"string","title":"Tavily Api Key","description":"Tavily API key for web search"},"system_prompt":{"type":"string","title":"System Prompt","description":"System prompt for the agent","default":"Conduct research and write a polished report."},"checkpointer":{"anyOf":[{"$ref":"#/components/schemas/SqliteCheckpointConfig"},{"$ref":"#/components/schemas/InMemoryCheckpointConfig"},{"$ref":"#/components/schemas/PostgresCheckpointConfig"},{"type":"null"}],"title":"Checkpointer"}},"type":"object","required":["name","project","region","tavily_api_key"],"title":"DeepResearchAgentConfig","description":"Configuration model for the Deep Research Agent Template."},"DetectJailbreakConfig":{"properties":{"config_id":{"type":"string","const":"detect_jailbreak","title":"Config Id","default":"detect_jailbreak"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/detect_pii"},"reject_message":{"type":"string","title":"Reject Message","default":"Jailbreak attempt detected"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for jailbreak detection"}},"type":"object","required":["threshold"],"title":"DetectJailbreakConfig","description":"Detect Jailbreak configuration."},"DetectPIIConfig":{"properties":{"config_id":{"type":"string","const":"detect_pii","title":"Config Id","default":"detect_pii"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":"PII detected"},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/detect_pii"},"pii_entities":{"items":{"type":"string"},"type":"array","title":"Pii Entities","description":"List of PII entity types to detect"},"on_fail":{"type":"string","title":"On Fail","default":"exception"}},"type":"object","required":["pii_entities"],"title":"DetectPIIConfig","description":"Detect PII configuration."},"DetectedAgent":{"properties":{"framework":{"type":"string","enum":["LANGGRAPH","ADK"],"title":"Framework"},"filePath":{"type":"string","title":"Filepath"},"variableName":{"type":"string","title":"Variablename"},"inferredName":{"type":"string","title":"Inferredname"},"confidence":{"type":"string","enum":["HIGH","MEDIUM"],"title":"Confidence"},"source":{"type":"string","enum":["config","source","langgraph_json"],"title":"Source"}},"type":"object","required":["framework","filePath","variableName","inferredName","confidence","source"],"title":"DetectedAgent","description":"One agent the scanner found in the target folder."},"DeveloperMessage":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","const":"developer","title":"Role","default":"developer"},"content":{"type":"string","title":"Content"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"encryptedValue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encryptedvalue"}},"additionalProperties":true,"type":"object","required":["id","content"],"title":"DeveloperMessage","description":"A developer message."},"DiscordIntegrationConfig":{"properties":{"botToken":{"type":"string","title":"Bottoken","description":"Discord bot token (used for REST API calls)."},"applicationId":{"type":"string","title":"Applicationid","description":"Discord application ID."},"publicKey":{"type":"string","title":"Publickey","description":"Ed25519 public key from the Discord application settings. Used to verify interaction webhook signatures."},"guildId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guildid","description":"Optional guild (server) ID to restrict the integration to."}},"type":"object","required":["botToken","applicationId","publicKey"],"title":"DiscordIntegrationConfig","description":"Discord bot configuration for the Interactions Endpoint webhook.\n\nRequires a Discord application with a bot user created at\nhttps://discord.com/developers/applications. The ``public_key`` is used\nto verify Ed25519 signatures on incoming interaction payloads."},"EdgeKind":{"type":"string","enum":["parent_child","sequential_step","parallel_branch","loop_step","tool_attach","graph_edge"],"title":"EdgeKind"},"EngineConfig":{"properties":{"server":{"$ref":"#/components/schemas/ServerConfig"},"agent":{"$ref":"#/components/schemas/AgentConfig"},"mcpServers":{"anyOf":[{"items":{"$ref":"#/components/schemas/MCPServer"},"type":"array"},{"type":"null"}],"title":"Mcpservers"},"guardrails":{"anyOf":[{"$ref":"#/components/schemas/GuardrailsV2"},{"type":"null"}]},"observability":{"anyOf":[{"items":{"$ref":"#/components/schemas/idun_agent_schema__engine__observability_v2__ObservabilityConfig"},"type":"array"},{"type":"null"}],"title":"Observability"},"sso":{"anyOf":[{"$ref":"#/components/schemas/SSOConfig"},{"type":"null"}]},"integrations":{"anyOf":[{"items":{"$ref":"#/components/schemas/IntegrationConfig"},"type":"array"},{"type":"null"}],"title":"Integrations"},"prompts":{"anyOf":[{"items":{"$ref":"#/components/schemas/PromptConfig"},"type":"array"},{"type":"null"}],"title":"Prompts"}},"type":"object","required":["agent"],"title":"EngineConfig","description":"Main engine configuration model for the entire Idun Agent Engine."},"ErrorRateBlock":{"properties":{"valuePct":{"type":"number","title":"Valuepct"},"deltaPp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Deltapp"},"series":{"items":{"$ref":"#/components/schemas/TimeBucketPoint"},"type":"array","title":"Series","default":[]}},"type":"object","required":["valuePct"],"title":"ErrorRateBlock","description":"Headline + series for the Error rate widget.\n\n``value_pct`` is a decimal fraction (0.0042 means 0.42 %).\n``delta_pp`` is a percentage-point delta as a decimal fraction\n(-0.001 means the error rate dropped by 0.1 pp; NOT a relative %)."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name"},"arguments":{"type":"string","title":"Arguments"}},"additionalProperties":true,"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Name and arguments of a function call."},"GCPLoggingConfig":{"properties":{"provider":{"type":"string","const":"GCP_LOGGING","title":"Provider","default":"GCP_LOGGING"},"gcpProjectId":{"type":"string","title":"Gcpprojectid","description":"The project identifier where logs and traces will be sent.","default":""},"region":{"type":"string","title":"Region","description":"(Optional) The specific region/zone associated with the resource (e.g., us-central1).","default":""},"logName":{"type":"string","title":"Logname","description":"The identifier for the log stream (e.g., application-log).","default":""},"resourceType":{"type":"string","title":"Resourcetype","description":"The resource type label (e.g., global, gce_instance, cloud_run_revision).","default":""},"severity":{"type":"string","title":"Severity","description":"Minimum level to record (e.g., INFO, WARNING, ERROR, CRITICAL).","default":"INFO"},"transport":{"type":"string","title":"Transport","description":"Selection for delivery method (e.g., BackgroundThread vs Synchronous).","default":"BackgroundThread"}},"type":"object","title":"GCPLoggingConfig","description":"GCP Logging configuration."},"GCPTraceConfig":{"properties":{"provider":{"type":"string","const":"GCP_TRACE","title":"Provider","default":"GCP_TRACE"},"gcpProjectId":{"type":"string","title":"Gcpprojectid","description":"The project identifier where logs and traces will be sent.","default":""},"region":{"type":"string","title":"Region","description":"(Optional) The specific region/zone associated with the resource (e.g., us-central1).","default":""},"traceName":{"type":"string","title":"Tracename","description":"The name for the trace or tracing session.","default":""},"samplingRate":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Samplingrate","description":"A number between 0.0 and 1.0 indicating the probability of a request being traced (e.g., 1.0 for 100%, 0.1 for 10%).","default":1.0},"flushInterval":{"type":"integer","minimum":0.0,"title":"Flushinterval","description":"Time in seconds to wait before sending buffered traces to the cloud.","default":5},"ignoreUrls":{"type":"string","title":"Ignoreurls","description":"A list or comma-separated string of URL paths to exclude from tracing (e.g., /health, /metrics).","default":""}},"type":"object","title":"GCPTraceConfig","description":"GCP Trace configuration."},"GibberishTextConfig":{"properties":{"config_id":{"type":"string","const":"gibberish_text","title":"Config Id","default":"gibberish_text"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/gibberish_text"},"reject_message":{"type":"string","title":"Reject Message","default":"Gibberish text detected"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for gibberish detection"}},"type":"object","required":["threshold"],"title":"GibberishTextConfig","description":"Gibberish Text configuration."},"GoogleChatIntegrationConfig":{"properties":{"serviceAccountCredentialsJson":{"type":"string","title":"Serviceaccountcredentialsjson","description":"Service account credentials JSON for calling the Chat API."},"projectNumber":{"type":"string","title":"Projectnumber","description":"GCP project number used to verify inbound JWT tokens."},"localMode":{"type":"boolean","title":"Localmode","description":"When enabled, rewrites the webhook URL from http to https for JWT audience verification. Use this when developing behind a TLS-terminating proxy like ngrok.","default":false}},"type":"object","required":["serviceAccountCredentialsJson","projectNumber"],"title":"GoogleChatIntegrationConfig","description":"Google Chat app configuration.\n\nRequires a GCP project with the Google Chat API enabled,\na service account for sending messages, and the project number\nfor verifying inbound JWT bearer tokens."},"GuardrailsV2":{"properties":{"input":{"items":{"anyOf":[{"$ref":"#/components/schemas/BanListConfig"},{"$ref":"#/components/schemas/DetectPIIConfig"},{"$ref":"#/components/schemas/BiasCheckConfig"},{"$ref":"#/components/schemas/CompetitionCheckConfig"},{"$ref":"#/components/schemas/CorrectLanguageConfig"},{"$ref":"#/components/schemas/GibberishTextConfig"},{"$ref":"#/components/schemas/NSFWTextConfig"},{"$ref":"#/components/schemas/DetectJailbreakConfig"},{"$ref":"#/components/schemas/PromptInjectionConfig"},{"$ref":"#/components/schemas/RagHallucinationConfig"},{"$ref":"#/components/schemas/RestrictToTopicConfig"},{"$ref":"#/components/schemas/ToxicLanguageConfig"},{"$ref":"#/components/schemas/CodeScannerConfig"}]},"type":"array","title":"Input","description":"List of input guardrails"},"output":{"items":{"anyOf":[{"$ref":"#/components/schemas/BanListConfig"},{"$ref":"#/components/schemas/DetectPIIConfig"},{"$ref":"#/components/schemas/BiasCheckConfig"},{"$ref":"#/components/schemas/CompetitionCheckConfig"},{"$ref":"#/components/schemas/CorrectLanguageConfig"},{"$ref":"#/components/schemas/GibberishTextConfig"},{"$ref":"#/components/schemas/NSFWTextConfig"},{"$ref":"#/components/schemas/DetectJailbreakConfig"},{"$ref":"#/components/schemas/PromptInjectionConfig"},{"$ref":"#/components/schemas/RagHallucinationConfig"},{"$ref":"#/components/schemas/RestrictToTopicConfig"},{"$ref":"#/components/schemas/ToxicLanguageConfig"},{"$ref":"#/components/schemas/CodeScannerConfig"}]},"type":"array","title":"Output","description":"List of output guardrails"}},"type":"object","title":"GuardrailsV2","description":"Guardrails V2 configuration."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","enum":["ok","degraded"],"title":"Status"},"service":{"type":"string","title":"Service"},"version":{"type":"string","title":"Version"},"agent_ready":{"type":"boolean","title":"Agent Ready"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["status","service","version","agent_ready","agent_name"],"title":"HealthResponse","description":"Response shape for ``/health``.\n\n``reason`` is only emitted when an assembly failure handler set\n``app.state.boot_error``; the route uses ``response_model_exclude_unset``\nso the field stays absent (not ``null``) on the happy path."},"InMemoryCheckpointConfig":{"properties":{"type":{"type":"string","const":"memory","title":"Type"}},"type":"object","required":["type"],"title":"InMemoryCheckpointConfig","description":"Configuration for In-Memory checkpointer."},"IntegrationConfig":{"properties":{"provider":{"$ref":"#/components/schemas/IntegrationProvider","description":"The messaging provider type."},"enabled":{"type":"boolean","title":"Enabled","description":"Toggle this integration on or off.","default":true},"config":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppIntegrationConfig"},{"$ref":"#/components/schemas/DiscordIntegrationConfig"},{"$ref":"#/components/schemas/SlackIntegrationConfig"},{"$ref":"#/components/schemas/GoogleChatIntegrationConfig"},{"$ref":"#/components/schemas/TeamsIntegrationConfig"}],"title":"Config","description":"Provider-specific configuration."}},"type":"object","required":["provider","config"],"title":"IntegrationConfig","description":"Top-level integration configuration.\n\nEach integration binds an external messaging provider to the agent.\nWhen the engine starts, it registers webhook endpoints for each\nenabled integration."},"IntegrationProvider":{"type":"string","enum":["WHATSAPP","DISCORD","SLACK","GOOGLE_CHAT","TEAMS"],"title":"IntegrationProvider","description":"Supported integration providers."},"LangGraphAgentConfig":{"properties":{"name":{"type":"string","title":"Name"},"observability":{"anyOf":[{"$ref":"#/components/schemas/idun_agent_schema__engine__observability__ObservabilityConfig"},{"type":"null"}],"description":"(Deprecated) Observability config is deprecated and will be removed in a future release.","deprecated":true},"graph_definition":{"type":"string","title":"Graph Definition"},"checkpointer":{"anyOf":[{"$ref":"#/components/schemas/SqliteCheckpointConfig"},{"$ref":"#/components/schemas/InMemoryCheckpointConfig"},{"$ref":"#/components/schemas/PostgresCheckpointConfig"},{"type":"null"}],"title":"Checkpointer"},"store":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Store"}},"type":"object","required":["name","graph_definition"],"title":"LangGraphAgentConfig","description":"Configuration model for LangGraph agents."},"LangfuseConfig":{"properties":{"provider":{"type":"string","const":"LANGFUSE","title":"Provider","default":"LANGFUSE"},"host":{"type":"string","title":"Host","default":"https://cloud.langfuse.com"},"publicKey":{"type":"string","title":"Publickey","default":""},"secretKey":{"type":"string","title":"Secretkey","default":""},"runName":{"type":"string","title":"Runname","default":""}},"type":"object","title":"LangfuseConfig","description":"Langfuse configuration."},"LangsmithConfig":{"properties":{"provider":{"type":"string","const":"LANGSMITH","title":"Provider","default":"LANGSMITH"},"apiKey":{"type":"string","title":"Apikey","description":"The unique authentication key from the LangSmith settings page.","default":""},"projectName":{"type":"string","title":"Projectname","description":"The name of the project in LangSmith to bucket these traces under (e.g., prod-chatbot-v1).","default":""},"endpoint":{"type":"string","title":"Endpoint","description":"The URL endpoint, used primarily if you are self-hosting LangSmith or using a specific enterprise instance. (e.g., https://api.smith.langchain.com)","default":""},"runName":{"type":"string","title":"Runname","description":"The display name for each trace run in LangSmith (e.g., my-agent).","default":""}},"type":"object","title":"LangsmithConfig","description":"Langsmith configuration."},"LatencyBlock":{"properties":{"p50Ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P50Ms"},"p95Ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95Ms"},"p95DeltaPct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95Deltapct"},"series":{"items":{"$ref":"#/components/schemas/LatencyBucketPoint"},"type":"array","title":"Series","default":[]}},"type":"object","title":"LatencyBlock","description":"Headline + series for the Latency p50 / p95 widget."},"LatencyBucketPoint":{"properties":{"t":{"type":"string","format":"date-time","title":"T"},"p50":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P50"},"p95":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95"}},"type":"object","required":["t"],"title":"LatencyBucketPoint","description":"Single (timestamp, p50, p95) point in the latency time series."},"MCPServer":{"properties":{"name":{"type":"string","title":"Name","description":"Unique identifier for this MCP server."},"transport":{"type":"string","enum":["stdio","sse","streamable_http","websocket"],"title":"Transport","description":"Transport type used to reach the MCP server.","default":"streamable_http"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Endpoint URL for HTTP/S based transports (SSE, streamable_http, websocket)."},"command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command","description":"Executable to run when using stdio transport."},"args":{"items":{"type":"string"},"type":"array","title":"Args","description":"Arguments to pass to the command for stdio transport."},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","description":"Optional headers for HTTP/S transports."},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","description":"Environment variables to set when spawning stdio servers."},"cwd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cwd","description":"Working directory for stdio transports."},"encoding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encoding","description":"Encoding used for stdio transport."},"encodingErrorHandler":{"anyOf":[{"type":"string","enum":["strict","ignore","replace"]},{"type":"null"}],"title":"Encodingerrorhandler","description":"Encoding error handler for stdio transport."},"timeoutSeconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timeoutseconds","description":"Timeout in seconds for HTTP/S transports (maps to `timeout`)."},"sseReadTimeoutSeconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ssereadtimeoutseconds","description":"Timeout in seconds waiting for SSE events (maps to `sse_read_timeout`)."},"terminateOnClose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Terminateonclose","description":"Whether to terminate Streamable HTTP sessions on close."},"sessionKwargs":{"additionalProperties":true,"type":"object","title":"Sessionkwargs","description":"Extra keyword arguments forwarded to MCP ClientSession."}},"type":"object","required":["name"],"title":"MCPServer","description":"Configuration for a single MCP server connection."},"NSFWTextConfig":{"properties":{"config_id":{"type":"string","const":"nsfw_text","title":"Config Id","default":"nsfw_text"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/nsfw_text"},"reject_message":{"type":"string","title":"Reject Message","default":"NSFW content detected"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for NSFW content"}},"type":"object","required":["threshold"],"title":"NSFWTextConfig","description":"NSFW Text configuration."},"ObservabilityConfig-Input":{"properties":{"provider":{"$ref":"#/components/schemas/ObservabilityProvider","default":"LANGFUSE"},"enabled":{"type":"boolean","title":"Enabled","default":true},"config":{"oneOf":[{"$ref":"#/components/schemas/LangfuseConfig"},{"$ref":"#/components/schemas/PhoenixConfig"},{"$ref":"#/components/schemas/GCPLoggingConfig"},{"$ref":"#/components/schemas/GCPTraceConfig"},{"$ref":"#/components/schemas/LangsmithConfig"}],"title":"Config","discriminator":{"propertyName":"provider","mapping":{"GCP_LOGGING":"#/components/schemas/GCPLoggingConfig","GCP_TRACE":"#/components/schemas/GCPTraceConfig","LANGFUSE":"#/components/schemas/LangfuseConfig","LANGSMITH":"#/components/schemas/LangsmithConfig","PHOENIX":"#/components/schemas/PhoenixConfig"}}}},"type":"object","required":["config"],"title":"ObservabilityConfig","description":"Observability configuration."},"ObservabilityProvider":{"type":"string","enum":["LANGFUSE","PHOENIX","GCP_LOGGING","GCP_TRACE","LANGSMITH"],"title":"ObservabilityProvider","description":"Supported observability providers."},"PhoenixConfig":{"properties":{"provider":{"type":"string","const":"PHOENIX","title":"Provider","default":"PHOENIX"},"collectorEndpoint":{"type":"string","title":"Collectorendpoint","default":"https://collector.phoenix.com"},"projectName":{"type":"string","title":"Projectname","default":""}},"type":"object","title":"PhoenixConfig","description":"Phoenix configuration."},"PostgresCheckpointConfig":{"properties":{"type":{"type":"string","const":"postgres","title":"Type"},"db_url":{"type":"string","title":"Db Url"}},"type":"object","required":["type","db_url"],"title":"PostgresCheckpointConfig","description":"Configuration for Postgres checkpointer."},"PromptConfig":{"properties":{"promptId":{"type":"string","title":"Promptid","description":"Logical prompt identifier"},"version":{"type":"integer","title":"Version","description":"Prompt version number"},"content":{"type":"string","title":"Content","description":"Prompt text, supports Jinja2 variables"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Prompt tags"}},"type":"object","required":["promptId","version","content"],"title":"PromptConfig","description":"Engine-level prompt configuration."},"PromptInjectionConfig":{"properties":{"config_id":{"type":"string","const":"prompt_injection","title":"Config Id","default":"prompt_injection"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/detect_pii"},"reject_message":{"type":"string","title":"Reject Message","default":"Prompt injection detected"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for prompt injection"}},"type":"object","required":["threshold"],"title":"PromptInjectionConfig","description":"Prompt Injection configuration."},"RagHallucinationConfig":{"properties":{"config_id":{"type":"string","const":"rag_hallucination","title":"Config Id","default":"rag_hallucination"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/rag_hallucination"},"reject_message":{"type":"string","title":"Reject Message","default":"Hallucination detected"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for hallucination detection"}},"type":"object","required":["threshold"],"title":"RagHallucinationConfig","description":"RAG Hallucination configuration."},"ReasoningMessage":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","const":"reasoning","title":"Role","default":"reasoning"},"content":{"type":"string","title":"Content"},"encryptedValue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encryptedvalue"}},"additionalProperties":true,"type":"object","required":["id","content"],"title":"ReasoningMessage","description":"A reasoning message containing the agent's internal reasoning process."},"ReloadRequest":{"properties":{"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"}},"type":"object","title":"ReloadRequest","description":"Request body for reload endpoint."},"RequestsBlock":{"properties":{"total":{"type":"integer","title":"Total"},"deltaPct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Deltapct"},"series":{"items":{"$ref":"#/components/schemas/TimeBucketPoint"},"type":"array","title":"Series","default":[]}},"type":"object","required":["total"],"title":"RequestsBlock","description":"Headline + series for the Requests widget."},"RestrictToTopicConfig":{"properties":{"config_id":{"type":"string","const":"restrict_to_topic","title":"Config Id","default":"restrict_to_topic"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://tryolabs/restricttotopic"},"reject_message":{"type":"string","title":"Reject Message","default":"Off-topic content detected"},"valid_topics":{"items":{"type":"string"},"type":"array","title":"Valid Topics","description":"Topics the agent is allowed to discuss"},"invalid_topics":{"items":{"type":"string"},"type":"array","title":"Invalid Topics","description":"Topics the agent must refuse"}},"type":"object","title":"RestrictToTopicConfig","description":"Restrict To Topic configuration."},"RunAgentInput":{"properties":{"threadId":{"type":"string","title":"Threadid"},"runId":{"type":"string","title":"Runid"},"parentRunId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentrunid"},"state":{"title":"State"},"messages":{"items":{"oneOf":[{"$ref":"#/components/schemas/DeveloperMessage"},{"$ref":"#/components/schemas/SystemMessage"},{"$ref":"#/components/schemas/AssistantMessage"},{"$ref":"#/components/schemas/UserMessage"},{"$ref":"#/components/schemas/ToolMessage"},{"$ref":"#/components/schemas/ActivityMessage"},{"$ref":"#/components/schemas/ReasoningMessage"}],"discriminator":{"propertyName":"role","mapping":{"activity":"#/components/schemas/ActivityMessage","assistant":"#/components/schemas/AssistantMessage","developer":"#/components/schemas/DeveloperMessage","reasoning":"#/components/schemas/ReasoningMessage","system":"#/components/schemas/SystemMessage","tool":"#/components/schemas/ToolMessage","user":"#/components/schemas/UserMessage"}}},"type":"array","title":"Messages"},"tools":{"items":{"$ref":"#/components/schemas/Tool"},"type":"array","title":"Tools"},"context":{"items":{"$ref":"#/components/schemas/Context"},"type":"array","title":"Context"},"forwardedProps":{"title":"Forwardedprops"}},"additionalProperties":true,"type":"object","required":["threadId","runId","state","messages","tools","context","forwardedProps"],"title":"RunAgentInput","description":"Input for running an agent."},"SSOConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Toggle SSO enforcement on protected routes.","default":true},"issuer":{"type":"string","title":"Issuer","description":"OIDC issuer URL (e.g. https://accounts.google.com). Used to discover the JWKS endpoint via .well-known/openid-configuration."},"clientId":{"type":"string","title":"Clientid","description":"OAuth 2.0 client ID. Used as the default audience for JWT validation when 'audience' is not set."},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience","description":"Expected JWT 'aud' claim. Defaults to client_id if not set. Okta client credentials tokens use 'api://default'."},"allowedDomains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Alloweddomains","description":"Optional list of allowed email domains (e.g. ['company.com']). When set, only tokens whose email claim matches one of these domains are accepted."},"allowedEmails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowedemails","description":"Optional list of specific email addresses allowed access. When set, only tokens whose email claim exactly matches one of these values are accepted."}},"type":"object","required":["issuer","clientId"],"title":"SSOConfig","description":"OIDC Single Sign-On configuration.\n\nWhen enabled, the engine validates JWT tokens on protected routes\n(``/agent/invoke``, ``/agent/stream``, ``/agent/copilotkit/stream``)\nagainst the configured OIDC provider's JWKS endpoint, discovered via\n``{issuer}/.well-known/openid-configuration``."},"ScanResponse":{"properties":{"state":{"type":"string","enum":["EMPTY","NO_SUPPORTED","ONE_DETECTED","MANY_DETECTED","ALREADY_CONFIGURED"],"title":"State"},"scanResult":{"$ref":"#/components/schemas/ScanResult"},"currentAgent":{"anyOf":[{"$ref":"#/components/schemas/StandaloneAgentRead"},{"type":"null"}]}},"type":"object","required":["state","scanResult"],"title":"ScanResponse","description":"Response for ``POST /admin/api/v1/onboarding/scan``.\n\nThe five-state classification is computed server-side from the\nscan result plus the agent row's existence. ``current_agent`` is\nonly populated when ``state == \"ALREADY_CONFIGURED\"``."},"ScanResult":{"properties":{"root":{"type":"string","title":"Root"},"detected":{"items":{"$ref":"#/components/schemas/DetectedAgent"},"type":"array","title":"Detected"},"hasPythonFiles":{"type":"boolean","title":"Haspythonfiles"},"hasIdunConfig":{"type":"boolean","title":"Hasidunconfig"},"scanDurationMs":{"type":"integer","title":"Scandurationms"}},"type":"object","required":["root","detected","hasPythonFiles","hasIdunConfig","scanDurationMs"],"title":"ScanResult","description":"Aggregate result of a single ``scan_folder`` call."},"ServerAPIConfig":{"properties":{"port":{"type":"integer","title":"Port","default":8000}},"type":"object","title":"ServerAPIConfig","description":"API server configuration."},"ServerConfig":{"properties":{"api":{"$ref":"#/components/schemas/ServerAPIConfig"}},"type":"object","title":"ServerConfig","description":"Configuration for the Engine's universal settings."},"SessionDetail":{"properties":{"id":{"type":"string","title":"Id"},"lastUpdateTime":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lastupdatetime"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Userid"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Threadid"},"messages":{"items":{"$ref":"#/components/schemas/SessionMessage"},"type":"array","title":"Messages"}},"type":"object","required":["id"],"title":"SessionDetail","description":"Full /agent/sessions/{id} response. Messages are text-only."},"SessionMessage":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","enum":["user","assistant"],"title":"Role"},"content":{"type":"string","title":"Content"},"timestamp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timestamp"}},"type":"object","required":["id","role","content"],"title":"SessionMessage","description":"One message in a restored session detail."},"SessionSummary":{"properties":{"id":{"type":"string","title":"Id","description":"AG-UI thread id used for routing."},"lastUpdateTime":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lastupdatetime","description":"Epoch seconds."},"userId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Userid"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Threadid","description":"AG-UI thread id; equals id for LangGraph, may differ for ADK."},"preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview","description":"First user-authored text, ~120 chars max."}},"type":"object","required":["id"],"title":"SessionSummary","description":"One row in /agent/sessions list view."},"SimpleBanListConfig":{"properties":{"config_id":{"type":"string","const":"ban_list","title":"Config Id","default":"ban_list"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"banned_words":{"items":{"type":"string"},"type":"array","title":"Banned Words","description":"A list of strings (words or phrases) to block"}},"type":"object","required":["banned_words"],"title":"SimpleBanListConfig"},"SimpleBiasCheckConfig":{"properties":{"config_id":{"type":"string","const":"bias_check","title":"Config Id","default":"bias_check"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for bias detection"}},"type":"object","required":["threshold"],"title":"SimpleBiasCheckConfig"},"SimpleCompetitionCheckConfig":{"properties":{"config_id":{"type":"string","const":"competition_check","title":"Config Id","default":"competition_check"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"competitors":{"items":{"type":"string"},"type":"array","title":"Competitors","description":"Names of competitor companies or products"}},"type":"object","required":["competitors"],"title":"SimpleCompetitionCheckConfig"},"SimpleCorrectLanguageConfig":{"properties":{"config_id":{"type":"string","const":"correct_language","title":"Config Id","default":"correct_language"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"expected_languages":{"items":{"type":"string"},"type":"array","title":"Expected Languages","description":"Valid ISO language codes (e.g., en, fr, es)"}},"type":"object","required":["expected_languages"],"title":"SimpleCorrectLanguageConfig"},"SimpleGibberishTextConfig":{"properties":{"config_id":{"type":"string","const":"gibberish_text","title":"Config Id","default":"gibberish_text"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for gibberish detection"}},"type":"object","required":["threshold"],"title":"SimpleGibberishTextConfig"},"SimpleNSFWTextConfig":{"properties":{"config_id":{"type":"string","const":"nsfw_text","title":"Config Id","default":"nsfw_text"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for NSFW content"}},"type":"object","required":["threshold"],"title":"SimpleNSFWTextConfig"},"SimplePIIConfig":{"properties":{"config_id":{"type":"string","const":"detect_pii","title":"Config Id","default":"detect_pii"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"pii_entities":{"items":{"type":"string"},"type":"array","title":"Pii Entities","description":"List of PII entity types to detect"}},"type":"object","required":["pii_entities"],"title":"SimplePIIConfig"},"SimpleRestrictToTopicConfig":{"properties":{"config_id":{"type":"string","const":"restrict_to_topic","title":"Config Id","default":"restrict_to_topic"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"valid_topics":{"items":{"type":"string"},"type":"array","title":"Valid Topics","description":"Topics the agent is allowed to discuss"},"invalid_topics":{"items":{"type":"string"},"type":"array","title":"Invalid Topics","description":"Topics the agent must refuse"}},"type":"object","title":"SimpleRestrictToTopicConfig"},"SimpleToxicLanguageConfig":{"properties":{"config_id":{"type":"string","const":"toxic_language","title":"Config Id","default":"toxic_language"},"api_key":{"type":"string","title":"Api Key","default":""},"reject_message":{"type":"string","title":"Reject Message","default":""},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for toxic language"}},"type":"object","required":["threshold"],"title":"SimpleToxicLanguageConfig"},"SlackIntegrationConfig":{"properties":{"botToken":{"type":"string","title":"Bottoken","description":"Slack bot token (xoxb-...)."},"signingSecret":{"type":"string","title":"Signingsecret","description":"Signing secret for verifying webhook requests."}},"type":"object","required":["botToken","signingSecret"],"title":"SlackIntegrationConfig","description":"Slack Events API configuration.\n\nRequires a Slack app with a bot token and signing secret.\nThe ``signing_secret`` is used to verify incoming webhook requests\nvia HMAC-SHA256."},"SqliteCheckpointConfig":{"properties":{"type":{"type":"string","const":"sqlite","title":"Type"},"db_url":{"type":"string","title":"Db Url"}},"type":"object","required":["type","db_url"],"title":"SqliteCheckpointConfig","description":"Configuration for SQLite checkpointer."},"StandaloneAgentPatch":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"baseUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseurl"}},"type":"object","title":"StandaloneAgentPatch","description":"Body for PATCH /admin/api/v1/agent.\n\nAll fields are optional in the wire payload. Sending null on a\nrequired underlying column (``name``) is rejected at validation\ntime, since clearing those is meaningless for the singleton."},"StandaloneAgentRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"status":{"$ref":"#/components/schemas/AgentStatus"},"baseUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseurl"},"baseEngineConfig":{"$ref":"#/components/schemas/EngineConfig"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["id","name","status","baseEngineConfig","createdAt","updatedAt"],"title":"StandaloneAgentRead","description":"GET response and the data payload of PATCH responses."},"StandaloneAuthChangePasswordBody":{"properties":{"currentPassword":{"type":"string","title":"Currentpassword"},"newPassword":{"type":"string","title":"Newpassword"}},"type":"object","required":["currentPassword","newPassword"],"title":"StandaloneAuthChangePasswordBody","description":"Body of ``POST /admin/api/v1/auth/change-password``."},"StandaloneAuthLoginBody":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"StandaloneAuthLoginBody","description":"Body of ``POST /admin/api/v1/auth/login``.\n\nSingle-tenant: there is no username field — the standalone has one\nadmin row identified by the singleton primary key."},"StandaloneAuthMe":{"properties":{"authenticated":{"type":"boolean","title":"Authenticated"},"authMode":{"type":"string","title":"Authmode"}},"type":"object","required":["authenticated","authMode"],"title":"StandaloneAuthMe","description":"Response of ``GET /admin/api/v1/auth/me``.\n\n``authenticated`` is always true in ``auth_mode=none`` so the\nbundled UI can render without a login wall. In password mode it\nreflects the cookie/session check."},"StandaloneAuthMutationResult":{"properties":{"ok":{"type":"boolean","title":"Ok"}},"type":"object","required":["ok"],"title":"StandaloneAuthMutationResult","description":"Bare-success body for login / logout / change-password.\n\nLogin + logout side-effects (session cookie set/cleared) are carried\non the HTTP response itself; the body just acknowledges the outcome."},"StandaloneConnectionCheck":{"properties":{"ok":{"type":"boolean","title":"Ok"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["ok"],"title":"StandaloneConnectionCheck","description":"Body of POST /admin/api/v1//check-connection.\n\n``ok = True`` means the provider responded as expected. ``details``\ncarries provider-specific information (e.g. tool list for an MCP\nserver). ``error`` is set only when ``ok = False``."},"StandaloneDeleteResult":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","const":true,"title":"Deleted","default":true}},"type":"object","required":["id"],"title":"StandaloneDeleteResult","description":"Body of a successful DELETE response, wrapped in StandaloneMutationResponse."},"StandaloneGuardrailCreate":{"properties":{"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled","default":true},"position":{"type":"string","enum":["input","output"],"title":"Position"},"sortOrder":{"type":"integer","minimum":0.0,"title":"Sortorder","default":0},"guardrail":{"anyOf":[{"$ref":"#/components/schemas/SimpleBanListConfig"},{"$ref":"#/components/schemas/SimplePIIConfig"},{"$ref":"#/components/schemas/SimpleNSFWTextConfig"},{"$ref":"#/components/schemas/SimpleToxicLanguageConfig"},{"$ref":"#/components/schemas/SimpleGibberishTextConfig"},{"$ref":"#/components/schemas/SimpleBiasCheckConfig"},{"$ref":"#/components/schemas/SimpleCompetitionCheckConfig"},{"$ref":"#/components/schemas/SimpleCorrectLanguageConfig"},{"$ref":"#/components/schemas/SimpleRestrictToTopicConfig"}],"title":"Guardrail"}},"type":"object","required":["name","position","guardrail"],"title":"StandaloneGuardrailCreate","description":"Body for POST /admin/api/v1/guardrails."},"StandaloneGuardrailPatch":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"position":{"anyOf":[{"type":"string","enum":["input","output"]},{"type":"null"}],"title":"Position"},"sortOrder":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Sortorder"},"guardrail":{"anyOf":[{"$ref":"#/components/schemas/SimpleBanListConfig"},{"$ref":"#/components/schemas/SimplePIIConfig"},{"$ref":"#/components/schemas/SimpleNSFWTextConfig"},{"$ref":"#/components/schemas/SimpleToxicLanguageConfig"},{"$ref":"#/components/schemas/SimpleGibberishTextConfig"},{"$ref":"#/components/schemas/SimpleBiasCheckConfig"},{"$ref":"#/components/schemas/SimpleCompetitionCheckConfig"},{"$ref":"#/components/schemas/SimpleCorrectLanguageConfig"},{"$ref":"#/components/schemas/SimpleRestrictToTopicConfig"},{"type":"null"}],"title":"Guardrail"}},"type":"object","title":"StandaloneGuardrailPatch","description":"Body for PATCH /admin/api/v1/guardrails/{id}.\n\nAll fields are optional; absence means no change. Sending null on\n``name`` is rejected (clearing the row name is meaningless)."},"StandaloneGuardrailRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled"},"position":{"type":"string","enum":["input","output"],"title":"Position"},"sortOrder":{"type":"integer","minimum":0.0,"title":"Sortorder"},"guardrail":{"anyOf":[{"$ref":"#/components/schemas/SimpleBanListConfig"},{"$ref":"#/components/schemas/SimplePIIConfig"},{"$ref":"#/components/schemas/SimpleNSFWTextConfig"},{"$ref":"#/components/schemas/SimpleToxicLanguageConfig"},{"$ref":"#/components/schemas/SimpleGibberishTextConfig"},{"$ref":"#/components/schemas/SimpleBiasCheckConfig"},{"$ref":"#/components/schemas/SimpleCompetitionCheckConfig"},{"$ref":"#/components/schemas/SimpleCorrectLanguageConfig"},{"$ref":"#/components/schemas/SimpleRestrictToTopicConfig"}],"title":"Guardrail"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["id","slug","name","enabled","position","sortOrder","guardrail","createdAt","updatedAt"],"title":"StandaloneGuardrailRead","description":"GET response and the data payload of POST/PATCH/DELETE responses."},"StandaloneIntegrationCreate":{"properties":{"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled","default":true},"integration":{"$ref":"#/components/schemas/IntegrationConfig"}},"type":"object","required":["name","integration"],"title":"StandaloneIntegrationCreate","description":"Body for POST /admin/api/v1/integrations."},"StandaloneIntegrationPatch":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"integration":{"anyOf":[{"$ref":"#/components/schemas/IntegrationConfig"},{"type":"null"}]}},"type":"object","title":"StandaloneIntegrationPatch","description":"Body for PATCH /admin/api/v1/integrations/{id}.\n\nThe row-level ``enabled`` is the single source of truth at assembly;\nthe inner ``IntegrationConfig.enabled`` field is ignored and\noverwritten at assembly time (Phase 4+)."},"StandaloneIntegrationRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled"},"integration":{"$ref":"#/components/schemas/IntegrationConfig"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["id","slug","name","enabled","integration","createdAt","updatedAt"],"title":"StandaloneIntegrationRead","description":"GET response and the data payload of POST/PATCH/DELETE responses."},"StandaloneMCPServerCreate":{"properties":{"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled","default":true},"mcpServer":{"$ref":"#/components/schemas/MCPServer"}},"type":"object","required":["name","mcpServer"],"title":"StandaloneMCPServerCreate","description":"Body for POST /admin/api/v1/mcp-servers."},"StandaloneMCPServerPatch":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"mcpServer":{"anyOf":[{"$ref":"#/components/schemas/MCPServer"},{"type":"null"}]}},"type":"object","title":"StandaloneMCPServerPatch","description":"Body for PATCH /admin/api/v1/mcp-servers/{id}."},"StandaloneMCPServerRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled"},"mcpServer":{"$ref":"#/components/schemas/MCPServer"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["id","slug","name","enabled","mcpServer","createdAt","updatedAt"],"title":"StandaloneMCPServerRead","description":"GET response and the data payload of POST/PATCH/DELETE responses."},"StandaloneMemoryPatch":{"properties":{"agentFramework":{"anyOf":[{"$ref":"#/components/schemas/AgentFramework"},{"type":"null"}]},"memory":{"anyOf":[{"$ref":"#/components/schemas/SqliteCheckpointConfig"},{"$ref":"#/components/schemas/InMemoryCheckpointConfig"},{"$ref":"#/components/schemas/PostgresCheckpointConfig"},{"oneOf":[{"$ref":"#/components/schemas/AdkInMemorySessionConfig"},{"$ref":"#/components/schemas/AdkVertexAiSessionConfig"},{"$ref":"#/components/schemas/AdkDatabaseSessionConfig"}],"discriminator":{"propertyName":"type","mapping":{"database":"#/components/schemas/AdkDatabaseSessionConfig","in_memory":"#/components/schemas/AdkInMemorySessionConfig","vertex_ai":"#/components/schemas/AdkVertexAiSessionConfig"}}},{"type":"null"}],"title":"Memory"}},"type":"object","title":"StandaloneMemoryPatch","description":"Body for PATCH /admin/api/v1/memory. All fields optional."},"StandaloneMemoryRead":{"properties":{"agentFramework":{"$ref":"#/components/schemas/AgentFramework"},"memory":{"anyOf":[{"$ref":"#/components/schemas/SqliteCheckpointConfig"},{"$ref":"#/components/schemas/InMemoryCheckpointConfig"},{"$ref":"#/components/schemas/PostgresCheckpointConfig"},{"oneOf":[{"$ref":"#/components/schemas/AdkInMemorySessionConfig"},{"$ref":"#/components/schemas/AdkVertexAiSessionConfig"},{"$ref":"#/components/schemas/AdkDatabaseSessionConfig"}],"discriminator":{"propertyName":"type","mapping":{"database":"#/components/schemas/AdkDatabaseSessionConfig","in_memory":"#/components/schemas/AdkInMemorySessionConfig","vertex_ai":"#/components/schemas/AdkVertexAiSessionConfig"}}}],"title":"Memory"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["agentFramework","memory","updatedAt"],"title":"StandaloneMemoryRead","description":"GET response and the data payload of PATCH responses."},"StandaloneMutationResponse_StandaloneAgentRead_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneAgentRead"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneAgentRead]"},"StandaloneMutationResponse_StandaloneDeleteResult_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneDeleteResult"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneDeleteResult]"},"StandaloneMutationResponse_StandaloneGuardrailRead_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneGuardrailRead"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneGuardrailRead]"},"StandaloneMutationResponse_StandaloneIntegrationRead_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneIntegrationRead"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneIntegrationRead]"},"StandaloneMutationResponse_StandaloneMCPServerRead_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneMCPServerRead"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneMCPServerRead]"},"StandaloneMutationResponse_StandaloneMemoryRead_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneMemoryRead"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneMemoryRead]"},"StandaloneMutationResponse_StandaloneObservabilityRead_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneObservabilityRead"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneObservabilityRead]"},"StandaloneMutationResponse_StandalonePromptRead_":{"properties":{"data":{"$ref":"#/components/schemas/StandalonePromptRead"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandalonePromptRead]"},"StandaloneMutationResponse_StandaloneSingletonDeleteResult_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneSingletonDeleteResult"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneSingletonDeleteResult]"},"StandaloneMutationResponse_StandaloneSsoRead_":{"properties":{"data":{"$ref":"#/components/schemas/StandaloneSsoRead"},"reload":{"$ref":"#/components/schemas/StandaloneReloadResult"}},"type":"object","required":["data","reload"],"title":"StandaloneMutationResponse[StandaloneSsoRead]"},"StandaloneObservabilityPatch":{"properties":{"observability":{"anyOf":[{"$ref":"#/components/schemas/ObservabilityConfig-Input"},{"type":"null"}]}},"type":"object","title":"StandaloneObservabilityPatch","description":"Body for PATCH /admin/api/v1/observability. All fields optional."},"StandaloneObservabilityRead":{"properties":{"observability":{"$ref":"#/components/schemas/idun_agent_schema__engine__observability_v2__ObservabilityConfig"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["observability","updatedAt"],"title":"StandaloneObservabilityRead","description":"GET response and the data payload of PATCH responses."},"StandalonePromptCreate":{"properties":{"promptId":{"type":"string","title":"Promptid"},"content":{"type":"string","title":"Content"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["promptId","content"],"title":"StandalonePromptCreate","description":"Body for POST /admin/api/v1/prompts.\n\nCreating a prompt with an existing ``prompt_id`` creates a new\nversion at the DB layer (Phase 4+); the schema does not enforce\nuniqueness."},"StandalonePromptPatch":{"properties":{"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"}},"type":"object","title":"StandalonePromptPatch","description":"Body for PATCH /admin/api/v1/prompts/{id}.\n\nOnly ``tags`` is patchable. Sending null on ``tags`` is rejected\n(clearing tags means an empty list, not null). Content changes are\nnot accepted on PATCH — clients POST a new version instead."},"StandalonePromptRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"promptId":{"type":"string","title":"Promptid"},"version":{"type":"integer","title":"Version"},"content":{"type":"string","title":"Content"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["id","promptId","version","content","tags","createdAt","updatedAt"],"title":"StandalonePromptRead","description":"GET response and the data payload of POST/PATCH/DELETE responses."},"StandaloneReloadResult":{"properties":{"status":{"$ref":"#/components/schemas/StandaloneReloadStatus"},"message":{"type":"string","title":"Message"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["status","message"],"title":"StandaloneReloadResult","description":"Reload outcome attached to every admin mutation response.\n\n``reloaded`` means DB committed and runtime now uses the new config.\n``restart_required`` means DB committed and process restart is needed.\n``reload_failed`` means DB rolled back and runtime is unchanged."},"StandaloneReloadStatus":{"type":"string","enum":["reloaded","restart_required","reload_failed"],"title":"StandaloneReloadStatus","description":"Outcome of a reload triggered by an admin mutation."},"StandaloneSingletonDeleteResult":{"properties":{"deleted":{"type":"boolean","const":true,"title":"Deleted","default":true}},"type":"object","title":"StandaloneSingletonDeleteResult","description":"Body of a DELETE response for a singleton resource.\n\nSingleton resources (memory, future ones) are addressed by route\ninstead of by id, so the response carries only the deletion flag."},"StandaloneSpanRead":{"properties":{"otelSpanId":{"type":"string","title":"Otelspanid"},"otelTraceId":{"type":"string","title":"Oteltraceid"},"parentSpanId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentspanid"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind"},"startedAt":{"type":"string","format":"date-time","title":"Startedat"},"endedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Endedat"},"latencyMs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latencyms"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"promptTokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompttokens"},"completionTokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completiontokens"},"cacheReadTokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cachereadtokens"},"cacheWriteTokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cachewritetokens"},"totalTokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totaltokens"},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Costusd"},"costBreakdown":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Costbreakdown"},"costSource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Costsource"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes"},"events":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Events"}},"type":"object","required":["otelSpanId","otelTraceId","name","kind","startedAt"],"title":"StandaloneSpanRead","description":"One span read from the standalone_span table.\n\n``otel_span_id`` and ``parent_span_id`` are 8-byte hex strings.\n``otel_trace_id`` is the 8-byte slice of the parent trace id (the\nspan table only stores the trailing half — see the exporter)."},"StandaloneSpanTreeNode":{"properties":{"span":{"$ref":"#/components/schemas/StandaloneSpanRead"},"children":{"items":{"$ref":"#/components/schemas/StandaloneSpanTreeNode"},"type":"array","title":"Children"}},"type":"object","required":["span"],"title":"StandaloneSpanTreeNode","description":"Recursive node carrying a span and its children.\n\nThe router builds the tree in Python from the flat recursive-CTE\nresult. Depth is capped at 32 (decision ``§28``)."},"StandaloneSsoPatch":{"properties":{"sso":{"anyOf":[{"$ref":"#/components/schemas/SSOConfig"},{"type":"null"}]}},"type":"object","title":"StandaloneSsoPatch","description":"Body for PATCH /admin/api/v1/sso. All fields optional."},"StandaloneSsoRead":{"properties":{"sso":{"$ref":"#/components/schemas/SSOConfig"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["sso","updatedAt"],"title":"StandaloneSsoRead","description":"GET response and the data payload of PATCH responses."},"StandaloneTraceBulkDeleteResult":{"properties":{"deletedTraces":{"type":"integer","title":"Deletedtraces"},"deletedSpans":{"type":"integer","title":"Deletedspans"}},"type":"object","required":["deletedTraces","deletedSpans"],"title":"StandaloneTraceBulkDeleteResult","description":"Body of ``DELETE /admin/api/v1/traces`` (bulk by filter).\n\nThe filter shape mirrors :class:`StandaloneTraceListFilters` (minus\n``limit`` / ``cursor``); the response counts what was removed."},"StandaloneTraceDeleteResult":{"properties":{"deleted":{"type":"boolean","const":true,"title":"Deleted","default":true},"deletedSpans":{"type":"integer","title":"Deletedspans"}},"type":"object","required":["deletedSpans"],"title":"StandaloneTraceDeleteResult","description":"Body of a single ``DELETE /admin/api/v1/traces/{id}`` response.\n\nReports the deleted trace plus the cascaded span count so the UI\ncan show \"removed N spans\" without a follow-up read."},"StandaloneTraceDetail":{"properties":{"trace":{"$ref":"#/components/schemas/StandaloneTraceListItem"},"tree":{"items":{"$ref":"#/components/schemas/StandaloneSpanTreeNode"},"type":"array","title":"Tree"}},"type":"object","required":["trace"],"title":"StandaloneTraceDetail","description":"Body of ``GET /admin/api/v1/traces/{otel_trace_id}``.\n\n``tree`` holds the top-level spans of the trace. Orphan spans\n(those whose ``parent_span_id`` is not present in the same trace,\ne.g. truncated traces or cross-trace links) are also surfaced as\nroots so the UI never silently hides them."},"StandaloneTraceHealth":{"properties":{"queueDepth":{"type":"integer","title":"Queuedepth"},"maxQueueSize":{"type":"integer","title":"Maxqueuesize"},"overflowCount":{"type":"integer","title":"Overflowcount"},"writerRunning":{"type":"boolean","title":"Writerrunning"},"databaseDialect":{"type":"string","title":"Databasedialect","default":"unknown"},"instrumentorStatus":{"type":"string","title":"Instrumentorstatus","default":"ok"},"instrumentorMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instrumentormessage"}},"type":"object","required":["queueDepth","maxQueueSize","overflowCount","writerRunning"],"title":"StandaloneTraceHealth","description":"Body of ``GET /admin/api/v1/traces/_health``.\n\nReflects the running ``StandaloneSpanExporter``'s queue. When the\ntrace pipeline is not attached (engine booted without traces) the\nrouter returns zeroes + ``writer_running=False`` instead of 404 so\nthe UI panel can render a stable \"pipeline idle\" state.\n\n``database_dialect`` lets the UI conditionally render the SQLite\noperational banner without a second round-trip; it mirrors the\nSQLAlchemy bind dialect name (``\"sqlite\"`` or ``\"postgresql\"``)\nand falls back to ``\"unknown\"`` when no bind is reachable."},"StandaloneTraceListItem":{"properties":{"otelTraceId":{"type":"string","title":"Oteltraceid"},"name":{"type":"string","title":"Name"},"startedAt":{"type":"string","format":"date-time","title":"Startedat"},"endedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Endedat"},"latencyMs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latencyms"},"totalTokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totaltokens"},"totalCostUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Totalcostusd"},"models":{"items":{"type":"string"},"type":"array","title":"Models"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Userid"},"sessionId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sessionid"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["otelTraceId","name","startedAt"],"title":"StandaloneTraceListItem","description":"One row in ``GET /admin/api/v1/traces`` list response.\n\n``otel_trace_id`` is the lowercase hex encoding of the 16-byte\nW3C trace id. The DB stores raw bytes; routers convert at the\nboundary so JSON consumers never see a binary blob."},"StandaloneTraceListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StandaloneTraceListItem"},"type":"array","title":"Items"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nextcursor"},"totalEstimate":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totalestimate"}},"type":"object","title":"StandaloneTraceListResponse","description":"Envelope for the list view.\n\n``next_cursor`` is the opaque cursor for the next page or ``None``\nwhen the current page is the last one. ``total_estimate`` is left\n``None`` on SQLite (count is expensive) and reserved for a fast\nPG estimate via ``pg_class.reltuples`` in a later iteration."},"SystemMessage":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","const":"system","title":"Role","default":"system"},"content":{"type":"string","title":"Content"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"encryptedValue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encryptedvalue"}},"additionalProperties":true,"type":"object","required":["id","content"],"title":"SystemMessage","description":"A system message."},"TeamsIntegrationConfig":{"properties":{"appId":{"type":"string","title":"Appid","description":"Microsoft App ID from the Azure AD app registration."},"appPassword":{"type":"string","title":"Apppassword","description":"Client secret from the Azure AD app registration."},"appTenantId":{"type":"string","title":"Apptenantid","description":"Azure AD tenant ID that owns the app registration."}},"type":"object","required":["appId","appPassword","appTenantId"],"title":"TeamsIntegrationConfig","description":"Microsoft Teams integration configuration.\n\nSingle-tenant only: each customer registers their own Microsoft app\nin their own Azure AD and runs their own engine instance against it.\nAuthentication uses Bot Framework's ``ConfigurationBotFrameworkAuthentication``\nwith ``MicrosoftAppType=SingleTenant`` hardcoded."},"TextInputContent":{"properties":{"type":{"type":"string","const":"text","title":"Type","default":"text"},"text":{"type":"string","title":"Text"}},"additionalProperties":true,"type":"object","required":["text"],"title":"TextInputContent","description":"A text fragment in a multimodal user message."},"TimeBucketPoint":{"properties":{"t":{"type":"string","format":"date-time","title":"T"},"v":{"type":"number","title":"V"}},"type":"object","required":["t","v"],"title":"TimeBucketPoint","description":"Single (timestamp, value) point in a time series."},"Tool":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"parameters":{"title":"Parameters"}},"additionalProperties":true,"type":"object","required":["name","description","parameters"],"title":"Tool","description":"A tool definition."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","const":"function","title":"Type","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall"},"encryptedValue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encryptedvalue"}},"additionalProperties":true,"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call, modelled after OpenAI tool calls."},"ToolKind":{"type":"string","enum":["native","mcp","built_in"],"title":"ToolKind"},"ToolMessage":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","const":"tool","title":"Role","default":"tool"},"content":{"type":"string","title":"Content"},"toolCallId":{"type":"string","title":"Toolcallid"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"encryptedValue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encryptedvalue"}},"additionalProperties":true,"type":"object","required":["id","content","toolCallId"],"title":"ToolMessage","description":"A tool result message."},"ToolNode":{"properties":{"kind":{"type":"string","const":"tool","title":"Kind","default":"tool"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"tool_kind":{"$ref":"#/components/schemas/ToolKind"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"mcp_server_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Server Name"}},"type":"object","required":["id","name","tool_kind"],"title":"ToolNode"},"TopErrorRow":{"properties":{"spanName":{"type":"string","title":"Spanname"},"count":{"type":"integer","title":"Count"},"lastSeen":{"type":"string","format":"date-time","title":"Lastseen"},"sampleTraceId":{"type":"string","title":"Sampletraceid"}},"type":"object","required":["spanName","count","lastSeen","sampleTraceId"],"title":"TopErrorRow","description":"One row of the Top errors table.\n\nGrouped by failing span name. The current exporter does not preserve\nOTel exception event attributes (``exception.type`` /\n``exception.message``), so granular error types come from drilling\ninto the sample trace. See SPEC § 4 row 5."},"ToxicLanguageConfig":{"properties":{"config_id":{"type":"string","const":"toxic_language","title":"Config Id","default":"toxic_language"},"api_key":{"type":"string","title":"Api Key","default":""},"guard_url":{"type":"string","title":"Guard Url","default":"hub://guardrails/toxic_language"},"reject_message":{"type":"string","title":"Reject Message","default":"Toxic language detected"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","description":"Sensitivity level for toxic language"}},"type":"object","required":["threshold"],"title":"ToxicLanguageConfig","description":"Toxic Language configuration."},"TranslationAgentConfig":{"properties":{"name":{"type":"string","title":"Name"},"observability":{"anyOf":[{"$ref":"#/components/schemas/idun_agent_schema__engine__observability__ObservabilityConfig"},{"type":"null"}],"description":"(Deprecated) Observability config is deprecated and will be removed in a future release.","deprecated":true},"graph_definition":{"type":"string","title":"Graph Definition"},"checkpointer":{"anyOf":[{"$ref":"#/components/schemas/SqliteCheckpointConfig"},{"$ref":"#/components/schemas/InMemoryCheckpointConfig"},{"$ref":"#/components/schemas/PostgresCheckpointConfig"},{"type":"null"}],"title":"Checkpointer"},"store":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Store"},"source_lang":{"type":"string","title":"Source Lang","description":"Source language to translate from","default":"English"},"target_lang":{"type":"string","title":"Target Lang","description":"Target language to translate to","default":"French"},"model_name":{"type":"string","title":"Model Name","description":"LLM model to use","default":"gpt-3.5-turbo"}},"type":"object","required":["name","graph_definition"],"title":"TranslationAgentConfig","description":"Configuration model for the Translation Agent Template."},"UserMessage":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","const":"user","title":"Role","default":"user"},"content":{"anyOf":[{"type":"string"},{"items":{"oneOf":[{"$ref":"#/components/schemas/TextInputContent"},{"$ref":"#/components/schemas/BinaryInputContent"}],"discriminator":{"propertyName":"type","mapping":{"binary":"#/components/schemas/BinaryInputContent","text":"#/components/schemas/TextInputContent"}}},"type":"array"}],"title":"Content"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"encryptedValue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encryptedvalue"}},"additionalProperties":true,"type":"object","required":["id","content"],"title":"UserMessage","description":"A user message supporting text or multimodal content."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WhatsAppIntegrationConfig":{"properties":{"accessToken":{"type":"string","title":"Accesstoken","description":"Meta Graph API permanent access token."},"phoneNumberId":{"type":"string","title":"Phonenumberid","description":"WhatsApp Business phone number ID."},"verifyToken":{"type":"string","title":"Verifytoken","description":"Webhook verification token. Must match the token configured in the Meta App Dashboard webhook settings."},"apiVersion":{"type":"string","title":"Apiversion","description":"Meta Graph API version.","default":"v21.0"}},"type":"object","required":["accessToken","phoneNumberId","verifyToken"],"title":"WhatsAppIntegrationConfig","description":"WhatsApp Business Cloud API configuration.\n\nRequires a Meta Business account with a WhatsApp Business API setup.\nThe ``verify_token`` is used by Meta to validate the webhook endpoint\nduring initial registration."},"idun_agent_schema__engine__observability__ObservabilityConfig":{"properties":{"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"enabled":{"type":"boolean","title":"Enabled","default":false},"options":{"additionalProperties":true,"type":"object","title":"Options"}},"type":"object","title":"ObservabilityConfig","description":"Provider-agnostic observability configuration based on Pydantic.\n\nExample YAML:\n observability:\n provider: \"langfuse\" # or \"phoenix\"\n enabled: true\n options:\n host: ${LANGFUSE_HOST}\n public_key: ${LANGFUSE_PUBLIC_KEY}\n secret_key: ${LANGFUSE_SECRET_KEY}\n run_name: \"my-run\""},"idun_agent_schema__engine__observability_v2__ObservabilityConfig":{"properties":{"provider":{"$ref":"#/components/schemas/ObservabilityProvider","default":"LANGFUSE"},"enabled":{"type":"boolean","title":"Enabled","default":true},"config":{"oneOf":[{"$ref":"#/components/schemas/LangfuseConfig"},{"$ref":"#/components/schemas/PhoenixConfig"},{"$ref":"#/components/schemas/GCPLoggingConfig"},{"$ref":"#/components/schemas/GCPTraceConfig"},{"$ref":"#/components/schemas/LangsmithConfig"}],"title":"Config","discriminator":{"propertyName":"provider","mapping":{"GCP_LOGGING":"#/components/schemas/GCPLoggingConfig","GCP_TRACE":"#/components/schemas/GCPTraceConfig","LANGFUSE":"#/components/schemas/LangfuseConfig","LANGSMITH":"#/components/schemas/LangsmithConfig","PHOENIX":"#/components/schemas/PhoenixConfig"}}}},"type":"object","required":["config"],"title":"ObservabilityConfig","description":"Observability configuration."}}},"tags":[{"name":"Runtime","description":"Public agent run endpoints, engine operations, and chat-channel webhooks. SSE streaming via the AG-UI protocol."},{"name":"Agent Configuration","description":"Singleton admin endpoints for the agent, prompts, memory, guardrails, and onboarding wizard."},{"name":"Auth & SSO","description":"Login, sessions, password change, SSO config, and the public SSO discovery endpoint."},{"name":"Integrations & Tools","description":"MCP server registry and external integration credentials."},{"name":"Observability","description":"Tracing/logging provider configuration."},{"name":"Traces","description":"Trace and span storage admin endpoints — list, detail, delete, and pipeline-health for the standalone trace store."},{"name":"Dashboard","description":"Operator dashboard widgets — KPIs, time-series, top errors, and configuration summary."}]}