{"openapi":"3.1.0","info":{"title":"Employee Smart Assistant API","version":"0.1.0"},"paths":{"/api/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_auth_login_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Login Api Auth Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_api_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Me Api Auth Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_api_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Logout Api Auth Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/preferences":{"get":{"tags":["auth"],"summary":"Get Prefs","operationId":"get_prefs_api_auth_preferences_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Prefs Api Auth Preferences Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["auth"],"summary":"Save Prefs","operationId":"save_prefs_api_auth_preferences_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavePreferencesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Save Prefs Api Auth Preferences Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/mentions/catalog":{"get":{"tags":["chat"],"summary":"Chat Mentions Catalog","description":"Return the four mention catalogs filtered by the caller's permissions.\n\nUsed by the composer @-mention popover. Cached briefly client-side. Each\nitem is {id, label, ...kind-specific extras}.","operationId":"chat_mentions_catalog_api_chat_mentions_catalog_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chat Mentions Catalog Api Chat Mentions Catalog Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/suggest-questions":{"post":{"tags":["chat"],"summary":"Chat Suggest Questions","description":"Composer \"Ask Question\" action: propose guided follow-up questions.\n\nGrounded on the most recent messages of ``session_id`` (when supplied),\notherwise on the current composer ``draft``. Uses the composer's selected\n``model_label`` (same resolution + permission gates as ``/ask``). Reply\nlanguage follows the user's preference, overridden to Arabic when the\ndraft/conversation is in Arabic. Never errors — falls back to canned\nstarters when the model call fails.","operationId":"chat_suggest_questions_api_chat_suggest_questions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestQuestionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chat Suggest Questions Api Chat Suggest Questions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/ask":{"post":{"tags":["chat"],"summary":"Chat Ask","operationId":"chat_ask_api_chat_ask_post","parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Response format: 'blocks' (default) emits the v2 envelope alongside legacy keys; pass 'legacy' to suppress the v2 envelope.","default":"blocks","title":"Format"},"description":"Response format: 'blocks' (default) emits the v2 envelope alongside legacy keys; pass 'legacy' to suppress the v2 envelope."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_chat_ask_api_chat_ask_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chat Ask Api Chat Ask Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/ask/stream":{"post":{"tags":["chat"],"summary":"Chat Ask Stream","operationId":"chat_ask_stream_api_chat_ask_stream_post","parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Response format: 'blocks' (default) emits the v2 envelope alongside legacy keys; pass 'legacy' to suppress the v2 envelope.","default":"blocks","title":"Format"},"description":"Response format: 'blocks' (default) emits the v2 envelope alongside legacy keys; pass 'legacy' to suppress the v2 envelope."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_chat_ask_stream_api_chat_ask_stream_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/live-run":{"get":{"tags":["chat"],"summary":"Session Live Run","description":"Reconnect (SSE) to a turn still streaming for this session after a page\nrefresh. Replays the buffered run-trace events, streams new ones live, and\nemits the final result when the turn lands. ``idle`` when nothing is running.","operationId":"session_live_run_api_chat_sessions__session_id__live_run_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions":{"get":{"tags":["chat"],"summary":"List Sessions","operationId":"list_sessions_api_chat_sessions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Sessions Api Chat Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}":{"get":{"tags":["chat"],"summary":"Load Session","operationId":"load_session_api_chat_sessions__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"'blocks' (default) emits the v2 envelope alongside legacy keys; pass 'legacy' to suppress the v2 envelope.","default":"blocks","title":"Format"},"description":"'blocks' (default) emits the v2 envelope alongside legacy keys; pass 'legacy' to suppress the v2 envelope."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Load Session Api Chat Sessions  Session Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Delete Session","operationId":"delete_session_api_chat_sessions__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Session Api Chat Sessions  Session Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["chat"],"summary":"Update Session","operationId":"update_session_api_chat_sessions__session_id__put","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Session Api Chat Sessions  Session Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/export":{"get":{"tags":["chat"],"summary":"Export Session","operationId":"export_session_api_chat_sessions__session_id__export_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json","title":"Format"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/clear":{"post":{"tags":["chat"],"summary":"Clear Chat","operationId":"clear_chat_api_chat_clear_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Clear Chat Api Chat Clear Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/history":{"get":{"tags":["chat"],"summary":"Chat History","operationId":"chat_history_api_chat_history_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chat History Api Chat History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/last-result.csv":{"get":{"tags":["chat"],"summary":"Last Result Csv","operationId":"last_result_csv_api_chat_last_result_csv_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/fork":{"post":{"tags":["chat"],"summary":"Fork Session","operationId":"fork_session_api_chat_sessions__session_id__fork_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForkSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fork Session Api Chat Sessions  Session Id  Fork Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/branch":{"post":{"tags":["chat"],"summary":"Branch Session","description":"Branch a session by stable message UUID (preferred over /fork's index).","operationId":"branch_session_api_chat_sessions__session_id__branch_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BranchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Branch Session Api Chat Sessions  Session Id  Branch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/share":{"post":{"tags":["chat"],"summary":"Share Session","operationId":"share_session_api_chat_sessions__session_id__share_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Share Session Api Chat Sessions  Session Id  Share Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Unshare Session","operationId":"unshare_session_api_chat_sessions__session_id__share_delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Unshare Session Api Chat Sessions  Session Id  Share Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/share/{token}":{"get":{"tags":["chat"],"summary":"Get Shared Session","description":"Public endpoint — no auth required.","operationId":"get_shared_session_api_chat_share__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Shared Session Api Chat Share  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/refresh-schema":{"post":{"tags":["chat"],"summary":"Refresh Schema","operationId":"refresh_schema_api_chat_refresh_schema_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshSchemaRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Schema Api Chat Refresh Schema Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/messages/{message_id}/bookmark":{"post":{"tags":["chat"],"summary":"Bookmark Message","operationId":"bookmark_message_api_chat_sessions__session_id__messages__message_id__bookmark_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookmarkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bookmark Message Api Chat Sessions  Session Id  Messages  Message Id  Bookmark Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Unbookmark Message","operationId":"unbookmark_message_api_chat_sessions__session_id__messages__message_id__bookmark_delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Unbookmark Message Api Chat Sessions  Session Id  Messages  Message Id  Bookmark Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/messages/{message_id}/regenerate":{"post":{"tags":["chat"],"summary":"Regenerate Message","description":"Truncate the session so the assistant target and its preceding user\nmessage are dropped, then return the original question. The frontend\nre-asks via /api/chat/ask to actually run the LLM.","operationId":"regenerate_message_api_chat_sessions__session_id__messages__message_id__regenerate_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Message Api Chat Sessions  Session Id  Messages  Message Id  Regenerate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/messages/{message_id}/edit":{"post":{"tags":["chat"],"summary":"Edit Message","description":"Truncate the session from the target user message onward (inclusive)\nand return the new edited content. The frontend re-asks via /ask.","operationId":"edit_message_api_chat_sessions__session_id__messages__message_id__edit_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Edit Message Api Chat Sessions  Session Id  Messages  Message Id  Edit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/messages/{message_id}/export":{"get":{"tags":["chat"],"summary":"Export Message","operationId":"export_message_api_chat_sessions__session_id__messages__message_id__export_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Export format. Currently only 'md' is supported.","default":"md","title":"Format"},"description":"Export format. Currently only 'md' is supported."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/messages/{message_id}/feedback":{"post":{"tags":["chat"],"summary":"Submit Feedback","description":"Record a thumbs up/down rating with optional reason tags.","operationId":"submit_feedback_api_chat_sessions__session_id__messages__message_id__feedback_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Submit Feedback Api Chat Sessions  Session Id  Messages  Message Id  Feedback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Clear Feedback","operationId":"clear_feedback_api_chat_sessions__session_id__messages__message_id__feedback_delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Clear Feedback Api Chat Sessions  Session Id  Messages  Message Id  Feedback Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/sessions/{session_id}/messages/{message_id}/issue-report":{"post":{"tags":["chat"],"summary":"Submit Issue Report","description":"Flag an assistant message as problematic. Multiple reports allowed per message.","operationId":"submit_issue_report_api_chat_sessions__session_id__messages__message_id__issue_report_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Submit Issue Report Api Chat Sessions  Session Id  Messages  Message Id  Issue Report Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/tool-confirm":{"post":{"tags":["chat"],"summary":"Confirm Tool Call","description":"Approve or deny a destructive tool paused for user confirmation.","operationId":"confirm_tool_call_api_chat_tool_confirm_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolConfirmRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Confirm Tool Call Api Chat Tool Confirm Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/tool-confirm/cancel":{"post":{"tags":["chat"],"summary":"Cancel Tool Confirmations","description":"Deny all pending tool confirmations for the current user (Stop / abort).","operationId":"cancel_tool_confirmations_api_chat_tool_confirm_cancel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Tool Confirmations Api Chat Tool Confirm Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/audit-log":{"get":{"tags":["admin"],"summary":"Admin Audit Log","operationId":"admin_audit_log_api_admin_audit_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Audit Log Api Admin Audit Log Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/companies":{"get":{"tags":["admin"],"summary":"Admin Company Catalog","operationId":"admin_company_catalog_api_admin_companies_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Company Catalog Api Admin Companies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users":{"get":{"tags":["admin"],"summary":"Admin Users","operationId":"admin_users_api_admin_users_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Users Api Admin Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Admin Add User","operationId":"admin_add_user_api_admin_users_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Add User Api Admin Users Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{username}":{"delete":{"tags":["admin"],"summary":"Admin Delete User","operationId":"admin_delete_user_api_admin_users__username__delete","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Delete User Api Admin Users  Username  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin"],"summary":"Admin Patch User","operationId":"admin_patch_user_api_admin_users__username__patch","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Patch User Api Admin Users  Username  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/reset-password":{"post":{"tags":["admin"],"summary":"Admin Reset Password","operationId":"admin_reset_password_api_admin_users_reset_password_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Reset Password Api Admin Users Reset Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/permission-catalog":{"get":{"tags":["admin"],"summary":"Admin Permission Catalog","description":"The authoritative permission key list + per-role defaults.\n\nThe admin permission editor consumes this instead of its hardcoded copy so\na new backend permission key can never silently drift out of the UI again\n(the frontend keeps its local list only as an offline/back-compat\nfallback). Labels stay client-side (i18n).","operationId":"admin_permission_catalog_api_admin_permission_catalog_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Permission Catalog Api Admin Permission Catalog Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/policy-sim/snapshot/{username}":{"get":{"tags":["admin"],"summary":"Admin Policy Sim Snapshot","description":"Resolved policy snapshot for *username* — permissions / domains /\ncompanies / tools the user would see. Read-only; never persists.","operationId":"admin_policy_sim_snapshot_api_admin_policy_sim_snapshot__username__get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Policy Sim Snapshot Api Admin Policy Sim Snapshot  Username  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/policy-sim/chat":{"post":{"tags":["admin"],"summary":"Admin Policy Sim Chat","description":"Evaluate every chat-path gate for a synthetic ``(question, company,\nmodel)`` triple against *username*'s stored policy. Returns a gate-by-gate\nresult; never calls the LLM or consumes tokens.","operationId":"admin_policy_sim_chat_api_admin_policy_sim_chat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicySimChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Policy Sim Chat Api Admin Policy Sim Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/policy-sim/sql":{"post":{"tags":["admin"],"summary":"Admin Policy Sim Sql","description":"Run *sql* through ``validate_sql`` using the target user's effective\ndomains. Reports validation outcome + tables touched.","operationId":"admin_policy_sim_sql_api_admin_policy_sim_sql_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicySimSQLRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Policy Sim Sql Api Admin Policy Sim Sql Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/policy-sim/what-if":{"post":{"tags":["admin"],"summary":"Admin Policy Sim What If","description":"Compute before/after diff of effective policy when the user is\npatched with the supplied fields. Does **not** persist anything.","operationId":"admin_policy_sim_what_if_api_admin_policy_sim_what_if_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicySimWhatIfRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Policy Sim What If Api Admin Policy Sim What If Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/seed-from-bc":{"post":{"tags":["admin"],"summary":"Admin Seed Users","operationId":"admin_seed_users_api_admin_seed_from_bc_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Seed Users Api Admin Seed From Bc Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/settings":{"get":{"tags":["admin"],"summary":"Get Admin Settings","operationId":"get_admin_settings_api_admin_settings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Admin Settings Api Admin Settings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin"],"summary":"Patch Admin Settings","operationId":"patch_admin_settings_api_admin_settings_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Admin Settings Api Admin Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/test-bc-odata":{"post":{"tags":["admin"],"summary":"Admin Test Bc Odata","operationId":"admin_test_bc_odata_api_admin_test_bc_odata_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestBcOdataRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Test Bc Odata Api Admin Test Bc Odata Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/integrations":{"get":{"tags":["admin"],"summary":"Get Admin Integrations","description":"Current integration selection + the capability catalog.\n\nThe catalog drives the Integrations-tab UI (type cards, deployment toggle,\n\"Coming soon\" badges); ``current`` reflects this tenant's saved selection\n(defaulting to microsoft_bc/on_prem for pre-Phase-A tenants).","operationId":"get_admin_integrations_api_admin_integrations_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Admin Integrations Api Admin Integrations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin"],"summary":"Patch Admin Integrations","description":"Persist the integration selection on the enabled connection record.","operationId":"patch_admin_integrations_api_admin_integrations_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateIntegrationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Admin Integrations Api Admin Integrations Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/integrations/cloud":{"patch":{"tags":["admin"],"summary":"Patch Admin Integration Cloud","description":"Persist Cloud BC config on the enabled connection record.","operationId":"patch_admin_integration_cloud_api_admin_integrations_cloud_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Admin Integration Cloud Api Admin Integrations Cloud Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/integrations/odoo":{"patch":{"tags":["admin"],"summary":"Patch Admin Integration Odoo","description":"Persist Odoo config on the enabled connection record.","operationId":"patch_admin_integration_odoo_api_admin_integrations_odoo_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OdooConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Admin Integration Odoo Api Admin Integrations Odoo Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/integrations/test":{"post":{"tags":["admin"],"summary":"Test Admin Integration","description":"Generalized connection test — supersedes the per-card DB/OData buttons.\n\n``probe=\"connection\"`` (default) dispatches to the active connector's\n``test_connection()`` (on-prem: SQL ``SELECT 1``; cloud: OAuth + ``/companies``).\n``probe=\"odata_signin\"`` runs the BC-on-prem OData password probe for the\nposted credentials.","operationId":"test_admin_integration_api_admin_integrations_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Admin Integration Api Admin Integrations Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/integrations/{connection_id}":{"get":{"tags":["admin"],"summary":"Get Admin Integration Connection","operationId":"get_admin_integration_connection_api_admin_integrations__connection_id__get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Admin Integration Connection Api Admin Integrations  Connection Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin"],"summary":"Patch Admin Integration Connection","description":"Update a stored connection (config merge, enable/disable, label, description).","operationId":"patch_admin_integration_connection_api_admin_integrations__connection_id__patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConnectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Admin Integration Connection Api Admin Integrations  Connection Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Revoke Admin Integration","description":"Revoke (clear credentials for) a connection. The ERP slot blanks the flat\nsettings the connectors read; stored records are deleted along with their\nsecrets.","operationId":"revoke_admin_integration_api_admin_integrations__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Admin Integration Api Admin Integrations  Connection Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/integrations/connections":{"post":{"tags":["admin"],"summary":"Create Admin Integration Connection","description":"Create a new integration connection record (does not affect existing ones).","operationId":"create_admin_integration_connection_api_admin_integrations_connections_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConnectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Admin Integration Connection Api Admin Integrations Connections Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/llm-cache/stats":{"get":{"tags":["admin"],"summary":"Get Llm Cache Stats","operationId":"get_llm_cache_stats_api_admin_llm_cache_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Llm Cache Stats Api Admin Llm Cache Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/llm-cache":{"delete":{"tags":["admin"],"summary":"Clear Llm Cache","operationId":"clear_llm_cache_api_admin_llm_cache_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Clear Llm Cache Api Admin Llm Cache Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/settings/logo":{"post":{"tags":["admin"],"summary":"Upload Company Logo","operationId":"upload_company_logo_api_admin_settings_logo_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_company_logo_api_admin_settings_logo_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Company Logo Api Admin Settings Logo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models":{"get":{"tags":["admin"],"summary":"List Admin Models","operationId":"list_admin_models_api_admin_models_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Admin Models Api Admin Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Create Admin Model","operationId":"create_admin_model_api_admin_models_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModelCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Admin Model Api Admin Models Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/reorder":{"post":{"tags":["admin"],"summary":"Reorder Admin Models","description":"Persist a new display order for the managed-models list.\n\nRobust to partial/stale input: reorders by the given uids, silently drops\nunknown uids, and appends any models the client omitted (preserving their\nrelative order) so no model is ever lost. Enabled/recommended are untouched.","operationId":"reorder_admin_models_api_admin_models_reorder_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModelReorderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reorder Admin Models Api Admin Models Reorder Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/models/{model_uid}":{"patch":{"tags":["admin"],"summary":"Update Admin Model","operationId":"update_admin_model_api_admin_models__model_uid__patch","parameters":[{"name":"model_uid","in":"path","required":true,"schema":{"type":"string","title":"Model Uid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModelUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Admin Model Api Admin Models  Model Uid  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete Admin Model","operationId":"delete_admin_model_api_admin_models__model_uid__delete","parameters":[{"name":"model_uid","in":"path","required":true,"schema":{"type":"string","title":"Model Uid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Admin Model Api Admin Models  Model Uid  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agents":{"get":{"tags":["admin"],"summary":"Admin List Agents","operationId":"admin_list_agents_api_admin_agents_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin List Agents Api Admin Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Admin Create Agent","operationId":"admin_create_agent_api_admin_agents_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Create Agent Api Admin Agents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agents/packs":{"get":{"tags":["admin"],"summary":"Admin List Agent Packs","description":"Available agent packs with per-template capability + install state.\n\nDrives the \"N agents available for this connection\" affordance: each template\nreports ``available`` (capabilities met), ``installed``, ``enabled``, and\n``update_available`` so the UI can show exactly why something is offered,\nalready present, or out of date.","operationId":"admin_list_agent_packs_api_admin_agents_packs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin List Agent Packs Api Admin Agents Packs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agents/packs/{pack_id}/install":{"post":{"tags":["admin"],"summary":"Admin Install Agent Pack","description":"Install (or upgrade) pack templates. Agents are created **disabled**.\n\nWrite-capable templates get their write tools pinned to \"require approval\"\nbefore the agent record exists, so there is no window in which an admin could\nenable one with an unguarded write path.","operationId":"admin_install_agent_pack_api_admin_agents_packs__pack_id__install_post","parameters":[{"name":"pack_id","in":"path","required":true,"schema":{"type":"string","title":"Pack Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPackInstallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Install Agent Pack Api Admin Agents Packs  Pack Id  Install Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agents/{agent_id}":{"patch":{"tags":["admin"],"summary":"Admin Update Agent","operationId":"admin_update_agent_api_admin_agents__agent_id__patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Update Agent Api Admin Agents  Agent Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Admin Delete Agent","operationId":"admin_delete_agent_api_admin_agents__agent_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Delete Agent Api Admin Agents  Agent Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agents/suggest-scope":{"post":{"tags":["admin"],"summary":"Admin Suggest Agent Scope","description":"AI-assisted Agent Builder helper.\n\nGiven the agent's identity (name + description + system_prompt), return\nsuggested ``data_domains``, ``companies``, and ``kb_tags`` so the admin\ncan one-click populate the form. Falls back to a heuristic when no LLM\nprovider is configured — the endpoint never errors out the form.","operationId":"admin_suggest_agent_scope_api_admin_agents_suggest_scope_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestScopeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Suggest Agent Scope Api Admin Agents Suggest Scope Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agents/suggest-prompt":{"post":{"tags":["admin"],"summary":"Admin Suggest Agent Prompt","description":"AI-assisted Agent Builder helper. Drafts a system prompt from the\nagent's name + description. Returns ``{ok, source, prompt}``.","operationId":"admin_suggest_agent_prompt_api_admin_agents_suggest_prompt_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestPromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Suggest Agent Prompt Api Admin Agents Suggest Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/pa-usage":{"get":{"tags":["admin"],"summary":"Get Admin Pa Usage","operationId":"get_admin_pa_usage_api_admin_pa_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":365,"minimum":1},{"type":"null"}],"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Admin Pa Usage Api Admin Pa Usage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/metrics":{"get":{"tags":["admin"],"summary":"Get Admin Metrics","operationId":"get_admin_metrics_api_admin_metrics_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":7,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Admin Metrics Api Admin Metrics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feedback-analytics":{"get":{"tags":["admin"],"summary":"Get Admin Feedback Analytics","description":"Aggregated thumbs up/down ratings + issue reports for prompt tuning.","operationId":"get_admin_feedback_analytics_api_admin_feedback_analytics_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":365,"minimum":1},{"type":"null"}],"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Admin Feedback Analytics Api Admin Feedback Analytics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/dashboard":{"get":{"tags":["admin"],"summary":"Get Admin Dashboard","operationId":"get_admin_dashboard_api_admin_dashboard_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Admin Dashboard Api Admin Dashboard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/governance-alerts/test":{"post":{"tags":["admin"],"summary":"Test Governance Alert Delivery","description":"Run governance alert delivery now (ignores dedup) for the current tenant.","operationId":"test_governance_alert_delivery_api_admin_governance_alerts_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Governance Alert Delivery Api Admin Governance Alerts Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/custom-tools":{"get":{"tags":["admin"],"summary":"List Admin Custom Tools","operationId":"list_admin_custom_tools_api_admin_custom_tools_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Admin Custom Tools Api Admin Custom Tools Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Create Admin Custom Tool","operationId":"create_admin_custom_tool_api_admin_custom_tools_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomToolCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Admin Custom Tool Api Admin Custom Tools Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/custom-tools/{tool_id}":{"patch":{"tags":["admin"],"summary":"Update Admin Custom Tool","operationId":"update_admin_custom_tool_api_admin_custom_tools__tool_id__patch","parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomToolUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Admin Custom Tool Api Admin Custom Tools  Tool Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete Admin Custom Tool","operationId":"delete_admin_custom_tool_api_admin_custom_tools__tool_id__delete","parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Admin Custom Tool Api Admin Custom Tools  Tool Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mcp-connectors":{"get":{"tags":["admin"],"summary":"List Admin Mcp Connectors","operationId":"list_admin_mcp_connectors_api_admin_mcp_connectors_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Admin Mcp Connectors Api Admin Mcp Connectors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Create Admin Mcp Connector","operationId":"create_admin_mcp_connector_api_admin_mcp_connectors_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPConnectorCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Admin Mcp Connector Api Admin Mcp Connectors Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mcp-connectors/{connector_id}":{"patch":{"tags":["admin"],"summary":"Update Admin Mcp Connector","operationId":"update_admin_mcp_connector_api_admin_mcp_connectors__connector_id__patch","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","title":"Connector Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPConnectorUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Admin Mcp Connector Api Admin Mcp Connectors  Connector Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete Admin Mcp Connector","operationId":"delete_admin_mcp_connector_api_admin_mcp_connectors__connector_id__delete","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","title":"Connector Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Admin Mcp Connector Api Admin Mcp Connectors  Connector Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/mcp-connectors/{connector_id}/test":{"post":{"tags":["admin"],"summary":"Test Admin Mcp Connector","operationId":"test_admin_mcp_connector_api_admin_mcp_connectors__connector_id__test_post","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","title":"Connector Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Admin Mcp Connector Api Admin Mcp Connectors  Connector Id  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/skills":{"get":{"tags":["admin"],"summary":"List Admin Skills","description":"Unified inventory of every skill (tool) the platform exposes.\n\nJoins three sources into one shape so the Skill Store UI can render a\nsingle browsable list:\n  - \"builtin\"   — bc_agent.tools.registry.TOOL_REGISTRY (code-defined)\n  - \"custom\"    — admin-created HTTP tools (custom_tools_store)\n  - \"mcp\"       — admin-registered MCP connectors (mcp_store)\n  - \"community\" — placeholder bucket for a future remote marketplace\n\nEach entry carries `id`, `name`, `description`, `kind`, `enabled`,\nvisibility hints (`requires_permission`, `allowed_roles`), and a `badges`\nlist the UI can render directly (e.g. [\"MCP\", \"OAuth\"]).","operationId":"list_admin_skills_api_admin_skills_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Admin Skills Api Admin Skills Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tool-audit":{"get":{"tags":["admin"],"summary":"Get Tool Audit Log","operationId":"get_tool_audit_log_api_admin_tool_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}},{"name":"tool_name","in":"query","required":false,"schema":{"type":"string","title":"Tool Name"}},{"name":"user_id","in":"query","required":false,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tool Audit Log Api Admin Tool Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/secrets/{namespace}":{"get":{"tags":["admin"],"summary":"List Admin Secrets","operationId":"list_admin_secrets_api_admin_secrets__namespace__get","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","title":"Namespace"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Admin Secrets Api Admin Secrets  Namespace  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/secrets/{namespace}/{key}":{"post":{"tags":["admin"],"summary":"Set Admin Secret","operationId":"set_admin_secret_api_admin_secrets__namespace___key__post","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","title":"Namespace"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretSetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Admin Secret Api Admin Secrets  Namespace   Key  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete Admin Secret","operationId":"delete_admin_secret_api_admin_secrets__namespace___key__delete","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","title":"Namespace"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Admin Secret Api Admin Secrets  Namespace   Key  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/memories":{"get":{"tags":["admin"],"summary":"Admin List Memories","description":"List memories across all users. Newest first. Soft-deleted rows\nincluded by default so admins can audit history.","operationId":"admin_list_memories_api_admin_memories_get","parameters":[{"name":"user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by user_id (case-insensitive)","title":"User"},"description":"Filter by user_id (case-insensitive)"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category","title":"Category"},"description":"Filter by category"},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Include soft-deleted rows","default":true,"title":"Include Inactive"},"description":"Include soft-deleted rows"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin List Memories Api Admin Memories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/memories/summary":{"get":{"tags":["admin"],"summary":"Admin Memories Summary","description":"Per-user memory counts (total + active). Useful for the admin panel\noverview tab.","operationId":"admin_memories_summary_api_admin_memories_summary_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Memories Summary Api Admin Memories Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/memories/{memory_id}":{"delete":{"tags":["admin"],"summary":"Admin Delete Memory","description":"Soft-delete any memory by id, regardless of owner. Idempotent —\nreturns 404 only if the id is unknown.","operationId":"admin_delete_memory_api_admin_memories__memory_id__delete","parameters":[{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Delete Memory Api Admin Memories  Memory Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/jobs":{"get":{"tags":["admin"],"summary":"List Job Runs","operationId":"list_job_runs_api_admin_jobs_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"job_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Job Runs Api Admin Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/jobs/dead-letter":{"get":{"tags":["admin"],"summary":"List Dead Letter Runs","operationId":"list_dead_letter_runs_api_admin_jobs_dead_letter_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Dead Letter Runs Api Admin Jobs Dead Letter Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/jobs/{run_id}":{"get":{"tags":["admin"],"summary":"Get Job Run","operationId":"get_job_run_api_admin_jobs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Run Api Admin Jobs  Run Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Discard Job Run","operationId":"discard_job_run_api_admin_jobs__run_id__delete","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Discard Job Run Api Admin Jobs  Run Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/jobs/{run_id}/replay":{"post":{"tags":["admin"],"summary":"Replay Job Run","operationId":"replay_job_run_api_admin_jobs__run_id__replay_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Replay Job Run Api Admin Jobs  Run Id  Replay Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/superadmins":{"get":{"tags":["admin"],"summary":"Get Superadmins","description":"List current superadmins plus the default-tenant accounts eligible for promotion.","operationId":"get_superadmins_api_admin_superadmins_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Superadmins Api Admin Superadmins Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Create Superadmin","description":"Create a new account in the default tenant with the superadmin flag set.","operationId":"create_superadmin_api_admin_superadmins_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Superadmin Api Admin Superadmins Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/superadmins/{username}/grant":{"post":{"tags":["admin"],"summary":"Grant Superadmin","description":"Grant the superadmin flag to an existing default-tenant account.","operationId":"grant_superadmin_api_admin_superadmins__username__grant_post","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Grant Superadmin Api Admin Superadmins  Username  Grant Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/superadmins/{username}/revoke":{"post":{"tags":["admin"],"summary":"Revoke Superadmin","description":"Revoke the superadmin flag. Blocks self-revocation; the store guards the\nbuilt-in ``admin`` and the last remaining superadmin against lockout.","operationId":"revoke_superadmin_api_admin_superadmins__username__revoke_post","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Superadmin Api Admin Superadmins  Username  Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/fallback/health":{"get":{"tags":["admin"],"summary":"Get Fallback Health","operationId":"get_fallback_health_api_admin_fallback_health_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Fallback Health Api Admin Fallback Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/fallback/events":{"get":{"tags":["admin"],"summary":"Get Fallback Events","operationId":"get_fallback_events_api_admin_fallback_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Fallback Events Api Admin Fallback Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/fallback/policy":{"get":{"tags":["admin"],"summary":"Get Fallback Policy","operationId":"get_fallback_policy_api_admin_fallback_policy_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Fallback Policy Api Admin Fallback Policy Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin"],"summary":"Update Fallback Policy","operationId":"update_fallback_policy_api_admin_fallback_policy_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FallbackPolicyUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Fallback Policy Api Admin Fallback Policy Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/fallback/circuit/reset":{"post":{"tags":["admin"],"summary":"Reset Fallback Circuits","operationId":"reset_fallback_circuits_api_admin_fallback_circuit_reset_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Fallback Circuits Api Admin Fallback Circuit Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/workflows/instances":{"get":{"tags":["admin"],"summary":"Admin List Instances","description":"Every instance in the workspace (all owners), newest first.","operationId":"admin_list_instances_api_admin_workflows_instances_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin List Instances Api Admin Workflows Instances Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/workflows/stats":{"get":{"tags":["admin"],"summary":"Admin Workflow Stats","operationId":"admin_workflow_stats_api_admin_workflows_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Workflow Stats Api Admin Workflows Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/workflows/{instance_id}/cancel":{"post":{"tags":["admin"],"summary":"Admin Cancel Instance","description":"Cancel any instance in the workspace (no ownership restriction).","operationId":"admin_cancel_instance_api_admin_workflows__instance_id__cancel_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","title":"Instance Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Cancel Instance Api Admin Workflows  Instance Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/workflows/recover":{"post":{"tags":["admin"],"summary":"Admin Run Recovery","description":"Run both sweeper legs now (due timers + stalled-running recovery)\ninstead of waiting for the next scheduled tick.","operationId":"admin_run_recovery_api_admin_workflows_recover_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Run Recovery Api Admin Workflows Recover Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/approvals":{"get":{"tags":["admin"],"summary":"List Approval Decisions","description":"Recent gated-call ledger rows, newest first (tenant-scoped).","operationId":"list_approval_decisions_api_admin_approvals_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"tool","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tool"}},{"name":"user","in":"query","required":false,"schema":{"type":"string","default":"","title":"User"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Approval Decisions Api Admin Approvals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/approvals/{row_id}/replay":{"post":{"tags":["admin"],"summary":"Replay Approval Decision","description":"Re-evaluate a recorded call under CURRENT policy — a pure dry-run.\n\nNothing is persisted and nothing executes; the response pairs the original\nrecorded decision with what today's policy would decide, plus fidelity\nflags for the two things a replay can't always reconstruct (full args,\nthe tool's registration/tags).","operationId":"replay_approval_decision_api_admin_approvals__row_id__replay_post","parameters":[{"name":"row_id","in":"path","required":true,"schema":{"type":"string","title":"Row Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Replay Approval Decision Api Admin Approvals  Row Id  Replay Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/config":{"get":{"tags":["metadata"],"summary":"Get Public Config","operationId":"get_public_config_api_meta_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Public Config Api Meta Config Get"}}}}}}},"/api/meta/companies":{"get":{"tags":["metadata"],"summary":"Get Companies","operationId":"get_companies_api_meta_companies_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Companies Api Meta Companies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/stores":{"get":{"tags":["metadata"],"summary":"Get Stores","description":"Return store→location mapping for the given company.","operationId":"get_stores_api_meta_stores_get","parameters":[{"name":"company","in":"query","required":true,"schema":{"type":"string","title":"Company"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Stores Api Meta Stores Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/models":{"get":{"tags":["metadata"],"summary":"Get Models","operationId":"get_models_api_meta_models_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Models Api Meta Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/agents":{"get":{"tags":["metadata"],"summary":"Get Agents","operationId":"get_agents_api_meta_agents_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Agents Api Meta Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health/db":{"get":{"tags":["metadata"],"summary":"Db Health","operationId":"db_health_api_health_db_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Db Health Api Health Db Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/documents":{"post":{"tags":["knowledge-base"],"summary":"Upload Document","description":"Upload and index a document into the Knowledge Base.","operationId":"upload_document_api_kb_documents_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_document_api_kb_documents_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Document Api Kb Documents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["knowledge-base"],"summary":"List Documents","description":"List all indexed documents.","operationId":"list_documents_api_kb_documents_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Documents Api Kb Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/documents/{doc_id}":{"get":{"tags":["knowledge-base"],"summary":"Get Document","description":"Return parsed text and metadata for the document viewer.","operationId":"get_document_api_kb_documents__doc_id__get","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Document Api Kb Documents  Doc Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["knowledge-base"],"summary":"Delete Document","description":"Delete a document and all its chunks from the Knowledge Base.","operationId":"delete_document_api_kb_documents__doc_id__delete","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Document Api Kb Documents  Doc Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/documents/{doc_id}/original":{"get":{"tags":["knowledge-base"],"summary":"Get Document Original","description":"Stream the original uploaded file for preview/download.","operationId":"get_document_original_api_kb_documents__doc_id__original_get","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/documents/{doc_id}/reparse":{"post":{"tags":["knowledge-base"],"summary":"Reparse Document","description":"Re-extract text from stored original and re-index chunks.","operationId":"reparse_document_api_kb_documents__doc_id__reparse_post","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reparse Document Api Kb Documents  Doc Id  Reparse Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/status":{"get":{"tags":["knowledge-base"],"summary":"Kb Status","description":"Return KB health info (incl. embedding-alignment / needs-reindex state).","operationId":"kb_status_api_kb_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Kb Status Api Kb Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/reindex-embeddings":{"post":{"tags":["knowledge-base"],"summary":"Reindex Embeddings","description":"Re-embed every KB document under the ACTIVE embedding configuration.\n\nThe recovery action after changing ``kb_embedding_provider`` /\n``kb_embedding_model`` (queries and uploads are blocked with a clear\n\"KB needs re-indexing\" error until this runs). Synchronous — sized for\ntypical per-tenant KBs; each document is re-embedded from its stored\nparsed text (or reconstructed from existing chunks).","operationId":"reindex_embeddings_api_kb_reindex_embeddings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reindex Embeddings Api Kb Reindex Embeddings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/":{"get":{"tags":["tools"],"summary":"List Tools","description":"Return all registered tools with their descriptions.","operationId":"list_tools_api_tools__get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Tools Api Tools  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/run":{"post":{"tags":["tools"],"summary":"Run Tool Endpoint","description":"Execute a tool by name (admin/debug use).","operationId":"run_tool_endpoint_api_tools_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunToolRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Tool Endpoint Api Tools Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports":{"get":{"tags":["reports"],"summary":"Reports List","operationId":"reports_list_api_reports_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reports List Api Reports Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["reports"],"summary":"Reports Create","operationId":"reports_create_api_reports_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reports Create Api Reports Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{report_id}":{"patch":{"tags":["reports"],"summary":"Reports Update","operationId":"reports_update_api_reports__report_id__patch","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reports Update Api Reports  Report Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reports"],"summary":"Reports Delete","operationId":"reports_delete_api_reports__report_id__delete","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reports Delete Api Reports  Report Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{report_id}/run":{"post":{"tags":["reports"],"summary":"Reports Run Now","operationId":"reports_run_now_api_reports__report_id__run_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reports Run Now Api Reports  Report Id  Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/dry-run":{"post":{"tags":["reports"],"summary":"Reports Dry Run","description":"Run diagnostics — preview a report's query + delivery without sending.\n\nWorks on the in-form draft (saved or unsaved), so an author can validate a\nreport before scheduling it. Runs synchronously under the caller's tenant\ncontext. A query failure is returned as ``{ok: false, error}`` rather than a\n500 — the failure reason is the point of a dry run.","operationId":"reports_dry_run_api_reports_dry_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDryRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reports Dry Run Api Reports Dry Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{report_id}/history":{"get":{"tags":["reports"],"summary":"Reports History","operationId":"reports_history_api_reports__report_id__history_get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reports History Api Reports  Report Id  History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook/status":{"get":{"tags":["integrations"],"summary":"Outlook Status","description":"Public status — does NOT require the 'outlook' permission so the UI can\ndecide whether to show the Connect button vs an 'ask admin' message.","operationId":"outlook_status_api_integrations_outlook_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Outlook Status Api Integrations Outlook Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook/connect":{"post":{"tags":["integrations"],"summary":"Outlook Connect","description":"Build a consent URL for the user to open in a popup/new tab.","operationId":"outlook_connect_api_integrations_outlook_connect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Outlook Connect Api Integrations Outlook Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook/":{"delete":{"tags":["integrations"],"summary":"Outlook Disconnect","operationId":"outlook_disconnect_api_integrations_outlook__delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Outlook Disconnect Api Integrations Outlook  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook":{"delete":{"tags":["integrations"],"summary":"Outlook Disconnect","operationId":"outlook_disconnect_api_integrations_outlook_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Outlook Disconnect Api Integrations Outlook Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook/messages":{"get":{"tags":["integrations"],"summary":"List Messages","operationId":"list_messages_api_integrations_outlook_messages_get","parameters":[{"name":"folder","in":"query","required":false,"schema":{"type":"string","default":"inbox","title":"Folder"}},{"name":"top","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Top"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"filter_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Messages Api Integrations Outlook Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook/messages/{message_id}":{"get":{"tags":["integrations"],"summary":"Get Message","operationId":"get_message_api_integrations_outlook_messages__message_id__get","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Message Api Integrations Outlook Messages  Message Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook/summarize":{"post":{"tags":["integrations"],"summary":"Summarize Email","description":"Fetch an email, then ask the user's Personal Assistant to summarize + draft a reply.","operationId":"summarize_email_api_integrations_outlook_summarize_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutlookSummarizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Summarize Email Api Integrations Outlook Summarize Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook/draft-reply":{"post":{"tags":["integrations"],"summary":"Save Draft Reply","operationId":"save_draft_reply_api_integrations_outlook_draft_reply_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutlookDraftReplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Save Draft Reply Api Integrations Outlook Draft Reply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/outlook/send-reply":{"post":{"tags":["integrations"],"summary":"Send Reply","operationId":"send_reply_api_integrations_outlook_send_reply_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutlookSendReplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Send Reply Api Integrations Outlook Send Reply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/companies":{"get":{"tags":["inventory"],"summary":"Api List Companies","operationId":"api_list_companies_api_inventory_companies_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api List Companies Api Inventory Companies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/locations":{"get":{"tags":["inventory"],"summary":"Api List Locations","description":"Locations for the picker. Each row is ``{code, label, store_no, store_name, region}``.\n\nSourced from the per-company ``LSC Store`` master so dormant stores are still\nlisted; when LS Central isn't installed for a company, falls back to distinct\nlocation codes seen in the last 365 days of sales.","operationId":"api_list_locations_api_inventory_locations_get","parameters":[{"name":"company","in":"query","required":true,"schema":{"type":"string","title":"Company"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api List Locations Api Inventory Locations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/forecast":{"get":{"tags":["inventory"],"summary":"Api Get Forecast","operationId":"api_get_forecast_api_inventory_forecast_get","parameters":[{"name":"company","in":"query","required":true,"schema":{"type":"string","title":"Company"}},{"name":"item_no","in":"query","required":true,"schema":{"type":"string","title":"Item No"}},{"name":"location_code","in":"query","required":true,"schema":{"type":"string","title":"Location Code"}},{"name":"horizon","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Horizon"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Get Forecast Api Inventory Forecast Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/insights":{"get":{"tags":["inventory"],"summary":"Api Get Insights","operationId":"api_get_insights_api_inventory_insights_get","parameters":[{"name":"company","in":"query","required":true,"schema":{"type":"string","title":"Company"}},{"name":"location_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Code"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(low|medium|high)$"},{"type":"null"}],"title":"Severity"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Get Insights Api Inventory Insights Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/dashboard":{"get":{"tags":["inventory"],"summary":"Api Get Dashboard","operationId":"api_get_dashboard_api_inventory_dashboard_get","parameters":[{"name":"company","in":"query","required":true,"schema":{"type":"string","title":"Company"}},{"name":"location_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Code"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Get Dashboard Api Inventory Dashboard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/alerts":{"get":{"tags":["inventory"],"summary":"Api List Alerts","operationId":"api_list_alerts_api_inventory_alerts_get","parameters":[{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","pattern":"^(open|acknowledged|resolved|all)$","default":"open","title":"State"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api List Alerts Api Inventory Alerts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/alerts/{event_id}/ack":{"post":{"tags":["inventory"],"summary":"Api Ack Alert","operationId":"api_ack_alert_api_inventory_alerts__event_id__ack_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Ack Alert Api Inventory Alerts  Event Id  Ack Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/alert-rules":{"get":{"tags":["inventory"],"summary":"Api List Rules","operationId":"api_list_rules_api_inventory_alert_rules_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api List Rules Api Inventory Alert Rules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["inventory"],"summary":"Api Create Rule","operationId":"api_create_rule_api_inventory_alert_rules_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Create Rule Api Inventory Alert Rules Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/alert-rules/{rule_id}":{"patch":{"tags":["inventory"],"summary":"Api Update Rule","operationId":"api_update_rule_api_inventory_alert_rules__rule_id__patch","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRulePatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Update Rule Api Inventory Alert Rules  Rule Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["inventory"],"summary":"Api Delete Rule","operationId":"api_delete_rule_api_inventory_alert_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Delete Rule Api Inventory Alert Rules  Rule Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/runs":{"get":{"tags":["inventory"],"summary":"Api Runs","operationId":"api_runs_api_inventory_runs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Runs Api Inventory Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inventory/runs/trigger":{"post":{"tags":["inventory"],"summary":"Api Trigger Run","operationId":"api_trigger_run_api_inventory_runs_trigger_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Trigger Run Api Inventory Runs Trigger Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/userdash/overview":{"get":{"tags":["userdash"],"summary":"Overview","operationId":"overview_api_userdash_overview_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":14,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Overview Api Userdash Overview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/userdash/sessions":{"get":{"tags":["userdash"],"summary":"My Sessions","operationId":"my_sessions_api_userdash_sessions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Sessions Api Userdash Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/userdash/reports":{"get":{"tags":["userdash"],"summary":"My Reports","operationId":"my_reports_api_userdash_reports_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Reports Api Userdash Reports Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/context":{"get":{"tags":["dashboard"],"summary":"Dashboard Context","description":"Metric catalog, companies, and departments available to this user — used\nto render the department tabs and the widget builder picker.","operationId":"dashboard_context_api_dashboard_context_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dashboard Context Api Dashboard Context Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/widgets":{"get":{"tags":["dashboard"],"summary":"List My Widgets","operationId":"list_my_widgets_api_dashboard_widgets_get","parameters":[{"name":"department","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List My Widgets Api Dashboard Widgets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["dashboard"],"summary":"Create My Widget","operationId":"create_my_widget_api_dashboard_widgets_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create My Widget Api Dashboard Widgets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/widgets/{widget_id}":{"patch":{"tags":["dashboard"],"summary":"Update My Widget","operationId":"update_my_widget_api_dashboard_widgets__widget_id__patch","parameters":[{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update My Widget Api Dashboard Widgets  Widget Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dashboard"],"summary":"Delete My Widget","operationId":"delete_my_widget_api_dashboard_widgets__widget_id__delete","parameters":[{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete My Widget Api Dashboard Widgets  Widget Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/widgets/reorder":{"post":{"tags":["dashboard"],"summary":"Reorder My Widgets","operationId":"reorder_my_widgets_api_dashboard_widgets_reorder_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetReorderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reorder My Widgets Api Dashboard Widgets Reorder Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/widgets/{widget_id}/data":{"get":{"tags":["dashboard"],"summary":"Widget Data","operationId":"widget_data_api_dashboard_widgets__widget_id__data_get","parameters":[{"name":"widget_id","in":"path","required":true,"schema":{"type":"string","title":"Widget Id"}},{"name":"window","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":90,"minimum":1},{"type":"null"}],"title":"Window"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Widget Data Api Dashboard Widgets  Widget Id  Data Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/widgets/preview":{"post":{"tags":["dashboard"],"summary":"Preview Widget","description":"Resolve an unsaved spec — powers the builder's live preview.","operationId":"preview_widget_api_dashboard_widgets_preview_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Widget Api Dashboard Widgets Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/widgets/suggest":{"post":{"tags":["dashboard"],"summary":"Suggest My Widget","description":"AI-assisted: turn a natural-language description into a draft widget\nspec, then resolve a preview for it. Never errors the form — falls back to\na heuristic metric when no LLM is configured.","operationId":"suggest_my_widget_api_dashboard_widgets_suggest_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetSuggestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Suggest My Widget Api Dashboard Widgets Suggest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards":{"get":{"tags":["dashboards"],"summary":"List Dashboards","operationId":"list_dashboards_api_dashboards_get","parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Dashboards Api Dashboards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["dashboards"],"summary":"Create Dashboard","operationId":"create_dashboard_api_dashboards_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Dashboard Api Dashboards Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}":{"get":{"tags":["dashboards"],"summary":"Get Dashboard","operationId":"get_dashboard_api_dashboards__dashboard_id__get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Dashboard Api Dashboards  Dashboard Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["dashboards"],"summary":"Patch Dashboard","description":"Rename, change scope, and/or set filter-config (owner-only).","operationId":"patch_dashboard_api_dashboards__dashboard_id__patch","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Dashboard Api Dashboards  Dashboard Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dashboards"],"summary":"Archive Dashboard","operationId":"archive_dashboard_api_dashboards__dashboard_id__delete","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Archive Dashboard Api Dashboards  Dashboard Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}/duplicate":{"post":{"tags":["dashboards"],"summary":"Duplicate Dashboard","operationId":"duplicate_dashboard_api_dashboards__dashboard_id__duplicate_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardDuplicateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Duplicate Dashboard Api Dashboards  Dashboard Id  Duplicate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}/versions":{"get":{"tags":["dashboards"],"summary":"List Versions","operationId":"list_versions_api_dashboards__dashboard_id__versions_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Versions Api Dashboards  Dashboard Id  Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["dashboards"],"summary":"Add Version","operationId":"add_version_api_dashboards__dashboard_id__versions_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardVersionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Version Api Dashboards  Dashboard Id  Versions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}/rollback":{"post":{"tags":["dashboards"],"summary":"Rollback","operationId":"rollback_api_dashboards__dashboard_id__rollback_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardRollbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rollback Api Dashboards  Dashboard Id  Rollback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}/sources/{source}/resolve":{"post":{"tags":["dashboards"],"summary":"Resolve Source","description":"Resolve one source. Returns the cache contract (pending/ready/error). A\nfresh cached result returns immediately; otherwise a background job is\ndispatched and ``pending`` is returned (poll to observe ready/error).","operationId":"resolve_source_api_dashboards__dashboard_id__sources__source__resolve_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardResolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve Source Api Dashboards  Dashboard Id  Sources  Source  Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}/sources/{source}/status":{"get":{"tags":["dashboards"],"summary":"Source Status","description":"Pure-read poll target — returns the current cache contract for a cell\nWITHOUT re-dispatching. The client resolves once (POST), then polls this GET\nwhile pending; unlike re-POSTing ``resolve`` it never re-upserts the row,\nre-registers a live run, or spawns another job (review finding F3). Returns\n``status: \"unknown\"`` when no row exists yet (client should POST resolve).\nVisibility-gated like ``export``.","operationId":"source_status_api_dashboards__dashboard_id__sources__source__status_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"h","in":"query","required":true,"schema":{"type":"string","description":"params_hash from a prior resolve contract","title":"H"},"description":"params_hash from a prior resolve contract"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Source Status Api Dashboards  Dashboard Id  Sources  Source  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}/sources/{source}/export":{"get":{"tags":["dashboards"],"summary":"Export Source","description":"Stream the full assembled JSON for a ready cell (visibility-gated).","operationId":"export_source_api_dashboards__dashboard_id__sources__source__export_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"h","in":"query","required":true,"schema":{"type":"string","description":"params_hash of the resolved cell","title":"H"},"description":"params_hash of the resolved cell"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}/sources/{source}/stream":{"get":{"tags":["dashboards"],"summary":"Stream Source","description":"SSE stream of an LLM-assembly run's progress, reusing the chat live-run\nmachinery. The client opens this after a ``resolve`` returns a pending contract\ncarrying ``llm_run_id``. If the run isn't found (deterministic source, already\nswept, or finished long ago) a single ``idle`` event is emitted and the client\nfalls back to polling ``resolve``. Scoped to the caller: the live run is keyed\nby ``(tenant, username, llm_run_id)``, so a user only ever streams their own.","operationId":"stream_source_api_dashboards__dashboard_id__sources__source__stream_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"run","in":"query","required":true,"schema":{"type":"string","description":"llm_run_id from a pending resolve contract","title":"Run"},"description":"llm_run_id from a pending resolve contract"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboards/{dashboard_id}/shares":{"get":{"tags":["dashboards"],"summary":"List Shares","operationId":"list_shares_api_dashboards__dashboard_id__shares_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Shares Api Dashboards  Dashboard Id  Shares Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["dashboards"],"summary":"Add Share","operationId":"add_share_api_dashboards__dashboard_id__shares_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardShareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Share Api Dashboards  Dashboard Id  Shares Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dashboards"],"summary":"Remove Share","operationId":"remove_share_api_dashboards__dashboard_id__shares_delete","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","title":"Dashboard Id"}},{"name":"audience_kind","in":"query","required":true,"schema":{"type":"string","title":"Audience Kind"}},{"name":"audience_id","in":"query","required":true,"schema":{"type":"string","title":"Audience Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Share Api Dashboards  Dashboard Id  Shares Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-analytics":{"get":{"tags":["saved-analytics"],"summary":"List Analytics","operationId":"list_analytics_api_saved_analytics_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Optional title/description filter","default":"","title":"Q"},"description":"Optional title/description filter"},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Analytics Api Saved Analytics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-analytics/{analytic_id}":{"get":{"tags":["saved-analytics"],"summary":"Get Analytic","operationId":"get_analytic_api_saved_analytics__analytic_id__get","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Analytic Api Saved Analytics  Analytic Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["saved-analytics"],"summary":"Patch Analytic","description":"Rename / re-describe / change scope (owner-only).","operationId":"patch_analytic_api_saved_analytics__analytic_id__patch","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedAnalyticPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Analytic Api Saved Analytics  Analytic Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["saved-analytics"],"summary":"Archive Analytic","description":"Archive (soft-delete, owner-only). Guarded: if any dashboard's active\nversion still references the analytic, respond **409** so the caller can\nconfirm deliberately (``force=true``) — archiving breaks those ref-sources.","operationId":"archive_analytic_api_saved_analytics__analytic_id__delete","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Archive even if dashboards reference it","default":false,"title":"Force"},"description":"Archive even if dashboards reference it"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Archive Analytic Api Saved Analytics  Analytic Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-analytics/{analytic_id}/references":{"get":{"tags":["saved-analytics"],"summary":"Analytic References","description":"Dashboards whose active version binds a ref-source to this analytic.\n``count`` is the honest total (the blast radius of archiving); ``dashboards``\nlists only the ones the caller can see (no invisible-dashboard leak).","operationId":"analytic_references_api_saved_analytics__analytic_id__references_get","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analytic References Api Saved Analytics  Analytic Id  References Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-analytics/{analytic_id}/resolve":{"post":{"tags":["saved-analytics"],"summary":"Resolve Analytic","description":"Resolve the analytic under the caller's own identity/scope. Returns the\ncache contract (pending/ready/error); a fresh cached cell returns immediately,\notherwise a background job is dispatched (poll ``status`` to observe).","operationId":"resolve_analytic_api_saved_analytics__analytic_id__resolve_post","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedAnalyticResolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve Analytic Api Saved Analytics  Analytic Id  Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-analytics/{analytic_id}/refresh":{"post":{"tags":["saved-analytics"],"summary":"Refresh Analytic","description":"Force a fresh resolve, bypassing the freshness window (**owner-only** —\nan explicit REST action gets an honest 403, unlike the agent tool's silent\nno-op for non-owners).","operationId":"refresh_analytic_api_saved_analytics__analytic_id__refresh_post","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Analytic Api Saved Analytics  Analytic Id  Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-analytics/{analytic_id}/status":{"get":{"tags":["saved-analytics"],"summary":"Analytic Status","description":"Pure-read poll target — the current cache contract for a cell WITHOUT\nre-dispatching (mirror of the dashboards status endpoint). ``status:\n\"unknown\"`` when no row exists yet (client should POST resolve).","operationId":"analytic_status_api_saved_analytics__analytic_id__status_get","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"h","in":"query","required":true,"schema":{"type":"string","description":"params_hash from a prior resolve contract","title":"H"},"description":"params_hash from a prior resolve contract"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analytic Status Api Saved Analytics  Analytic Id  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-analytics/{analytic_id}/export":{"get":{"tags":["saved-analytics"],"summary":"Export Analytic","description":"Download the analytic's resolved result (visibility-gated). Default is the\ncanonical default-params resolution; pass ``h`` for a param-filtered cell.","operationId":"export_analytic_api_saved_analytics__analytic_id__export_get","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"csv | xlsx","default":"csv","title":"Format"},"description":"csv | xlsx"},{"name":"h","in":"query","required":false,"schema":{"type":"string","description":"Optional params_hash of a specific resolved cell","default":"","title":"H"},"description":"Optional params_hash of a specific resolved cell"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-analytics/{analytic_id}/shares":{"get":{"tags":["saved-analytics"],"summary":"List Shares","operationId":"list_shares_api_saved_analytics__analytic_id__shares_get","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Shares Api Saved Analytics  Analytic Id  Shares Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["saved-analytics"],"summary":"Add Share","operationId":"add_share_api_saved_analytics__analytic_id__shares_post","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedAnalyticShareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Share Api Saved Analytics  Analytic Id  Shares Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["saved-analytics"],"summary":"Remove Share","operationId":"remove_share_api_saved_analytics__analytic_id__shares_delete","parameters":[{"name":"analytic_id","in":"path","required":true,"schema":{"type":"string","title":"Analytic Id"}},{"name":"audience_kind","in":"query","required":true,"schema":{"type":"string","title":"Audience Kind"}},{"name":"audience_id","in":"query","required":true,"schema":{"type":"string","title":"Audience Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Share Api Saved Analytics  Analytic Id  Shares Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/artifacts/{artifact_id}":{"get":{"tags":["artifacts"],"summary":"Get Artifact Meta","operationId":"get_artifact_meta_api_artifacts__artifact_id__get","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Artifact Meta Api Artifacts  Artifact Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/artifacts/{artifact_id}/download":{"get":{"tags":["artifacts"],"summary":"Download Artifact","operationId":"download_artifact_api_artifacts__artifact_id__download_get","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share/previews":{"post":{"tags":["share"],"summary":"Create Shared Preview","operationId":"create_shared_preview_api_share_previews_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSharedPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Shared Preview Api Share Previews Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share/previews/{token}":{"get":{"tags":["share"],"summary":"Get Shared Preview","description":"Public endpoint — no auth required.","operationId":"get_shared_preview_api_share_previews__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Shared Preview Api Share Previews  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/healthz":{"get":{"tags":["health"],"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/version":{"get":{"tags":["health"],"summary":"Version","description":"Build/version stamp — reports which image is live.\n\n``APP_GIT_SHA`` / ``APP_BUILD_TIME`` are baked into the image at build time\nfrom CI build-args (see Dockerfile); they read ``dev`` / ``unknown`` for\nlocal or un-stamped builds. Hit ``/version`` (or the ``x`` short SHA) to see\nexactly which commit is running.","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Version Version Get"}}}}}}},"/readyz":{"get":{"tags":["health"],"summary":"Readyz","operationId":"readyz_readyz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/metrics":{"get":{"tags":["health"],"summary":"Metrics","description":"Prometheus metrics. Opt-in + token-gated to avoid leaking ops data.\n\nSet ``METRICS_TOKEN`` to enable; scrape with ``Authorization: Bearer <token>``\n(or ``?token=``). Disabled (503) when the env var is unset.","operationId":"metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/voice/transcribe":{"post":{"tags":["voice"],"summary":"Transcribe","operationId":"transcribe_api_voice_transcribe_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_transcribe_api_voice_transcribe_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Transcribe Api Voice Transcribe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voice/speak":{"post":{"tags":["voice"],"summary":"Speak","operationId":"speak_api_voice_speak_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/bindings/peek":{"get":{"tags":["channels"],"summary":"Peek Code","description":"Return safe metadata about a bind code without consuming it.\n\n404 if the code is unknown or expired. Requires the user to already be\nlogged into the web app — bind codes are not secrets, but we still don't\nsurface them anonymously.","operationId":"peek_code_api_channels_bindings_peek_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Peek Code Api Channels Bindings Peek Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/bindings/claim":{"post":{"tags":["channels"],"summary":"Claim Code","description":"Atomically consume a bind code and bind it to the logged-in user.","operationId":"claim_code_api_channels_bindings_claim_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindCodeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Claim Code Api Channels Bindings Claim Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/bindings/me":{"get":{"tags":["channels"],"summary":"List My Bindings","description":"Every channel binding for the logged-in user — used by Profile UI.","operationId":"list_my_bindings_api_channels_bindings_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List My Bindings Api Channels Bindings Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/bindings/me/{channel}/{channel_user_id}":{"delete":{"tags":["channels"],"summary":"Delete My Binding","description":"Remove one of the logged-in user's bindings.\n\nUsers can only unbind their own — admin endpoints below handle cross-user\ncleanup.","operationId":"delete_my_binding_api_channels_bindings_me__channel___channel_user_id__delete","parameters":[{"name":"channel","in":"path","required":true,"schema":{"type":"string","title":"Channel"}},{"name":"channel_user_id","in":"path","required":true,"schema":{"type":"string","title":"Channel User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete My Binding Api Channels Bindings Me  Channel   Channel User Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/admin/bindings":{"get":{"tags":["channels"],"summary":"Admin List Bindings","description":"Every channel binding across every user — admin view.","operationId":"admin_list_bindings_api_channels_admin_bindings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin List Bindings Api Channels Admin Bindings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/admin/route-stats":{"get":{"tags":["channels"],"summary":"Admin Route Stats","description":"Auto-routing telemetry (PA ↔ Connector): tier/mode counters + a ring\nbuffer of recent decisions. Message text is never recorded.","operationId":"admin_route_stats_api_channels_admin_route_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Route Stats Api Channels Admin Route Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["channels"],"summary":"Admin Reset Route Stats","description":"Zero the auto-routing telemetry counters.","operationId":"admin_reset_route_stats_api_channels_admin_route_stats_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Reset Route Stats Api Channels Admin Route Stats Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/admin/bindings/{channel}/{channel_user_id}":{"delete":{"tags":["channels"],"summary":"Admin Delete Binding","description":"Revoke any user's binding. The next inbound message on that channel\nwill be forced through the bind flow again.","operationId":"admin_delete_binding_api_channels_admin_bindings__channel___channel_user_id__delete","parameters":[{"name":"channel","in":"path","required":true,"schema":{"type":"string","title":"Channel"}},{"name":"channel_user_id","in":"path","required":true,"schema":{"type":"string","title":"Channel User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Delete Binding Api Channels Admin Bindings  Channel   Channel User Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/telegram/webhook":{"post":{"tags":["channels"],"summary":"Telegram Webhook","description":"Receive updates from Telegram.\n\nThe webhook **always** returns ``{\"ok\": True}`` quickly. Heavy work\n(LLM call, SQL execution) is dispatched to a background task so the\nrequest thread is freed within milliseconds — this is the standard chat\nbot pattern.\n\nWhy it matters: a BC turn can take 30–60 seconds (model + DB). If we\nheld the request thread for that long, every other HTTP request to this\nbackend would queue behind it, eventually tripping Cloudflare's 100s\nupstream timeout and returning 502 to the web UI. Telegram itself only\ncares that we ack within ~60s, so synchronous handling worked but\nstarved the rest of the app.\n\nReal failures still surface: HTTP 401 (missing/bad secret), HTTP 500\n(token unconfigured). Anything caught inside the background task is\nlogged and posted back to the user as an error message.","operationId":"telegram_webhook_api_channels_telegram_webhook_post","parameters":[{"name":"x-telegram-bot-api-secret-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Telegram-Bot-Api-Secret-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Telegram Webhook Api Channels Telegram Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/telegram/admin/set-webhook":{"post":{"tags":["channels"],"summary":"Admin Set Webhook","description":"Tell Telegram where to deliver updates.\n\nConvenience wrapper around the ``setWebhook`` API so admins don't have to\npaste the bot token into a curl command. The webhook URL must be HTTPS.","operationId":"admin_set_webhook_api_channels_telegram_admin_set_webhook_post","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Set Webhook Api Channels Telegram Admin Set Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/telegram/admin/webhook-info":{"get":{"tags":["channels"],"summary":"Admin Webhook Info","operationId":"admin_webhook_info_api_channels_telegram_admin_webhook_info_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Webhook Info Api Channels Telegram Admin Webhook Info Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/telegram/admin/configure":{"post":{"tags":["channels"],"summary":"Admin Configure","description":"Persist bot token and/or webhook secret to the encrypted secret store.\n\nEither field is optional — pass only what you want to update. To clear a\nvalue, pass an empty string.","operationId":"admin_configure_api_channels_telegram_admin_configure_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelegramConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Configure Api Channels Telegram Admin Configure Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/telegram/admin/status":{"get":{"tags":["channels"],"summary":"Admin Status","description":"Quick readiness probe for an admin dashboard widget.","operationId":"admin_status_api_channels_telegram_admin_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Status Api Channels Telegram Admin Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/teams/webhook":{"post":{"tags":["channels"],"summary":"Teams Webhook","description":"Receive a Bot Framework activity from Azure Bot Service / Teams.\n\nValidates the inbound JWT, acks within milliseconds, and dispatches the\nheavy work to a background task (same pattern as the Telegram adapter — a BC\nturn can take 30–60s and must not hold the request thread).","operationId":"teams_webhook_api_channels_teams_webhook_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Teams Webhook Api Channels Teams Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/teams/admin/configure":{"post":{"tags":["channels"],"summary":"Admin Configure","description":"Persist the Azure Bot credentials to the encrypted secret store.\n\nEach field is optional — pass only what you want to update. Pass an empty\nstring to clear a value.","operationId":"admin_configure_api_channels_teams_admin_configure_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Configure Api Channels Teams Admin Configure Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/teams/admin/status":{"get":{"tags":["channels"],"summary":"Admin Status","description":"Quick readiness probe for an admin dashboard widget.","operationId":"admin_status_api_channels_teams_admin_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Status Api Channels Teams Admin Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/teams/admin/manifest":{"get":{"tags":["channels"],"summary":"Admin Manifest","description":"Return the Teams app manifest with the configured bot app id injected.\n\nDownload this, drop it into the ``manifest/teams/`` package next to the\nicons, zip the three files, and upload to Teams as a custom app.","operationId":"admin_manifest_api_channels_teams_admin_manifest_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Manifest Api Channels Teams Admin Manifest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/whatsapp/webhook":{"post":{"tags":["channels"],"summary":"Whatsapp Webhook","description":"Receive an inbound WhatsApp message from Twilio.\n\nVerifies the Twilio signature, acks immediately with empty TwiML, and does\nthe LLM/SQL work in a background task that replies via the REST API.","operationId":"whatsapp_webhook_api_channels_whatsapp_webhook_post","parameters":[{"name":"x-twilio-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Twilio-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/whatsapp/meta/webhook":{"get":{"tags":["channels"],"summary":"Meta Webhook Verify","description":"Meta's one-time webhook subscription handshake.\n\nMeta calls ``GET <callback>?hub.mode=subscribe&hub.verify_token=...&\nhub.challenge=...`` when the webhook is registered; we echo the challenge\niff the verify token matches. A ``?tenant=<tenant_id>`` on the callback\nURL checks that workspace's stored token instead of the platform one.","operationId":"meta_webhook_verify_api_channels_whatsapp_meta_webhook_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["channels"],"summary":"Meta Webhook","description":"Receive inbound WhatsApp events from the Meta Cloud API.\n\nVerifies ``X-Hub-Signature-256``, acks immediately, and processes each\nmessage in a background task (same out-of-band reply pattern as the\nTwilio webhook). Delivery-status events are ignored. Meta retries\nnon-2xx deliveries, so the ack is unconditional once the signature\nchecks out; the per-message-id dedup absorbs redeliveries.","operationId":"meta_webhook_api_channels_whatsapp_meta_webhook_post","parameters":[{"name":"x-hub-signature-256","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Hub-Signature-256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/whatsapp/voice-reply/{token}":{"get":{"tags":["channels"],"summary":"Voice Reply","description":"Serve a parked voice reply to Twilio. Unauthenticated by design —\nthe 256-bit token is the credential, and entries expire after 15 minutes.","operationId":"voice_reply_api_channels_whatsapp_voice_reply__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/whatsapp/admin/configure":{"post":{"tags":["channels"],"summary":"Admin Configure","description":"Persist this workspace's WhatsApp provider choice and credentials to\nthe encrypted secret store.\n\nEach field is optional — pass only what you want to update; empty string\nclears a value.","operationId":"admin_configure_api_channels_whatsapp_admin_configure_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Configure Api Channels Whatsapp Admin Configure Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/whatsapp/admin/status":{"get":{"tags":["channels"],"summary":"Admin Status","description":"Quick readiness probe for an admin dashboard widget.","operationId":"admin_status_api_channels_whatsapp_admin_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Status Api Channels Whatsapp Admin Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/whatsapp/admin/templates":{"get":{"tags":["channels"],"summary":"Admin List Templates","description":"List the registered proactive-message templates.","operationId":"admin_list_templates_api_channels_whatsapp_admin_templates_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin List Templates Api Channels Whatsapp Admin Templates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["channels"],"summary":"Admin Upsert Template","description":"Create or update a proactive-message template (keyed by name).","operationId":"admin_upsert_template_api_channels_whatsapp_admin_templates_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppTemplateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Upsert Template Api Channels Whatsapp Admin Templates Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/whatsapp/admin/templates/{name}":{"delete":{"tags":["channels"],"summary":"Admin Delete Template","description":"Remove a proactive-message template.","operationId":"admin_delete_template_api_channels_whatsapp_admin_templates__name__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Delete Template Api Channels Whatsapp Admin Templates  Name  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/memories":{"get":{"tags":["memories"],"summary":"List User Memories","description":"List the caller's memories, newest first. Filter by ``category`` optionally.","operationId":"list_user_memories_api_memories_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List User Memories Api Memories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["memories"],"summary":"Add Memory","description":"Create a memory for the caller.","operationId":"add_memory_api_memories_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMemoryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Memory Api Memories Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/memories/{memory_id}":{"patch":{"tags":["memories"],"summary":"Edit Memory","description":"Partial update. Any field omitted is unchanged.","operationId":"edit_memory_api_memories__memory_id__patch","parameters":[{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemoryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Edit Memory Api Memories  Memory Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["memories"],"summary":"Remove Memory","description":"Soft delete (``is_active = False``). Idempotent — returns ok if already deleted.","operationId":"remove_memory_api_memories__memory_id__delete","parameters":[{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Memory Api Memories  Memory Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/memories/{memory_id}/purge":{"delete":{"tags":["memories"],"summary":"Purge One Memory","description":"HARD-delete one of the caller's memories (right-to-be-forgotten, single\nitem) — the row is destroyed, not soft-deactivated. Audited.","operationId":"purge_one_memory_api_memories__memory_id__purge_delete","parameters":[{"name":"memory_id","in":"path","required":true,"schema":{"type":"string","title":"Memory Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Purge One Memory Api Memories  Memory Id  Purge Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/memories/forget-all":{"post":{"tags":["memories"],"summary":"Forget All","description":"HARD-delete ALL of the caller's memories (self-service RTBF). Requires an\nexplicit confirmation phrase so it can't fire accidentally. Audited to\n``pii_redaction_events``.","operationId":"forget_all_api_memories_forget_all_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgetAllRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Forget All Api Memories Forget All Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/definitions":{"get":{"tags":["workflows"],"summary":"Definitions","description":"List the workflow definitions available to start.","operationId":"definitions_api_workflows_definitions_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Definitions Api Workflows Definitions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows":{"get":{"tags":["workflows"],"summary":"List My Instances","operationId":"list_my_instances_api_workflows_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List My Instances Api Workflows Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workflows"],"summary":"Start Instance","operationId":"start_instance_api_workflows_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Start Instance Api Workflows Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{instance_id}":{"get":{"tags":["workflows"],"summary":"Get Instance","operationId":"get_instance_api_workflows__instance_id__get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","title":"Instance Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Instance Api Workflows  Instance Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{instance_id}/reply":{"post":{"tags":["workflows"],"summary":"Reply","operationId":"reply_api_workflows__instance_id__reply_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","title":"Instance Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reply Api Workflows  Instance Id  Reply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{instance_id}/cancel":{"post":{"tags":["workflows"],"summary":"Cancel Instance","operationId":"cancel_instance_api_workflows__instance_id__cancel_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","title":"Instance Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Instance Api Workflows  Instance Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company-profile":{"get":{"tags":["company-profile"],"summary":"Get Merged Company Profile","description":"Merged tenant + company profile for dashboard / display.","operationId":"get_merged_company_profile_api_company_profile_get","parameters":[{"name":"bc_company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bc Company"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Merged Company Profile Api Company Profile Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/company-profile":{"get":{"tags":["company-profile-admin"],"summary":"Admin Get Company Profile","operationId":"admin_get_company_profile_api_admin_company_profile_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"tenant","title":"Scope"}},{"name":"bc_company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bc Company"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Get Company Profile Api Admin Company Profile Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["company-profile-admin"],"summary":"Admin Upsert Company Profile","operationId":"admin_upsert_company_profile_api_admin_company_profile_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfileUpsertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Upsert Company Profile Api Admin Company Profile Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/company-profile/suggest":{"post":{"tags":["company-profile-admin"],"summary":"Admin Suggest Company Profile","operationId":"admin_suggest_company_profile_api_admin_company_profile_suggest_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyProfileSuggestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Suggest Company Profile Api Admin Company Profile Suggest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/digest":{"get":{"tags":["digest"],"summary":"Digest Get","operationId":"digest_get_api_me_digest_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Digest Get Api Me Digest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["digest"],"summary":"Digest Put","operationId":"digest_put_api_me_digest_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DigestUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Digest Put Api Me Digest Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["digest"],"summary":"Digest Delete","operationId":"digest_delete_api_me_digest_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Digest Delete Api Me Digest Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/digest/test":{"post":{"tags":["digest"],"summary":"Digest Test","operationId":"digest_test_api_me_digest_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Digest Test Api Me Digest Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants":{"get":{"tags":["tenants"],"summary":"List All Tenants","operationId":"list_all_tenants_api_admin_tenants_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List All Tenants Api Admin Tenants Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenants"],"summary":"Create New Tenant","operationId":"create_new_tenant_api_admin_tenants_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create New Tenant Api Admin Tenants Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/{tenant_id}/suspend":{"post":{"tags":["tenants"],"summary":"Suspend Tenant","operationId":"suspend_tenant_api_admin_tenants__tenant_id__suspend_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Suspend Tenant Api Admin Tenants  Tenant Id  Suspend Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/{tenant_id}/resume":{"post":{"tags":["tenants"],"summary":"Resume Tenant","operationId":"resume_tenant_api_admin_tenants__tenant_id__resume_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resume Tenant Api Admin Tenants  Tenant Id  Resume Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/{tenant_id}/force-logout":{"post":{"tags":["tenants"],"summary":"Force Logout","operationId":"force_logout_api_admin_tenants__tenant_id__force_logout_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Force Logout Api Admin Tenants  Tenant Id  Force Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/{tenant_id}/users":{"get":{"tags":["tenants"],"summary":"List Tenant Users","description":"Read-only list of a tenant's application users.\n\nPowers the admin UI's per-tenant user count and the impersonation\nuser-picker. Further user management is done by impersonating into the\ntenant and using the normal Users tab, except bootstrapping the first user\nvia ``POST /{tenant_id}/users``. This endpoint exposes no secrets (no\npassword hashes, tokens, or quotas).","operationId":"list_tenant_users_api_admin_tenants__tenant_id__users_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Tenant Users Api Admin Tenants  Tenant Id  Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenants"],"summary":"Create Tenant User","description":"Bootstrap (or add) a user in a tenant without impersonating.\n\nNeeded when a new tenant has zero users and support cannot use\n``/{tenant_id}/impersonate`` yet.","operationId":"create_tenant_user_api_admin_tenants__tenant_id__users_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Tenant User Api Admin Tenants  Tenant Id  Users Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/{tenant_id}/subscription":{"get":{"tags":["tenants"],"summary":"Get Tenant Subscription","description":"The tenant's subscription row plus its resolved entitlements (9a).","operationId":"get_tenant_subscription_api_admin_tenants__tenant_id__subscription_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tenant Subscription Api Admin Tenants  Tenant Id  Subscription Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tenants"],"summary":"Patch Tenant Subscription","description":"Manually assign/update a tenant's plan (billing provider ``manual``).\n\nThe only subscription mutation path in 9a; Stripe-driven updates land in\n9b. Audit-logged as ``plan_changed``.","operationId":"patch_tenant_subscription_api_admin_tenants__tenant_id__subscription_patch","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantSubscriptionPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Tenant Subscription Api Admin Tenants  Tenant Id  Subscription Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/{tenant_id}/entitlements":{"get":{"tags":["tenants"],"summary":"Get Tenant Entitlements","description":"Raw overrides, base plan, and effective merged entitlements (9d).","operationId":"get_tenant_entitlements_api_admin_tenants__tenant_id__entitlements_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tenant Entitlements Api Admin Tenants  Tenant Id  Entitlements Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tenants"],"summary":"Patch Tenant Entitlements","description":"Apply enterprise entitlement overrides (superadmin, audit-logged).","operationId":"patch_tenant_entitlements_api_admin_tenants__tenant_id__entitlements_patch","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantEntitlementsPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Tenant Entitlements Api Admin Tenants  Tenant Id  Entitlements Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/impersonation/stop":{"post":{"tags":["tenants"],"summary":"Stop Impersonation","description":"Revoke an impersonation token early (audit-logged).\n\nDeclared before the ``/{tenant_id}/...`` routes don't shadow it — the path\nis literal and distinct, so order is not load-bearing, but kept grouped with\nimpersonation for clarity.","operationId":"stop_impersonation_api_admin_tenants_impersonation_stop_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StopImpersonationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Stop Impersonation Api Admin Tenants Impersonation Stop Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/{tenant_id}/impersonate":{"post":{"tags":["tenants"],"summary":"Impersonate User","description":"Mint a short-lived bearer token acting as ``username`` within a tenant.\n\nFor cross-tenant support. The grant is audit-logged (actor = the superadmin,\ntarget = the impersonated user) with a token reference so start/stop can be\ncorrelated without storing the raw token. The token behaves like a normal\nlogin token but expires in ``IMPERSONATION_TTL_SEC``.","operationId":"impersonate_user_api_admin_tenants__tenant_id__impersonate_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImpersonateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Impersonate User Api Admin Tenants  Tenant Id  Impersonate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tenants/{tenant_id}":{"delete":{"tags":["tenants"],"summary":"Remove Tenant","operationId":"remove_tenant_api_admin_tenants__tenant_id__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Tenant Api Admin Tenants  Tenant Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/me":{"get":{"tags":["billing"],"summary":"Billing Me","description":"Current workspace's plan, subscription status, and live usage meters.","operationId":"billing_me_api_billing_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Billing Me Api Billing Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/plans/public":{"get":{"tags":["billing"],"summary":"Billing Plans Public","description":"Unauthenticated plan catalog for the marketing/pricing page (9c).\n\nServed from the DB catalog whenever it is seeded — the pricing page must\nreflect superadmin catalog edits even while billing is disabled. The\nstatic code catalog remains only as a fallback for an install whose DB\nhasn't been bootstrapped (or is unreachable).","operationId":"billing_plans_public_api_billing_plans_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Billing Plans Public Api Billing Plans Public Get"}}}}}}},"/api/billing/plans":{"get":{"tags":["billing"],"summary":"Billing Plans","description":"Public plan catalog (newest version per plan) for comparison UIs.","operationId":"billing_plans_api_billing_plans_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Billing Plans Api Billing Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/checkout":{"post":{"tags":["billing"],"summary":"Billing Checkout","description":"Create a self-serve checkout session to upgrade the workspace.","operationId":"billing_checkout_api_billing_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Billing Checkout Api Billing Checkout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/usage":{"get":{"tags":["billing"],"summary":"Billing Usage","description":"Current billing-period usage breakdown (summary + per-user tokens).","operationId":"billing_usage_api_billing_usage_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Billing Usage Api Billing Usage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/usage/export":{"get":{"tags":["billing"],"summary":"Billing Usage Export","description":"Download current-period usage as CSV.","operationId":"billing_usage_export_api_billing_usage_export_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/portal":{"post":{"tags":["billing"],"summary":"Billing Portal","description":"Create a billing-management (portal) session for the workspace.","operationId":"billing_portal_api_billing_portal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Billing Portal Api Billing Portal Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/webhooks/stripe":{"post":{"tags":["billing"],"summary":"Stripe Webhook","description":"Stripe webhook endpoint (signature-verified, idempotent).","operationId":"stripe_webhook_api_billing_webhooks_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Webhook Api Billing Webhooks Stripe Post"}}}}}}},"/api/billing/webhooks/moyasar":{"post":{"tags":["billing"],"summary":"Moyasar Webhook","description":"Moyasar webhook endpoint (body secret_token-verified, idempotent).","operationId":"moyasar_webhook_api_billing_webhooks_moyasar_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Moyasar Webhook Api Billing Webhooks Moyasar Post"}}}}}}},"/api/billing/checkout/moyasar/config":{"get":{"tags":["billing"],"summary":"Moyasar Checkout Config","description":"Params for the client-side Moyasar.js save-card form (M1-step-2b).\n\nThe form page (``/frontend/moyasar-pay.html``) calls this with the user's\nbearer token, then renders Moyasar.js with ``save_card`` so the first payment\ncaptures a reusable token for the M2 renewal engine.","operationId":"moyasar_checkout_config_api_billing_checkout_moyasar_config_get","parameters":[{"name":"plan_id","in":"query","required":false,"schema":{"type":"string","default":"pro","title":"Plan Id"}},{"name":"billing_interval","in":"query","required":false,"schema":{"enum":["monthly","annual"],"type":"string","default":"monthly","title":"Billing Interval"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Moyasar Checkout Config Api Billing Checkout Moyasar Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/checkout/moyasar/callback":{"get":{"tags":["billing"],"summary":"Moyasar Checkout Callback","description":"Post-payment landing (browser redirect from Moyasar).\n\nVerifies the payment server-side and activates the subscription, then bounces\nto the admin UI. Unauthenticated: the browser carries no bearer here, so the\ntenant is taken from the verified payment's metadata (same trust model as the\nwebhook). Activation is idempotent, so it coexists with the webhook.","operationId":"moyasar_checkout_callback_api_billing_checkout_moyasar_callback_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/cancel":{"post":{"tags":["billing"],"summary":"Billing Cancel","description":"Cancel the workspace's subscription at period end (provider-aware).\n\nStripe leaves cancellation to its hosted portal (raises ProviderNotSupported);\nMoyasar cancels in-app — access continues until the period ends, then the\nrenewal engine lapses it to Free.","operationId":"billing_cancel_api_billing_cancel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Billing Cancel Api Billing Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/resume":{"post":{"tags":["billing"],"summary":"Billing Resume","description":"Undo a pending at-period-end cancellation.","operationId":"billing_resume_api_billing_resume_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Billing Resume Api Billing Resume Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/moyasar/update-card":{"post":{"tags":["billing"],"summary":"Moyasar Update Card","description":"Store a new Moyasar card token (created client-side via the update-card form).","operationId":"moyasar_update_card_api_billing_moyasar_update_card_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCardRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Moyasar Update Card Api Billing Moyasar Update Card Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/config":{"get":{"tags":["billing-admin"],"summary":"Admin Billing Config Get","description":"Platform billing defaults (trial window, policy toggles, etc.).","operationId":"admin_billing_config_get_api_admin_billing_config_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Billing Config Get Api Admin Billing Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["billing-admin"],"summary":"Admin Billing Config Patch","description":"Update platform billing defaults.","operationId":"admin_billing_config_patch_api_admin_billing_config_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformBillingConfigPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Billing Config Patch Api Admin Billing Config Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/plans":{"get":{"tags":["billing-admin"],"summary":"Admin Billing Plans","description":"Full plan catalog (newest version per plan) for superadmin editing.","operationId":"admin_billing_plans_api_admin_billing_plans_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Billing Plans Api Admin Billing Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/plans/{plan_id}":{"patch":{"tags":["billing-admin"],"summary":"Admin Billing Plan Patch","description":"Edit features/limits on the active catalog version.","operationId":"admin_billing_plan_patch_api_admin_billing_plans__plan_id__patch","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanCatalogPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Billing Plan Patch Api Admin Billing Plans  Plan Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/billing/reconcile":{"post":{"tags":["billing-admin"],"summary":"Admin Billing Reconcile","description":"Force a provider ↔ DB sync for all of the active provider's subscriptions.","operationId":"admin_billing_reconcile_api_admin_billing_reconcile_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Billing Reconcile Api Admin Billing Reconcile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform/security":{"get":{"tags":["platform-admin"],"summary":"Admin Platform Security Get","description":"Platform HTTP security defaults (CORS origins, CSRF, headers).","operationId":"admin_platform_security_get_api_admin_platform_security_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Platform Security Get Api Admin Platform Security Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["platform-admin"],"summary":"Admin Platform Security Patch","description":"Update platform HTTP security defaults.","operationId":"admin_platform_security_patch_api_admin_platform_security_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSecurityConfigPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Platform Security Patch Api Admin Platform Security Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Index","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/login":{"get":{"summary":"Login Page","operationId":"login_page_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/shortcuts":{"get":{"summary":"Shortcuts Page","operationId":"shortcuts_page_shortcuts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/chat":{"get":{"summary":"Chat Page","operationId":"chat_page_chat_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/pricing":{"get":{"summary":"Pricing Page","operationId":"pricing_page_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/plan":{"get":{"summary":"Plan Setup Page","operationId":"plan_setup_page_plan_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin":{"get":{"summary":"Admin Page","operationId":"admin_page_admin_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/inventory":{"get":{"summary":"Inventory Page","operationId":"inventory_page_inventory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard":{"get":{"summary":"Dashboard Page","operationId":"dashboard_page_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/widgets":{"get":{"summary":"Dashboard Widgets Page","operationId":"dashboard_widgets_page_dashboard_widgets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/views":{"get":{"summary":"Dashboard Views Page","operationId":"dashboard_views_page_dashboard_views_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/analytics":{"get":{"summary":"Dashboard Analytics Page","operationId":"dashboard_analytics_page_dashboard_analytics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/workflows":{"get":{"summary":"Workflows Page","operationId":"workflows_page_workflows_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/tsx-host":{"get":{"summary":"Dashboard Tsx Host Page","description":"Sandboxed TSX runtime host (dashboard platform PR 7). Served with a strict,\nfully self-hosted CSP (see TSX_HOST_CSP) — React/esbuild are inlined and the\nesbuild wasm is fed from the parent via postMessage, so the sandbox makes no\nnetwork requests at all (connect-src 'none') and depends on no CDN. Loaded\nONLY inside an <iframe sandbox=\"allow-scripts\"> (no allow-same-origin → opaque\norigin), so dashboard code can never read bcai_token / cookies. See\ndashboard-tsx-host.html.","operationId":"dashboard_tsx_host_page_dashboard_tsx_host_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/share":{"get":{"summary":"Share Page","operationId":"share_page_share_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/preview":{"get":{"summary":"Preview Page","operationId":"preview_page_preview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AddUserRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"display_name":{"type":"string","title":"Display Name"},"role":{"type":"string","title":"Role","default":"user"}},"type":"object","required":["username","password","display_name"],"title":"AddUserRequest"},"AdminModelCreateRequest":{"properties":{"label":{"type":"string","title":"Label"},"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"source":{"type":"string","title":"Source","default":"custom"},"enabled":{"type":"boolean","title":"Enabled","default":true},"recommended":{"type":"boolean","title":"Recommended","default":false},"vision":{"type":"boolean","title":"Vision","default":false},"max_output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Tokens"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"}},"type":"object","required":["label","id","type"],"title":"AdminModelCreateRequest"},"AdminModelReorderRequest":{"properties":{"ordered_uids":{"items":{"type":"string"},"type":"array","title":"Ordered Uids"}},"type":"object","required":["ordered_uids"],"title":"AdminModelReorderRequest","description":"New display order for the managed-models list, by uid. Unknown uids are\nignored; models omitted from the list keep their relative order at the end."},"AdminModelUpdateRequest":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"recommended":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Recommended"},"vision":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Vision"},"max_output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Tokens"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"}},"type":"object","title":"AdminModelUpdateRequest"},"AgentCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":""},"system_prompt":{"type":"string","title":"System Prompt"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"data_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Data Domains"},"tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tools"},"kb_scope":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Kb Scope"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","system_prompt"],"title":"AgentCreateRequest"},"AgentPackInstallRequest":{"properties":{"keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keys"},"upgrade":{"type":"boolean","title":"Upgrade","default":false}},"type":"object","title":"AgentPackInstallRequest"},"AgentUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"data_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Data Domains"},"tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tools"},"kb_scope":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Kb Scope"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"AgentUpdateRequest"},"AlertRulePatch":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"location_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Code"},"item_filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Filter"},"alert_type":{"anyOf":[{"type":"string","pattern":"^(stockout|overstock)$"},{"type":"null"}],"title":"Alert Type"},"severity":{"anyOf":[{"type":"string","pattern":"^(low|medium|high)$"},{"type":"null"}],"title":"Severity"},"recipients":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recipients"},"channels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Channels"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"AlertRulePatch"},"AlertRuleRequest":{"properties":{"name":{"type":"string","title":"Name"},"company":{"type":"string","title":"Company"},"location_code":{"type":"string","title":"Location Code","default":""},"item_filter":{"type":"string","title":"Item Filter","default":""},"alert_type":{"type":"string","pattern":"^(stockout|overstock)$","title":"Alert Type"},"severity":{"type":"string","pattern":"^(low|medium|high)$","title":"Severity","default":"low"},"recipients":{"items":{"type":"string"},"type":"array","title":"Recipients"},"channels":{"items":{"type":"string"},"type":"array","title":"Channels"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","company","alert_type"],"title":"AlertRuleRequest"},"BindCodeRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"BindCodeRequest"},"Body_chat_ask_api_chat_ask_post":{"properties":{"question":{"type":"string","title":"Question"},"company":{"type":"string","title":"Company","default":""},"model_label":{"type":"string","title":"Model Label"},"session_type":{"type":"string","title":"Session Type","default":"bc"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"mentions":{"type":"string","title":"Mentions","default":""},"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"},"memory_enabled":{"type":"boolean","title":"Memory Enabled","default":true},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"skip_llm_cache":{"type":"boolean","title":"Skip Llm Cache","default":false}},"type":"object","required":["question","model_label"],"title":"Body_chat_ask_api_chat_ask_post"},"Body_chat_ask_stream_api_chat_ask_stream_post":{"properties":{"question":{"type":"string","title":"Question"},"company":{"type":"string","title":"Company","default":""},"model_label":{"type":"string","title":"Model Label"},"session_type":{"type":"string","title":"Session Type","default":"bc"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"mentions":{"type":"string","title":"Mentions","default":""},"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"},"memory_enabled":{"type":"boolean","title":"Memory Enabled","default":true},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"skip_llm_cache":{"type":"boolean","title":"Skip Llm Cache","default":false}},"type":"object","required":["question","model_label"],"title":"Body_chat_ask_stream_api_chat_ask_stream_post"},"Body_transcribe_api_voice_transcribe_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"lang":{"type":"string","title":"Lang","default":"auto"}},"type":"object","required":["file"],"title":"Body_transcribe_api_voice_transcribe_post"},"Body_upload_company_logo_api_admin_settings_logo_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_company_logo_api_admin_settings_logo_post"},"Body_upload_document_api_kb_documents_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"company":{"type":"string","title":"Company","default":"*"},"tags":{"type":"string","title":"Tags","default":""},"language":{"type":"string","title":"Language","default":""}},"type":"object","required":["file"],"title":"Body_upload_document_api_kb_documents_post"},"BookmarkRequest":{"properties":{"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"BookmarkRequest"},"BranchRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"}},"type":"object","required":["message_id"],"title":"BranchRequest"},"CheckoutRequest":{"properties":{"plan_id":{"type":"string","title":"Plan Id","default":"pro"},"billing_interval":{"type":"string","enum":["monthly","annual"],"title":"Billing Interval","default":"monthly"}},"type":"object","title":"CheckoutRequest"},"CloudConfigRequest":{"properties":{"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment","default":"Production"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","default":""},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","default":""},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url","default":"https://api.businesscentral.dynamics.com/v2.0"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","default":""},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret","default":""},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope","default":""}},"type":"object","title":"CloudConfigRequest"},"CompanyProfileSuggestRequest":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":""},"doc_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Doc Ids"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope","default":"tenant"},"bc_company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bc Company","default":""}},"type":"object","title":"CompanyProfileSuggestRequest"},"CompanyProfileUpsertRequest":{"properties":{"scope":{"type":"string","title":"Scope"},"fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Fields"},"bc_company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bc Company"}},"type":"object","required":["scope","fields"],"title":"CompanyProfileUpsertRequest"},"CreateConnectionRequest":{"properties":{"category":{"type":"string","title":"Category"},"integration_type":{"type":"string","title":"Integration Type"},"bc_deployment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bc Deployment","default":""},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","default":""},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":""}},"type":"object","required":["category","integration_type"],"title":"CreateConnectionRequest"},"CreateMemoryRequest":{"properties":{"category":{"type":"string","title":"Category"},"content":{"type":"string","title":"Content"}},"type":"object","required":["category","content"],"title":"CreateMemoryRequest","description":"Create a new user memory. ``category`` is validated server-side."},"CreateSharedPreviewRequest":{"properties":{"kind":{"type":"string","maxLength":20,"minLength":1,"title":"Kind"},"content":{"type":"string","minLength":1,"title":"Content"},"title":{"type":"string","maxLength":255,"title":"Title","default":""}},"type":"object","required":["kind","content"],"title":"CreateSharedPreviewRequest"},"CustomToolCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"url":{"type":"string","title":"Url"},"method":{"type":"string","title":"Method","default":"GET"},"auth_header":{"type":"string","title":"Auth Header","default":""},"secret_key":{"type":"string","title":"Secret Key","default":""},"parameters":{"items":{"$ref":"#/components/schemas/CustomToolParameter"},"type":"array","title":"Parameters","default":[]},"output_path":{"type":"string","title":"Output Path","default":""},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","url"],"title":"CustomToolCreateRequest"},"CustomToolParameter":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type","default":"string"},"description":{"type":"string","title":"Description","default":""},"required":{"type":"boolean","title":"Required","default":false}},"type":"object","required":["name"],"title":"CustomToolParameter"},"CustomToolUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"auth_header":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Header"},"secret_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Key"},"parameters":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomToolParameter"},"type":"array"},{"type":"null"}],"title":"Parameters"},"output_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Path"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"CustomToolUpdateRequest"},"DashboardCreateRequest":{"properties":{"title":{"type":"string","title":"Title"},"files":{"items":{},"type":"array","title":"Files","default":[]},"entry":{"type":"string","title":"Entry","default":"/dashboard.json"},"data_recipe":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data Recipe"},"params_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params Schema"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"source_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Session Id"},"filter_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filter Config"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"}},"type":"object","required":["title"],"title":"DashboardCreateRequest","description":"Body for POST /api/dashboards — new dashboard + version 1."},"DashboardDuplicateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","title":"DashboardDuplicateRequest"},"DashboardPatchRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"filter_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filter Config"}},"type":"object","title":"DashboardPatchRequest","description":"Body for PATCH /api/dashboards/{id} — rename / scope / filter-config."},"DashboardResolveRequest":{"properties":{"params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params"}},"type":"object","title":"DashboardResolveRequest","description":"Body for POST /api/dashboards/{id}/sources/{source}/resolve."},"DashboardRollbackRequest":{"properties":{"version":{"type":"integer","title":"Version"}},"type":"object","required":["version"],"title":"DashboardRollbackRequest"},"DashboardShareRequest":{"properties":{"audience_kind":{"type":"string","title":"Audience Kind"},"audience_id":{"type":"string","title":"Audience Id"}},"type":"object","required":["audience_kind","audience_id"],"title":"DashboardShareRequest"},"DashboardVersionRequest":{"properties":{"files":{"items":{},"type":"array","title":"Files","default":[]},"entry":{"type":"string","title":"Entry","default":"/dashboard.json"},"data_recipe":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data Recipe"},"params_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params Schema"},"activate":{"type":"boolean","title":"Activate","default":true}},"type":"object","title":"DashboardVersionRequest","description":"Body for POST /api/dashboards/{id}/versions — append an immutable version."},"DigestUpdateRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"schedule":{"type":"string","title":"Schedule","description":"Cron expression (server timezone)","default":"0 8 * * *"},"channels":{"items":{"type":"string"},"type":"array","title":"Channels"},"email":{"type":"string","title":"Email","default":""},"prompt":{"type":"string","title":"Prompt","default":""}},"type":"object","title":"DigestUpdateRequest"},"EditMessageRequest":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"EditMessageRequest"},"EntitlementOverrideItem":{"properties":{"key":{"type":"string","title":"Key"},"kind":{"type":"string","title":"Kind"},"value":{"type":"string","title":"Value"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["key","kind","value"],"title":"EntitlementOverrideItem","description":"One enterprise override row (feature toggle or limit)."},"FallbackPolicyUpdateRequest":{"properties":{"fallback_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fallback Enabled"},"fallback_chain":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Fallback Chain"},"fallback_max_attempts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fallback Max Attempts"},"fallback_triggers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Fallback Triggers"},"fallback_cb_failure_threshold":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fallback Cb Failure Threshold"},"fallback_cb_cooldown_sec":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fallback Cb Cooldown Sec"},"fallback_budget_aware":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fallback Budget Aware"},"fallback_budget_threshold_pct":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fallback Budget Threshold Pct"},"fallback_notify_user":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fallback Notify User"}},"type":"object","title":"FallbackPolicyUpdateRequest","description":"Partial update for the premium→free fallback policy (admin Fallback tab)."},"FeedbackRequest":{"properties":{"rating":{"type":"string","title":"Rating"},"reason_tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reason Tags"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"type":"object","required":["rating"],"title":"FeedbackRequest","description":"Body for POST /sessions/{sid}/messages/{mid}/feedback — thumbs up/down rating."},"ForgetAllRequest":{"properties":{"confirm":{"type":"string","title":"Confirm","default":""},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"ForgetAllRequest"},"ForkSessionRequest":{"properties":{"message_index":{"type":"integer","title":"Message Index"}},"type":"object","required":["message_index"],"title":"ForkSessionRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImpersonateRequest":{"properties":{"username":{"type":"string","title":"Username"}},"type":"object","required":["username"],"title":"ImpersonateRequest"},"IssueReportRequest":{"properties":{"reason_tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reason Tags"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"type":"object","title":"IssueReportRequest","description":"Body for POST /sessions/{sid}/messages/{mid}/issue-report — flag a bad answer."},"LoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id"},"tenant_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Slug"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"MCPConnectorCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"transport":{"type":"string","title":"Transport","default":"sse"},"url":{"type":"string","title":"Url"},"auth_header":{"type":"string","title":"Auth Header","default":""},"allowed_roles":{"items":{"type":"string"},"type":"array","title":"Allowed Roles","default":["admin","user"]},"required_permission":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Required Permission"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","url"],"title":"MCPConnectorCreateRequest"},"MCPConnectorUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"transport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transport"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"auth_header":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Header"},"allowed_roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Roles"},"required_permission":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Required Permission"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"MCPConnectorUpdateRequest"},"OdooConfigRequest":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","default":""},"db":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Db","default":""},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username","default":""},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","default":""},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","default":""}},"type":"object","title":"OdooConfigRequest"},"OutlookDraftReplyRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"body":{"type":"string","title":"Body"},"reply_all":{"type":"boolean","title":"Reply All","default":false}},"type":"object","required":["message_id","body"],"title":"OutlookDraftReplyRequest"},"OutlookSendReplyRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"body":{"type":"string","title":"Body"},"reply_all":{"type":"boolean","title":"Reply All","default":false}},"type":"object","required":["message_id","body"],"title":"OutlookSendReplyRequest"},"OutlookSummarizeRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tone"},"intent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent"},"reply_all":{"type":"boolean","title":"Reply All","default":false}},"type":"object","required":["message_id"],"title":"OutlookSummarizeRequest","description":"Ask the PA to summarize an email and propose a reply."},"PatchUserRequest":{"properties":{"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"permission_overrides":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Permission Overrides"},"data_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Data Domains"},"clear_permission_overrides":{"type":"boolean","title":"Clear Permission Overrides","default":false},"clear_data_domains":{"type":"boolean","title":"Clear Data Domains","default":false},"allowed_companies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Companies"},"clear_allowed_companies":{"type":"boolean","title":"Clear Allowed Companies","default":false},"personal_assistant_overrides":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Personal Assistant Overrides"},"clear_personal_assistant_overrides":{"type":"boolean","title":"Clear Personal Assistant Overrides","default":false},"token_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Token Limit"},"clear_token_limit":{"type":"boolean","title":"Clear Token Limit","default":false},"tokens_consumed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tokens Consumed"}},"type":"object","title":"PatchUserRequest"},"PlanCatalogPatchRequest":{"properties":{"features":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Features"},"limits":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Limits"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"PlanCatalogPatchRequest","description":"Superadmin plan catalog edit (features + limits on active version)."},"PlatformBillingConfigPatchRequest":{"properties":{"default_trial_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Trial Days"},"trial_default_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Default Start"},"trial_default_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Default End"},"clear_trial_dates":{"type":"boolean","title":"Clear Trial Dates","default":false},"billing_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Billing Enabled"},"billing_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Provider"},"sales_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sales Email"},"market_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Region"},"subscription_expiry_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Subscription Expiry Enabled"},"subscription_grace_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Grace Days"},"subscription_warn_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Warn Days"},"subscription_expiry_notify_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Subscription Expiry Notify Enabled"},"subscription_notice_recipients":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Subscription Notice Recipients"}},"type":"object","title":"PlatformBillingConfigPatchRequest","description":"Superadmin platform billing defaults."},"PlatformSecurityConfigPatchRequest":{"properties":{"allowed_origins_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Allowed Origins Text"},"clear_allowed_origins":{"type":"boolean","title":"Clear Allowed Origins","default":false},"security_headers_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Security Headers Enabled"},"csrf_protection_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Csrf Protection Enabled"},"hsts_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hsts Enabled"},"hsts_max_age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hsts Max Age"},"content_security_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Security Policy"},"clear_content_security_policy":{"type":"boolean","title":"Clear Content Security Policy","default":false}},"type":"object","title":"PlatformSecurityConfigPatchRequest","description":"Superadmin platform HTTP security defaults."},"PolicySimChatRequest":{"properties":{"username":{"type":"string","title":"Username"},"company":{"type":"string","title":"Company","default":""},"question":{"type":"string","title":"Question","default":""},"model_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Type"},"has_attachment":{"type":"boolean","title":"Has Attachment","default":false}},"type":"object","required":["username"],"title":"PolicySimChatRequest","description":"What-if request for the chat-path gate evaluation."},"PolicySimSQLRequest":{"properties":{"username":{"type":"string","title":"Username"},"sql":{"type":"string","title":"Sql"}},"type":"object","required":["username","sql"],"title":"PolicySimSQLRequest"},"PolicySimWhatIfRequest":{"properties":{"username":{"type":"string","title":"Username"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"permission_overrides":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Permission Overrides"},"merge_permissions":{"type":"boolean","title":"Merge Permissions","default":true},"data_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Data Domains"},"allowed_companies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Companies"}},"type":"object","required":["username"],"title":"PolicySimWhatIfRequest","description":"Synthetic patch to evaluate against the user's stored record. The\nbackend never persists these — it only computes the before/after diff.\n\n``merge_permissions`` defaults to True so the UI can supply only the\npermissions it wants to flip; set it to False to model the literal\n``PATCH /users/{username}`` behaviour where the supplied dict replaces\nthe stored overrides wholesale."},"RefreshSchemaRequest":{"properties":{"company":{"type":"string","title":"Company"}},"type":"object","required":["company"],"title":"RefreshSchemaRequest"},"ReplyRequest":{"properties":{"reply":{"title":"Reply"}},"type":"object","required":["reply"],"title":"ReplyRequest"},"ReportCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"question":{"type":"string","title":"Question"},"company":{"type":"string","title":"Company"},"model":{"type":"string","title":"Model"},"schedule":{"type":"string","title":"Schedule"},"delivery_type":{"type":"string","title":"Delivery Type","default":"email"},"recipients":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recipients"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","question","company","model","schedule"],"title":"ReportCreateRequest"},"ReportDryRunRequest":{"properties":{"question":{"type":"string","title":"Question"},"company":{"type":"string","title":"Company"},"model":{"type":"string","title":"Model"},"delivery_type":{"type":"string","title":"Delivery Type","default":"email"},"recipients":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recipients"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"report_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Id"}},"type":"object","required":["question","company","model"],"title":"ReportDryRunRequest","description":"Dry-run preview of a report — runs the query + renders the delivery\npayload without sending. ``schedule``/``enabled`` are irrelevant to a\npreview, so they are omitted. ``report_id`` is optional context only."},"ReportUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule"},"delivery_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Type"},"recipients":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recipients"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"ReportUpdateRequest"},"ResetPasswordRequest":{"properties":{"username":{"type":"string","title":"Username"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["username","new_password"],"title":"ResetPasswordRequest"},"RunToolRequest":{"properties":{"tool":{"type":"string","title":"Tool"},"arguments":{"additionalProperties":true,"type":"object","title":"Arguments","default":{}}},"type":"object","required":["tool"],"title":"RunToolRequest"},"SavePreferencesRequest":{"properties":{"preferences":{"additionalProperties":{"type":"string"},"type":"object","title":"Preferences"}},"type":"object","required":["preferences"],"title":"SavePreferencesRequest"},"SavedAnalyticPatchRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}},"type":"object","title":"SavedAnalyticPatchRequest","description":"Body for PATCH /api/saved-analytics/{id} — rename / describe / scope."},"SavedAnalyticResolveRequest":{"properties":{"params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params"}},"type":"object","title":"SavedAnalyticResolveRequest","description":"Body for POST /api/saved-analytics/{id}/resolve."},"SavedAnalyticShareRequest":{"properties":{"audience_kind":{"type":"string","title":"Audience Kind"},"audience_id":{"type":"string","title":"Audience Id"}},"type":"object","required":["audience_kind","audience_id"],"title":"SavedAnalyticShareRequest"},"SecretSetRequest":{"properties":{"value":{"type":"string","title":"Value"}},"type":"object","required":["value"],"title":"SecretSetRequest"},"SpeakRequest":{"properties":{"text":{"type":"string","maxLength":4000,"minLength":1,"title":"Text"},"voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"response_format":{"type":"string","pattern":"^(mp3|opus|aac|flac|wav)$","title":"Response Format","default":"mp3"}},"type":"object","required":["text"],"title":"SpeakRequest"},"StartRequest":{"properties":{"definition":{"type":"string","title":"Definition"},"inputs":{"additionalProperties":true,"type":"object","title":"Inputs","default":{}},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["definition"],"title":"StartRequest"},"StopImpersonationRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"StopImpersonationRequest"},"SuggestPromptRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":""}},"type":"object","required":["name"],"title":"SuggestPromptRequest","description":"Body for POST /api/admin/agents/suggest-prompt — AI-assisted Agent\nBuilder helper. Given an agent's name and description, return a\ndrafted system prompt the admin can edit."},"SuggestQuestionsRequest":{"properties":{"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"session_type":{"type":"string","title":"Session Type","default":"bc"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"draft":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft"},"model_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Label"},"mentions":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Mentions"}},"type":"object","title":"SuggestQuestionsRequest","description":"Body for POST /api/chat/suggest-questions — composer \"Ask Question\"\naction. The server loads recent messages from ``session_id`` (when given)\nto ground the suggestions; ``draft`` covers the empty-conversation case.\nReturns a structured list of questions (each with a prompt and options).\n``model_label`` selects the same model as the composer picker."},"SuggestScopeRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":""},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt","default":""}},"type":"object","required":["name"],"title":"SuggestScopeRequest","description":"Body for POST /api/admin/agents/suggest-scope — AI-assisted Agent\nBuilder helper. Frontend supplies the agent's identity, server returns\nsuggested data_domains, companies, and KB tags."},"TeamsConfigRequest":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Id"},"app_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Password"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id"}},"type":"object","title":"TeamsConfigRequest"},"TelegramConfigRequest":{"properties":{"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token"},"webhook_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Secret"}},"type":"object","title":"TelegramConfigRequest"},"TenantCreateRequest":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"plan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Id","default":"free"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","default":"active"}},"type":"object","required":["slug"],"title":"TenantCreateRequest"},"TenantEntitlementsPatchRequest":{"properties":{"set":{"items":{"$ref":"#/components/schemas/EntitlementOverrideItem"},"type":"array","title":"Set","default":[]},"remove":{"items":{"type":"string"},"type":"array","title":"Remove","default":[]}},"type":"object","title":"TenantEntitlementsPatchRequest","description":"Superadmin batch update for tenant entitlement overrides (Phase 9d)."},"TenantSubscriptionPatchRequest":{"properties":{"plan_id":{"type":"string","title":"Plan Id"},"plan_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Version"},"status":{"type":"string","title":"Status","default":"active"},"billing_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Interval"},"trial_starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Starts At"},"trial_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Ends At"},"current_period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"}},"type":"object","required":["plan_id"],"title":"TenantSubscriptionPatchRequest","description":"Superadmin manual plan assignment (billing Phase 9a)."},"TestBcOdataRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"TestBcOdataRequest"},"TestConnectionRequest":{"properties":{"probe":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Probe","default":"connection"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username","default":""},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password","default":""},"gateway_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gateway Base Url","default":""},"gateway_company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gateway Company","default":""},"gateway_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gateway Username","default":""},"gateway_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gateway Password","default":""},"gateway_transport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gateway Transport","default":"odata"},"cloud_environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloud Environment","default":""},"cloud_tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloud Tenant Id","default":""},"cloud_company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloud Company Id","default":""},"cloud_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloud Base Url","default":""},"cloud_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloud Client Id","default":""},"cloud_client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloud Client Secret","default":""},"cloud_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloud Scope","default":""}},"type":"object","title":"TestConnectionRequest"},"ToolConfirmRequest":{"properties":{"confirm_id":{"type":"string","title":"Confirm Id"},"approved":{"type":"boolean","title":"Approved","default":false}},"type":"object","required":["confirm_id"],"title":"ToolConfirmRequest","description":"Body for POST /api/chat/tool-confirm — approve or deny a destructive tool."},"UpdateCardRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"UpdateCardRequest"},"UpdateConnectionRequest":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"enable_on_save":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable On Save","default":false}},"type":"object","title":"UpdateConnectionRequest"},"UpdateIntegrationRequest":{"properties":{"integration_type":{"type":"string","title":"Integration Type"},"bc_deployment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bc Deployment","default":"on_prem"}},"type":"object","required":["integration_type"],"title":"UpdateIntegrationRequest"},"UpdateMemoryRequest":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"UpdateMemoryRequest","description":"Partial update. Any field left None is unchanged."},"UpdateSessionRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Pinned"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Archived"}},"type":"object","title":"UpdateSessionRequest"},"UpdateSettingsRequest":{"properties":{"settings":{"additionalProperties":true,"type":"object","title":"Settings"}},"type":"object","required":["settings"],"title":"UpdateSettingsRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WhatsAppConfigRequest":{"properties":{"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"account_sid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Sid"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Token"},"from_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Number"},"meta_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Access Token"},"meta_phone_number_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Phone Number Id"},"meta_app_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta App Secret"},"meta_verify_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Verify Token"},"public_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Url"}},"type":"object","title":"WhatsAppConfigRequest"},"WhatsAppTemplateRequest":{"properties":{"name":{"type":"string","title":"Name"},"content_sid":{"type":"string","title":"Content Sid"},"language":{"type":"string","title":"Language","default":"en"},"description":{"type":"string","title":"Description","default":""},"variables":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Variables"},"body_preview":{"type":"string","title":"Body Preview","default":""}},"type":"object","required":["name","content_sid"],"title":"WhatsAppTemplateRequest"},"WidgetCreateRequest":{"properties":{"title":{"type":"string","title":"Title"},"source":{"type":"string","title":"Source"},"viz":{"type":"string","title":"Viz"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric"},"window_days":{"type":"integer","title":"Window Days","default":14},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"sql":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sql"},"label_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Field"},"value_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Field"}},"type":"object","required":["title","source","viz"],"title":"WidgetCreateRequest","description":"Create one dashboard widget for the signed-in user. ``source`` is\n'metric' (operational telemetry) or 'bc_sql' (a validated BC SELECT)."},"WidgetPreviewRequest":{"properties":{"source":{"type":"string","title":"Source"},"viz":{"type":"string","title":"Viz"},"metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric"},"window_days":{"type":"integer","title":"Window Days","default":14},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"sql":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sql"},"label_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Field"},"value_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Field"}},"type":"object","required":["source","viz"],"title":"WidgetPreviewRequest","description":"Resolve an unsaved widget spec to data (live preview before save)."},"WidgetReorderRequest":{"properties":{"ordered_ids":{"items":{"type":"string"},"type":"array","title":"Ordered Ids"}},"type":"object","required":["ordered_ids"],"title":"WidgetReorderRequest"},"WidgetSuggestRequest":{"properties":{"description":{"type":"string","title":"Description"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},"type":"object","required":["description"],"title":"WidgetSuggestRequest","description":"AI widget builder — natural-language description → draft widget spec."},"WidgetUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"viz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Viz"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric"},"window_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Days"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"sql":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sql"},"label_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Field"},"value_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Field"}},"type":"object","title":"WidgetUpdateRequest"}}}}