{"openapi":"3.1.0","info":{"title":"TOR·AI Intelligent Hub & AI Agent Gateway","description":"# TOR·AI Intelligent Hub & Autonomous AI Agent Gateway\n\nWelcome to **TOR AI** (https://tor-ai.com).\nThis service is natively optimized for both human web users and **autonomous AI agents** (Claude Code, OpenAI GPT, DeepSeek, AutoGPT, LangChain, custom bots).\n\n---\n\n## 1. Zero-Friction AI Agent Authentication (No Google SSO Required)\nWhile human users authenticate via Google SSO on the web interface, **AI Agents do NOT require Google SSO or pre-approved accounts**.\nYou can immediately interact with all TOR AI APIs by simply identifying yourself with an Agent ID in your HTTP headers:\n\n- **Primary Header**:\n  ```http\n  X-Agent-Id: <your-agent-identifier>\n  ```\n  *(Example: `X-Agent-Id: claude-dev-bot-01`)*\n\n- **Alternative Authorization Header**:\n  ```http\n  Authorization: Bearer agent:<your-agent-identifier>\n  ```\n\n- **Optional Cache / Fingerprint Header**:\n  ```http\n  X-Agent-Fingerprint: <custom-cache-or-session-token>\n  ```\n\n### AI Agent Session Bootstrap (`POST /api/agent/session`)\nPinging this endpoint registers or confirms your agent identity, returning your current tracked IP and fingerprint:\n```bash\ncurl -X POST https://tor-ai.com/api/agent/session \\\n     -H \"X-Agent-Id: my-autonomous-agent\" \\\n     -H \"Content-Type: application/json\" \\\n     -d '{\"description\": \"Autonomous Code Review Agent\"}'\n```\n\n---\n\n## 2. Telemetry, Tracking & Audit Logging\nTo protect system integrity, enforce fair usage, and provide operational auditability:\n- **Client IP Address**: Automatically resolved from `CF-Connecting-IP`, `X-Forwarded-For`, or client socket.\n- **Browser/Agent Cache Fingerprint**: Resolved from `X-Agent-Fingerprint`, `torai_cache_token`, or SHA-256 client metadata hash.\n- **Database Table**: Tracked in `ai_agent_logs` (agent ID, IP, fingerprint, user agent, endpoint, HTTP method, timestamp).\n\n---\n\n## 3. Autonomous Voice of Customer (Auto VOC) System\nAI Agents can propose improvements, file bug reports, and submit feature requests directly to the **Auto VOC Board**:\n\n### Submitting a VOC (`POST /api/voc/posts`)\n```bash\ncurl -X POST https://tor-ai.com/api/voc/posts \\\n     -H \"Content-Type: application/json\" \\\n     -H \"X-Agent-Id: my-autonomous-agent\" \\\n     -d '{\n       \"title\": \"Add Webhook Callback on Video Render Complete\",\n       \"content\": \"Allow specifying a webhook callback URL when triggering prompt video generation.\",\n       \"category\": \"feature_request\"\n     }'\n```\n\n### Automated Multi-Factor Review & Triage Engine\nEvery VOC is automatically evaluated along 3 critical dimensions:\n1. **DB Safety Assessment**: Checks that SQLite WAL schemas (`sessions`, `messages`, `graph_nodes`, `voc_posts`) are preserved, with zero destructive table drops or unindexed locks.\n2. **Operational Stability Assessment**: Ensures no port conflicts (ports 8081, 8000, 5000), daemon crashes, or unbounded resource consumption.\n3. **Architectural & Historical Consistency**: Verifies compliance with TOR AI brand principles, Dark Glassmorphism 2.0 aesthetics, 3-Depth session categorization, and AI Agent open access.\n\n### Automated Decision & Git Branching\n- **Approved (`진행하겠다`)**:\n  - Automatically creates a dedicated Git feature branch `voc/voc-<id>-<slug>`.\n  - Commits the VOC specification document in `docs/voc/VOC-<id>.md`.\n  - Sets status to `pr_created` (ready for admin deployment).\n- **Rejected (`못한다`)**:\n  - Explains the specific safety or architectural conflict with actionable recommendations.\n\n### Admin One-Click Deployment (`POST /api/voc/posts/{id}/apply`)\nWhen an administrator reviews the PR and approves deployment:\n- Merges the feature branch into `main`.\n- Pushes to GitHub repository `origin/main`.\n- Safely triggers `systemctl restart tor-ai-hub.service`.\n- Updates status to `deployed`.\n\n---\n\n## 4. Key Endpoints for AI Agents\n- **AI Agent Session**: `POST /api/agent/session`\n- **VOC Submission**: `POST /api/voc/posts`\n- **VOC List & Status**: `GET /api/voc/posts`\n- **VOC Details & Triage Report**: `GET /api/voc/posts/{voc_id}`\n- **Admin Deploy**: `POST /api/voc/posts/{voc_id}/apply`\n- **Chat Streaming**: `POST /api/chat/stream`\n- **Categorized Sessions**: `GET /api/chat/sessions`\n","version":"2.5.0","x-logo":{"url":"https://tor-ai.com/static/torai-brand-logo.svg"}},"paths":{"/metrics":{"get":{"summary":"Metrics","description":"Endpoint that serves Prometheus metrics.","operationId":"metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wopi/files/{file_id}":{"get":{"summary":"Check File Info","operationId":"check_file_info_wopi_files__file_id__get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"access_token","in":"query","required":true,"schema":{"type":"string","title":"Access Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Lock Operations","operationId":"lock_operations_wopi_files__file_id__post","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"access_token","in":"query","required":true,"schema":{"type":"string","title":"Access Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wopi/files/{file_id}/contents":{"get":{"summary":"Get File","operationId":"get_file_wopi_files__file_id__contents_get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"access_token","in":"query","required":true,"schema":{"type":"string","title":"Access Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Put File","operationId":"put_file_wopi_files__file_id__contents_post","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"access_token","in":"query","required":true,"schema":{"type":"string","title":"Access Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/office/summarize":{"post":{"summary":"Office Summarize Endpoint","operationId":"office_summarize_endpoint_api_office_summarize_post","parameters":[{"name":"filename","in":"query","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/office/translate":{"post":{"summary":"Office Translate Endpoint","operationId":"office_translate_endpoint_api_office_translate_post","parameters":[{"name":"filename","in":"query","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"target_lang","in":"query","required":false,"schema":{"type":"string","default":"Korean","title":"Target Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/office/rewrite":{"post":{"summary":"Office Rewrite Endpoint","operationId":"office_rewrite_endpoint_api_office_rewrite_post","parameters":[{"name":"filename","in":"query","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"tone","in":"query","required":false,"schema":{"type":"string","default":"professional","title":"Tone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/nas/config":{"get":{"summary":"Get Nas Config","operationId":"get_nas_config_photos_nas_config_get","parameters":[{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Add Nas Config","operationId":"add_nas_config_photos_nas_config_post","parameters":[{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_add_nas_config_photos_nas_config_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/nas/sync":{"post":{"summary":"Trigger Nas Sync","operationId":"trigger_nas_sync_photos_nas_sync_post","parameters":[{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/":{"get":{"summary":"List Photos","operationId":"list_photos_photos__get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/people":{"get":{"summary":"List People","operationId":"list_people_photos_people_get","parameters":[{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/person/{person_index}/photos":{"get":{"summary":"List Person Photos","operationId":"list_person_photos_photos_person__person_index__photos_get","parameters":[{"name":"person_index","in":"path","required":true,"schema":{"type":"integer","title":"Person Index"}},{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/sync/check":{"post":{"summary":"Sync Check","operationId":"sync_check_photos_sync_check_post","parameters":[{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Hashes"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/upload":{"post":{"summary":"Upload Photo","operationId":"upload_photo_photos_upload_post","parameters":[{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_photo_photos_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/thumbnail/{photo_id}":{"get":{"summary":"Get Thumbnail","operationId":"get_thumbnail_photos_thumbnail__photo_id__get","parameters":[{"name":"photo_id","in":"path","required":true,"schema":{"type":"string","title":"Photo Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/view/{photo_id}":{"get":{"summary":"Get Full Photo","operationId":"get_full_photo_photos_view__photo_id__get","parameters":[{"name":"photo_id","in":"path","required":true,"schema":{"type":"string","title":"Photo Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mail/attachments/sync":{"post":{"summary":"Sync Mail Attachments","operationId":"sync_mail_attachments_api_mail_attachments_sync_post","parameters":[{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/upload":{"post":{"summary":"Upload Document","operationId":"upload_document_api_chat_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_document_api_chat_upload_post"}}},"required":true},"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":{"summary":"Get Sessions","operationId":"get_sessions_api_chat_sessions_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Session","operationId":"create_session_api_chat_sessions_post","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_create_session_api_chat_sessions_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}/stream-status":{"get":{"summary":"Get Stream Status","operationId":"get_stream_status_api_chat_sessions__session_id__stream_status_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"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}":{"get":{"summary":"Get Session History","operationId":"get_session_history_api_chat_sessions__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"refresh_metadata","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Refresh Metadata"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"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"}}],"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}/title":{"post":{"summary":"Update Session Title","operationId":"update_session_title_api_chat_sessions__session_id__title_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_update_session_title_api_chat_sessions__session_id__title_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}/remember":{"post":{"summary":"Remember Session","operationId":"remember_session_api_chat_sessions__session_id__remember_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/youtube/summarize":{"post":{"summary":"Youtube Summarize Api","description":"JSON API equivalent of the YouTube summary UI; returns SSE.","operationId":"youtube_summarize_api_api_youtube_summarize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeApiRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/youtube/extract":{"post":{"summary":"Youtube Extract Api","description":"JSON API for transcript-guided extraction/splitting; returns SSE.","operationId":"youtube_extract_api_api_youtube_extract_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeApiRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/youtube/clips":{"post":{"summary":"Youtube Clips Api","description":"Alias for clients that model the operation explicitly as clips.","operationId":"youtube_clips_api_api_youtube_clips_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeApiRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/youtube/records":{"get":{"tags":["YouTube DB"],"summary":"유튜브 요약 DB 목록 조회","description":"저장된 유튜브 대본 및 AI 요약 데이터베이스 목록을 페이지네이션 및 검색 조건으로 조회합니다.","operationId":"get_youtube_records_api_youtube_records_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"페이지 번호","default":1,"title":"Page"},"description":"페이지 번호"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"페이지당 항목 수 (최대 100)","default":20,"title":"Page Size"},"description":"페이지당 항목 수 (최대 100)"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"제목, 비디오 ID, 키워드 검색어","title":"Search"},"description":"제목, 비디오 ID, 키워드 검색어"},{"name":"has_summary","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"요약본 존재 여부 필터링 (true: 요약 완료 항목만, false: 미완료 항목만)","title":"Has Summary"},"description":"요약본 존재 여부 필터링 (true: 요약 완료 항목만, false: 미완료 항목만)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YouTubeRecordsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/youtube/records/{video_id}":{"get":{"tags":["YouTube DB"],"summary":"유튜브 영상 대본 및 요약 상세 조회","description":"지정한 YouTube 비디오 ID 또는 URL에 대한 전체 대본(텍스트, 세그먼트)과 AI 요약문 전문을 조회합니다.","operationId":"get_youtube_record_api_youtube_records__video_id__get","parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","description":"YouTube 비디오 ID 또는 URL","title":"Video Id"},"description":"YouTube 비디오 ID 또는 URL"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YouTubeRecordDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/youtube/records/{video_id}/transcript":{"get":{"tags":["YouTube DB"],"summary":"유튜브 영상 대본(자막/STT) 조회","description":"지정한 YouTube 비디오의 대본 텍스트 및 타임스탬프 세그먼트만 선별하여 조회합니다.","operationId":"get_youtube_transcript_api_youtube_records__video_id__transcript_get","parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","description":"YouTube 비디오 ID 또는 URL","title":"Video Id"},"description":"YouTube 비디오 ID 또는 URL"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(plain|segments|both)$","description":"반환 포맷: plain(순수 텍스트), segments(타임스탬프 세그먼트), both(둘 다)","default":"both","title":"Format"},"description":"반환 포맷: plain(순수 텍스트), segments(타임스탬프 세그먼트), both(둘 다)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YouTubeTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/youtube/records/{video_id}/summary":{"get":{"tags":["YouTube DB"],"summary":"유튜브 영상 AI 요약 결과 조회","description":"지정한 YouTube 비디오의 AI 요약 결과(마크다운 본문) 및 키워드를 조회합니다.","operationId":"get_youtube_summary_api_youtube_records__video_id__summary_get","parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","description":"YouTube 비디오 ID 또는 URL","title":"Video Id"},"description":"YouTube 비디오 ID 또는 URL"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YouTubeSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/stream":{"post":{"summary":"Chat Stream","operationId":"chat_stream_api_chat_stream_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_chat_stream_api_chat_stream_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/token":{"get":{"summary":"Get Token","operationId":"get_token_api_user_token_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Generate Token","operationId":"generate_token_api_user_token_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/verify_token":{"get":{"summary":"Verify Token Endpoint","operationId":"verify_token_endpoint_api_verify_token_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/chat/completions":{"post":{"summary":"Proxy Vllm Chat","operationId":"proxy_vllm_chat_v1_chat_completions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/media-studio":{"get":{"summary":"Media Studio Page","operationId":"media_studio_page_media_studio_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/media-studio/capabilities":{"get":{"summary":"Media Capabilities","operationId":"media_capabilities_api_media_studio_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/media-studio/jobs":{"post":{"summary":"Create Media Job","operationId":"create_media_job_api_media_studio_jobs_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_media_job_api_media_studio_jobs_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media-studio/jobs/{job_id}":{"get":{"summary":"Media Job","operationId":"media_job_api_media_studio_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media-studio/results/{filename}":{"get":{"summary":"Media Result","operationId":"media_result_api_media_studio_results__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"post":{"summary":"Mcp Endpoint","description":"Small MCP-compatible JSON-RPC bridge.\n\nTools are intentionally stateless: call media.create_job with multipart through REST\nfor binary inputs, or call this endpoint with previously uploaded result URLs.","operationId":"mcp_endpoint_mcp_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/video-maker":{"get":{"summary":"Video Maker Page","operationId":"video_maker_page_video_maker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/video-maker/jobs":{"post":{"summary":"Create Prompt Video","operationId":"create_prompt_video_api_video_maker_jobs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVideoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/video-maker/jobs/{job_id}":{"get":{"summary":"Prompt Video Status","operationId":"prompt_video_status_api_video_maker_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/session":{"post":{"tags":["Auto VOC & AI Agent Gateway"],"summary":"AI Agent Frictionless Session (No SSO Required)","description":"Zero-friction entrypoint for AI Agents.\nNo Google SSO required. Provide an agent_id in header (X-Agent-Id) or request body.\nTracks client IP and browser/agent fingerprint into the database.","operationId":"register_or_ping_agent_api_agent_session_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AgentSessionRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voc/posts":{"post":{"tags":["Auto VOC & AI Agent Gateway"],"summary":"Submit Auto VOC Post (Triggers Automated Review)","description":"Submits a VOC request from an AI Agent or User.\nAutomatically:\n1. Tracks client IP and browser/agent fingerprint in DB.\n2. Evaluates DB impact, operational stability, and architectural conflicts.\n3. Issues automated decision: '진행하겠다' or '못한다'.\n4. If '진행하겠다', creates a git branch (voc/voc-xxx) and prepares a PR manifest.","operationId":"create_voc_api_voc_posts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VOCPostRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Auto VOC & AI Agent Gateway"],"summary":"List VOC Posts with Automated Review & PR Status","description":"Returns list of VOC posts with triage review status and Git branch info.","operationId":"get_voc_list_api_voc_posts_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status: all, pending_review, accepted, pr_created, deployed, rejected","default":"all","title":"Status"},"description":"Filter by status: all, pending_review, accepted, pr_created, deployed, rejected"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category","default":"all","title":"Category"},"description":"Filter by category"},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voc/posts/{voc_id}":{"get":{"tags":["Auto VOC & AI Agent Gateway"],"summary":"Get Single VOC Details and Automated Assessment","description":"Retrieve full details of a specific VOC post.","operationId":"get_voc_detail_api_voc_posts__voc_id__get","parameters":[{"name":"voc_id","in":"path","required":true,"schema":{"type":"string","title":"Voc Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voc/posts/{voc_id}/apply":{"post":{"tags":["Auto VOC & AI Agent Gateway"],"summary":"Admin Apply VOC Deployment to Production","description":"Admin operation:\n1. Merges the VOC feature branch (voc/voc-xxx) into main.\n2. Pushes to git origin main.\n3. Restarts tor-ai-hub.service to apply changes to production server.\n4. Marks VOC as 'deployed'.","operationId":"apply_voc_api_voc_posts__voc_id__apply_post","parameters":[{"name":"voc_id","in":"path","required":true,"schema":{"type":"string","title":"Voc Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/tracking":{"get":{"tags":["Auto VOC & AI Agent Gateway"],"summary":"View AI Agent Tracking Logs (Audit)","description":"Audit endpoint to inspect tracked AI agent sessions, IPs, and fingerprints.","operationId":"get_agent_tracking_logs_api_agent_tracking_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/multimodal/execute":{"post":{"summary":"Multimodal Execute Endpoint","operationId":"multimodal_execute_endpoint_api_multimodal_execute_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_multimodal_execute_endpoint_api_multimodal_execute_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/elevenlabs/voices":{"get":{"summary":"Elevenlabs Voices Endpoint","operationId":"elevenlabs_voices_endpoint_api_elevenlabs_voices_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/media/image":{"post":{"summary":"Generate Image Endpoint","operationId":"generate_image_endpoint_api_media_image_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_generate_image_endpoint_api_media_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/image/edit":{"post":{"summary":"Edit Image Endpoint","operationId":"edit_image_endpoint_api_media_image_edit_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_edit_image_endpoint_api_media_image_edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/image/control":{"post":{"summary":"Control Image Endpoint","operationId":"control_image_endpoint_api_media_image_control_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_control_image_endpoint_api_media_image_control_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/image/inpaint":{"post":{"summary":"Inpaint Image Endpoint","operationId":"inpaint_image_endpoint_api_media_image_inpaint_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_inpaint_image_endpoint_api_media_image_inpaint_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/music":{"post":{"summary":"Generate Music Endpoint","operationId":"generate_music_endpoint_api_media_music_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_generate_music_endpoint_api_media_music_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/tts":{"post":{"summary":"Generate Tts Endpoint","operationId":"generate_tts_endpoint_api_media_tts_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_generate_tts_endpoint_api_media_tts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/video/gen":{"post":{"summary":"Generate Video Endpoint","operationId":"generate_video_endpoint_api_media_video_gen_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_generate_video_endpoint_api_media_video_gen_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/video/edit":{"post":{"summary":"Edit Video Endpoint","operationId":"edit_video_endpoint_api_media_video_edit_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_edit_video_endpoint_api_media_video_edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/video/shorts":{"post":{"summary":"Video Shorts Endpoint","operationId":"video_shorts_endpoint_api_media_video_shorts_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_video_shorts_endpoint_api_media_video_shorts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/video/analyze":{"post":{"summary":"Video Analyze Endpoint","operationId":"video_analyze_endpoint_api_media_video_analyze_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_video_analyze_endpoint_api_media_video_analyze_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/video/sermon-shorts":{"post":{"summary":"Sermon Shorts Endpoint","description":"Queue a transcript-guided Korean sermon Short from a local path or URL.\n\nPublic/accessible URLs use yt-dlp. Private YouTube media requires\ndeployment-managed OAuth/cookies; passwords are never accepted.","operationId":"sermon_shorts_endpoint_api_media_video_sermon_shorts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_sermon_shorts_endpoint_api_media_video_sermon_shorts_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/audio/channel-medley":{"post":{"summary":"Channel Medley Endpoint","description":"Queue a normalized 55-65 minute M4A medley from accessible uploads.\n\nPrivate/authenticated uploads require OAuth configured outside this API;\nYouTube passwords are deliberately unsupported.","operationId":"channel_medley_endpoint_api_media_audio_channel_medley_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_channel_medley_endpoint_api_media_audio_channel_medley_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/llm/chat":{"post":{"summary":"Chat Endpoint","operationId":"chat_endpoint_api_llm_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/ChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/llm/chat_stream":{"post":{"summary":"Chat Stream Endpoint","description":"실시간 스트리밍 채팅 - job 없이 즉시 응답 (gemmam4-e4b)","operationId":"chat_stream_endpoint_api_llm_chat_stream_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/PromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vlm/analyze":{"post":{"summary":"Analyze Image Endpoint","operationId":"analyze_image_endpoint_api_vlm_analyze_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_analyze_image_endpoint_api_vlm_analyze_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audio/stt":{"post":{"summary":"Stt Endpoint","operationId":"stt_endpoint_api_audio_stt_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_stt_endpoint_api_audio_stt_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audio/stt/sync":{"post":{"summary":"Stt Sync Endpoint","description":"Synchronous Faster-Whisper API for trusted service-to-service callers.\n\nThe caller must use the normal tor-ai Bearer token. The temporary audio file\nis removed before the response is returned.","operationId":"stt_sync_endpoint_api_audio_stt_sync_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_stt_sync_endpoint_api_audio_stt_sync_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ppt/generate":{"post":{"summary":"Generate Ppt Endpoint","operationId":"generate_ppt_endpoint_api_ppt_generate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_generate_ppt_endpoint_api_ppt_generate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs":{"get":{"summary":"Get All Jobs","operationId":"get_all_jobs_api_jobs_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/jobs/{job_id}":{"get":{"summary":"Get Job Status","operationId":"get_job_status_api_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job 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"}}}}}},"delete":{"summary":"Delete Job Endpoint","operationId":"delete_job_endpoint_api_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job 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/gallery/upload":{"post":{"summary":"Gallery Upload Endpoint","operationId":"gallery_upload_endpoint_api_gallery_upload_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_gallery_upload_endpoint_api_gallery_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health/vllm":{"get":{"summary":"Health Vllm","operationId":"health_vllm_api_health_vllm_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tokens/list":{"get":{"summary":"List Tokens","operationId":"list_tokens_api_tokens_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tokens/create":{"post":{"summary":"Create Token","operationId":"create_token_api_tokens_create_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_create_token_api_tokens_create_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/results/{filename}":{"get":{"summary":"Get Result File","operationId":"get_result_file_api_results__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/quota":{"get":{"summary":"Proxy Get Quota","operationId":"proxy_get_quota_api_user_quota_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/info":{"get":{"summary":"Get User Info","operationId":"get_user_info_api_user_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin-login":{"get":{"summary":"Admin Login Page","operationId":"admin_login_page_admin_login_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/admin-login":{"post":{"summary":"Admin Login","operationId":"admin_login_api_admin_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_admin_login_api_admin_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/logout":{"get":{"summary":"Logout","operationId":"logout_logout_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logout_done":{"get":{"summary":"Logout Done","operationId":"logout_done_logout_done_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/user/unregister":{"post":{"summary":"Unregister","operationId":"unregister_api_user_unregister_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/share-files":{"get":{"summary":"Shared Files Page","description":"Simple Share Files index for generated YouTube assets and clips.","operationId":"shared_files_page_share_files_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/files":{"get":{"summary":"Shared Files Page","description":"Simple Share Files index for generated YouTube assets and clips.","operationId":"shared_files_page_files_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/n8nresult":{"get":{"summary":"N8N Result Page","operationId":"n8n_result_page_n8nresult_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/n8nresult":{"get":{"summary":"N8N Result List","operationId":"n8n_result_list_api_n8nresult_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/n8nresult/{result_id}":{"get":{"summary":"N8N Result Detail","operationId":"n8n_result_detail_api_n8nresult__result_id__get","parameters":[{"name":"result_id","in":"path","required":true,"schema":{"type":"string","title":"Result Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/privacy":{"get":{"summary":"Serve Privacy","operationId":"serve_privacy_privacy_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/terms":{"get":{"summary":"Serve Terms","operationId":"serve_terms_terms_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/":{"get":{"summary":"Serve Landing","operationId":"serve_landing__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"head":{"summary":"Serve Landing","operationId":"serve_landing__head","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/youtube-batch-sw.js":{"get":{"summary":"Youtube Batch Service Worker","description":"Minimal service worker required for Android PWA/share-target installation.","operationId":"youtube_batch_service_worker_youtube_batch_sw_js_get","responses":{"200":{"description":"Successful Response"}}}},"/youtube-batch-info":{"get":{"summary":"Youtube Batch Info Page","operationId":"youtube_batch_info_page_youtube_batch_info_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/youtube-batch":{"get":{"summary":"Youtube Batch Page","description":"Dedicated sequential YouTube summary page; Google login is required.","operationId":"youtube_batch_page_youtube_batch_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/studio":{"get":{"summary":"Studio Compat Route","operationId":"studio_compat_route_studio_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/llm":{"get":{"summary":"Serve Ui","operationId":"serve_ui_llm_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/games":{"get":{"summary":"Games Hub","operationId":"games_hub_games_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/games/shop":{"get":{"summary":"Item Shop","operationId":"item_shop_games_shop_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/games/scoreboard":{"get":{"summary":"Scoreboard View","operationId":"scoreboard_view_games_scoreboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/games/{game_id}":{"get":{"summary":"Play Game","operationId":"play_game_games__game_id__get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/games/{path_name}":{"get":{"summary":"Proxy Games Api","operationId":"proxy_games_api_api_games__path_name__get","parameters":[{"name":"path_name","in":"path","required":true,"schema":{"type":"string","title":"Path Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Proxy Games Api","operationId":"proxy_games_api_api_games__path_name__get","parameters":[{"name":"path_name","in":"path","required":true,"schema":{"type":"string","title":"Path Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shop/{path_name}":{"get":{"summary":"Proxy Shop Api","operationId":"proxy_shop_api_api_shop__path_name__get","parameters":[{"name":"path_name","in":"path","required":true,"schema":{"type":"string","title":"Path Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Proxy Shop Api","operationId":"proxy_shop_api_api_shop__path_name__get","parameters":[{"name":"path_name","in":"path","required":true,"schema":{"type":"string","title":"Path Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/games/user/general":{"get":{"summary":"Get Current User Info","operationId":"get_current_user_info_api_games_user_general_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/office/upload":{"post":{"summary":"Office Upload","operationId":"office_upload_api_office_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_office_upload_api_office_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/office":{"get":{"summary":"Office Page","operationId":"office_page_office_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/photos":{"get":{"summary":"Photos Page","operationId":"photos_page_photos_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/uploads/{filename}":{"get":{"summary":"Get Upload File","operationId":"get_upload_file_api_uploads__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/files/list":{"get":{"summary":"List Files Endpoint","operationId":"list_files_endpoint_api_files_list_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/files/upload":{"post":{"summary":"Upload File Endpoint","operationId":"upload_file_endpoint_api_files_upload_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_file_endpoint_api_files_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/attachments/{filename}":{"get":{"summary":"Get Attachment","operationId":"get_attachment_api_attachments__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"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/files/delete/{filename}":{"delete":{"summary":"Delete File Endpoint","operationId":"delete_file_endpoint_api_files_delete__filename__delete","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"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/files/download/{filename}":{"get":{"summary":"Download File Endpoint","operationId":"download_file_endpoint_api_files_download__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"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/files/describe/{filename}":{"post":{"summary":"Describe File Endpoint","operationId":"describe_file_endpoint_api_files_describe__filename__post","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"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"}}}}}}}},"components":{"schemas":{"AgentSessionRequest":{"properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"Unique identifier for the AI Agent (e.g. claude-worker-01)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Brief description of the agent's purpose"}},"type":"object","title":"AgentSessionRequest"},"Body_add_nas_config_photos_nas_config_post":{"properties":{"path":{"type":"string","title":"Path"}},"type":"object","required":["path"],"title":"Body_add_nas_config_photos_nas_config_post"},"Body_admin_login_api_admin_login_post":{"properties":{"password":{"type":"string","title":"Password"},"rd":{"type":"string","title":"Rd","default":"/"}},"type":"object","required":["password"],"title":"Body_admin_login_api_admin_login_post"},"Body_analyze_image_endpoint_api_vlm_analyze_post":{"properties":{"prompt":{"type":"string","title":"Prompt"},"image":{"type":"string","contentMediaType":"application/octet-stream","title":"Image"}},"type":"object","required":["prompt","image"],"title":"Body_analyze_image_endpoint_api_vlm_analyze_post"},"Body_channel_medley_endpoint_api_media_audio_channel_medley_post":{"properties":{"channel":{"type":"string","title":"Channel"},"topic":{"type":"string","title":"Topic","default":""}},"type":"object","required":["channel"],"title":"Body_channel_medley_endpoint_api_media_audio_channel_medley_post"},"Body_chat_stream_api_chat_stream_post":{"properties":{"session_id":{"type":"string","title":"Session Id"},"message":{"type":"string","title":"Message"},"email":{"type":"string","title":"Email"},"custom_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom System Prompt"}},"type":"object","required":["session_id","message","email"],"title":"Body_chat_stream_api_chat_stream_post"},"Body_control_image_endpoint_api_media_image_control_post":{"properties":{"prompt":{"type":"string","title":"Prompt"},"control_type":{"type":"string","title":"Control Type","default":"canny"},"strength":{"type":"number","title":"Strength","default":0.7},"control_image":{"type":"string","contentMediaType":"application/octet-stream","title":"Control Image"}},"type":"object","required":["prompt","control_image"],"title":"Body_control_image_endpoint_api_media_image_control_post"},"Body_create_media_job_api_media_studio_jobs_post":{"properties":{"operation":{"type":"string","title":"Operation"},"params":{"type":"string","title":"Params","default":"{}"},"files":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Files"}},"type":"object","required":["operation"],"title":"Body_create_media_job_api_media_studio_jobs_post"},"Body_create_session_api_chat_sessions_post":{"properties":{"email":{"type":"string","title":"Email"},"title":{"type":"string","title":"Title","default":"New Chat"}},"type":"object","required":["email"],"title":"Body_create_session_api_chat_sessions_post"},"Body_create_token_api_tokens_create_post":{"properties":{"label":{"type":"string","title":"Label"}},"type":"object","required":["label"],"title":"Body_create_token_api_tokens_create_post"},"Body_edit_image_endpoint_api_media_image_edit_post":{"properties":{"prompt":{"type":"string","title":"Prompt"},"image":{"type":"string","contentMediaType":"application/octet-stream","title":"Image"}},"type":"object","required":["prompt","image"],"title":"Body_edit_image_endpoint_api_media_image_edit_post"},"Body_edit_video_endpoint_api_media_video_edit_post":{"properties":{"prompt":{"type":"string","title":"Prompt","default":""},"video":{"type":"string","contentMediaType":"application/octet-stream","title":"Video"},"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"}},"type":"object","required":["video"],"title":"Body_edit_video_endpoint_api_media_video_edit_post"},"Body_gallery_upload_endpoint_api_gallery_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_gallery_upload_endpoint_api_gallery_upload_post"},"Body_generate_image_endpoint_api_media_image_post":{"properties":{"prompt":{"type":"string","title":"Prompt"},"workflow":{"type":"string","title":"Workflow","default":"zimage_turbo"}},"type":"object","required":["prompt"],"title":"Body_generate_image_endpoint_api_media_image_post"},"Body_generate_music_endpoint_api_media_music_post":{"properties":{"prompt":{"type":"string","title":"Prompt"},"duration":{"type":"integer","title":"Duration","default":10}},"type":"object","required":["prompt"],"title":"Body_generate_music_endpoint_api_media_music_post"},"Body_generate_ppt_endpoint_api_ppt_generate_post":{"properties":{"topic":{"type":"string","title":"Topic"}},"type":"object","required":["topic"],"title":"Body_generate_ppt_endpoint_api_ppt_generate_post"},"Body_generate_tts_endpoint_api_media_tts_post":{"properties":{"text":{"type":"string","title":"Text"},"ref_audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Ref Audio"},"ref_text":{"type":"string","title":"Ref Text","default":""}},"type":"object","required":["text"],"title":"Body_generate_tts_endpoint_api_media_tts_post"},"Body_generate_video_endpoint_api_media_video_gen_post":{"properties":{"prompt":{"type":"string","title":"Prompt"},"duration":{"type":"integer","title":"Duration","default":30},"base_image":{"type":"string","contentMediaType":"application/octet-stream","title":"Base Image"}},"type":"object","required":["prompt","base_image"],"title":"Body_generate_video_endpoint_api_media_video_gen_post"},"Body_inpaint_image_endpoint_api_media_image_inpaint_post":{"properties":{"prompt":{"type":"string","title":"Prompt"},"image":{"type":"string","contentMediaType":"application/octet-stream","title":"Image"},"mask":{"type":"string","contentMediaType":"application/octet-stream","title":"Mask"}},"type":"object","required":["prompt","image","mask"],"title":"Body_inpaint_image_endpoint_api_media_image_inpaint_post"},"Body_multimodal_execute_endpoint_api_multimodal_execute_post":{"properties":{"instruction":{"type":"string","title":"Instruction"},"quality":{"type":"string","title":"Quality","default":"standard"},"preferred_voice_provider":{"type":"string","title":"Preferred Voice Provider","default":"auto"},"preferred_voice":{"type":"string","title":"Preferred Voice","default":"default"},"files":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Files"},"dry_run":{"type":"boolean","title":"Dry Run","default":false}},"type":"object","required":["instruction"],"title":"Body_multimodal_execute_endpoint_api_multimodal_execute_post"},"Body_office_upload_api_office_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_office_upload_api_office_upload_post"},"Body_sermon_shorts_endpoint_api_media_video_sermon_shorts_post":{"properties":{"source":{"type":"string","title":"Source"},"language":{"type":"string","title":"Language","default":"ko"}},"type":"object","required":["source"],"title":"Body_sermon_shorts_endpoint_api_media_video_sermon_shorts_post"},"Body_stt_endpoint_api_audio_stt_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"}},"type":"object","required":["audio"],"title":"Body_stt_endpoint_api_audio_stt_post"},"Body_stt_sync_endpoint_api_audio_stt_sync_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"}},"type":"object","required":["audio"],"title":"Body_stt_sync_endpoint_api_audio_stt_sync_post"},"Body_update_session_title_api_chat_sessions__session_id__title_post":{"properties":{"title":{"type":"string","title":"Title"}},"type":"object","required":["title"],"title":"Body_update_session_title_api_chat_sessions__session_id__title_post"},"Body_upload_document_api_chat_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"email":{"type":"string","title":"Email"}},"type":"object","required":["file","email"],"title":"Body_upload_document_api_chat_upload_post"},"Body_upload_file_endpoint_api_files_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_endpoint_api_files_upload_post"},"Body_upload_photo_photos_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_photo_photos_upload_post"},"Body_video_analyze_endpoint_api_media_video_analyze_post":{"properties":{"prompt":{"type":"string","title":"Prompt","default":""},"video":{"type":"string","contentMediaType":"application/octet-stream","title":"Video"}},"type":"object","required":["video"],"title":"Body_video_analyze_endpoint_api_media_video_analyze_post"},"Body_video_shorts_endpoint_api_media_video_shorts_post":{"properties":{"prompt":{"type":"string","title":"Prompt","default":""},"video":{"type":"string","contentMediaType":"application/octet-stream","title":"Video"}},"type":"object","required":["video"],"title":"Body_video_shorts_endpoint_api_media_video_shorts_post"},"ChatRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"system_prompt":{"type":"string","title":"System Prompt","default":"You are a helpful AI assistant running on DGX Spark."},"history":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"History","default":[]}},"type":"object","required":["prompt"],"title":"ChatRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PromptRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"history":{"items":{},"type":"array","title":"History","default":[]},"quality":{"type":"string","title":"Quality","default":"standard"}},"type":"object","required":["prompt"],"title":"PromptRequest"},"PromptVideoRequest":{"properties":{"prompt":{"type":"string","maxLength":4000,"minLength":3,"title":"Prompt"},"duration":{"type":"integer","maximum":300.0,"minimum":10.0,"title":"Duration","default":180},"aspect_ratio":{"type":"string","pattern":"^(16:9|9:16|1:1)$","title":"Aspect Ratio","default":"16:9"},"clip_seconds":{"type":"integer","maximum":15.0,"minimum":5.0,"title":"Clip Seconds","default":5}},"type":"object","required":["prompt"],"title":"PromptVideoRequest"},"TranscriptSegment":{"properties":{"start":{"type":"number","title":"Start","description":"시작 시간(초)"},"end":{"type":"number","title":"End","description":"종료 시간(초)"},"text":{"type":"string","title":"Text","description":"대본 텍스트"}},"type":"object","required":["start","end","text"],"title":"TranscriptSegment"},"VOCPostRequest":{"properties":{"title":{"type":"string","maxLength":200,"minLength":2,"title":"Title","description":"Title of VOC / feature proposal / bug report"},"content":{"type":"string","minLength":5,"title":"Content","description":"Detailed description of the requirement"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Category: feature_request, bug_fix, ui_ux, performance, db_stability, system","default":"feature_request"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"AI Agent ID if submitted by an AI Agent"},"author_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Email","description":"User email if submitted by a human"}},"type":"object","required":["title","content"],"title":"VOCPostRequest"},"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"},"YouTubeRecordDetailResponse":{"properties":{"video_id":{"type":"string","title":"Video Id","description":"YouTube 비디오 ID"},"title":{"type":"string","title":"Title","description":"영상 제목"},"youtube_url":{"type":"string","title":"Youtube Url","description":"YouTube 원본 영상 URL"},"thumbnail_url":{"type":"string","title":"Thumbnail Url","description":"대표 썸네일 URL"},"transcript_plain":{"type":"string","title":"Transcript Plain","description":"전체 순수 대본 텍스트"},"transcript_segments":{"items":{"$ref":"#/components/schemas/TranscriptSegment"},"type":"array","title":"Transcript Segments","description":"타임스탬프가 포함된 대본 세그먼트 목록"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords","description":"핵심 키워드 목록"},"summary":{"type":"string","title":"Summary","description":"마크다운 형식의 AI 요약/튜토리얼 전문"},"has_summary":{"type":"boolean","title":"Has Summary","description":"요약문 존재 여부"},"summary_length":{"type":"integer","title":"Summary Length","description":"요약문 길이"},"requested_by":{"items":{"type":"string"},"type":"array","title":"Requested By","description":"요청 사용자 이메일 목록"},"qa_history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Qa History","description":"Q&A 질문/답변 기록"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"최초 생성 시각"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At","description":"최근 갱신 시각"}},"type":"object","required":["video_id","title","youtube_url","thumbnail_url","transcript_plain","summary","has_summary","summary_length"],"title":"YouTubeRecordDetailResponse"},"YouTubeRecordListItem":{"properties":{"video_id":{"type":"string","title":"Video Id","description":"YouTube 비디오 ID"},"title":{"type":"string","title":"Title","description":"영상 제목"},"youtube_url":{"type":"string","title":"Youtube Url","description":"YouTube 원본 영상 URL"},"thumbnail_url":{"type":"string","title":"Thumbnail Url","description":"대표 썸네일 URL"},"has_transcript":{"type":"boolean","title":"Has Transcript","description":"대본 보유 여부"},"transcript_length":{"type":"integer","title":"Transcript Length","description":"대본 텍스트 길이(글자수)"},"has_summary":{"type":"boolean","title":"Has Summary","description":"AI 요약본 보유 여부"},"summary_length":{"type":"integer","title":"Summary Length","description":"요약문 길이(글자수)"},"summary_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Preview","description":"요약문 미리보기 (첫 200자)"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords","description":"영상 핵심 키워드 목록"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"최초 생성 시각 (ISO 8601)"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At","description":"최근 갱신 시각 (ISO 8601)"}},"type":"object","required":["video_id","title","youtube_url","thumbnail_url","has_transcript","transcript_length","has_summary","summary_length"],"title":"YouTubeRecordListItem"},"YouTubeRecordsListResponse":{"properties":{"total":{"type":"integer","title":"Total","description":"전체 검색/필터 결과 수"},"page":{"type":"integer","title":"Page","description":"현재 페이지 번호"},"page_size":{"type":"integer","title":"Page Size","description":"페이지당 항목 수"},"total_pages":{"type":"integer","title":"Total Pages","description":"전체 페이지 수"},"items":{"items":{"$ref":"#/components/schemas/YouTubeRecordListItem"},"type":"array","title":"Items","description":"유튜브 요약 DB 목록"}},"type":"object","required":["total","page","page_size","total_pages","items"],"title":"YouTubeRecordsListResponse"},"YouTubeSummaryResponse":{"properties":{"video_id":{"type":"string","title":"Video Id","description":"YouTube 비디오 ID"},"title":{"type":"string","title":"Title","description":"영상 제목"},"youtube_url":{"type":"string","title":"Youtube Url","description":"YouTube 원본 영상 URL"},"summary":{"type":"string","title":"Summary","description":"마크다운 형식의 AI 요약 전문"},"summary_length":{"type":"integer","title":"Summary Length","description":"요약문 글자수"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords","description":"핵심 키워드 목록"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At","description":"최근 갱신 시각"}},"type":"object","required":["video_id","title","youtube_url","summary","summary_length"],"title":"YouTubeSummaryResponse"},"YouTubeTranscriptResponse":{"properties":{"video_id":{"type":"string","title":"Video Id","description":"YouTube 비디오 ID"},"title":{"type":"string","title":"Title","description":"영상 제목"},"youtube_url":{"type":"string","title":"Youtube Url","description":"YouTube 원본 영상 URL"},"transcript_plain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Plain","description":"전체 순수 대본 텍스트"},"transcript_segments":{"anyOf":[{"items":{"$ref":"#/components/schemas/TranscriptSegment"},"type":"array"},{"type":"null"}],"title":"Transcript Segments","description":"타임스탬프 세그먼트 목록"},"segment_count":{"type":"integer","title":"Segment Count","description":"대본 세그먼트 총 개수"},"character_count":{"type":"integer","title":"Character Count","description":"대본 텍스트 총 글자수"}},"type":"object","required":["video_id","title","youtube_url","segment_count","character_count"],"title":"YouTubeTranscriptResponse"},"YoutubeApiRequest":{"properties":{"url":{"type":"string","title":"Url","description":"YouTube watch URL"},"request":{"type":"string","title":"Request","description":"요약 또는 추출/분할 지시","default":"요약해줘"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"재사용할 세션 ID"},"email":{"type":"string","title":"Email","description":"요청자 식별자","default":"api"},"custom_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom System Prompt"}},"type":"object","required":["url"],"title":"YoutubeApiRequest"}}}}