{"openapi":"3.1.0","info":{"title":"Indiana Businesses Exposed","description":"Self-hosted AI gateway with file intelligence + admin UI.","version":"2.0.0"},"paths":{"/api/health/live":{"get":{"tags":["health"],"summary":"Liveness probe","operationId":"liveness_api_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health/ready":{"get":{"tags":["health"],"summary":"Readiness probe (DB + FS + migrations + secrets)","operationId":"readiness_api_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health/startup":{"get":{"tags":["health"],"summary":"Startup probe — schema present?","operationId":"startup_api_health_startup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"tags":["health"],"summary":"Deep health summary","operationId":"deep_health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/admin/me":{"get":{"tags":["auth"],"summary":"Current admin from JWT","operationId":"admin_me_api_auth_admin_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/auth/admin/login":{"post":{"tags":["auth"],"summary":"Admin login → JWT","operationId":"admin_login_api_auth_admin_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/admin/auto-token":{"post":{"tags":["auth"],"summary":"Auto-login from credentials file (loopback only)","operationId":"admin_auto_token_api_auth_admin_auto_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/app/token":{"post":{"tags":["auth"],"summary":"App credential grant → JWT","operationId":"app_token_api_auth_app_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppTokenIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/verify":{"post":{"tags":["auth"],"summary":"Verify token signature + type","operationId":"verify_api_auth_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenVerifyIn"}}},"required":true},"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":{"tags":["files"],"summary":"Upload file (multipart/form-data)","operationId":"upload_api_files_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_api_files_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"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/files/list":{"get":{"tags":["files"],"summary":"List app's files","operationId":"list_files_api_files_list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"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/files/stats":{"get":{"tags":["files"],"summary":"File usage stats","operationId":"stats_api_files_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/files/{file_id}":{"get":{"tags":["files"],"summary":"Get file metadata","operationId":"get_file_api_files__file_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["files"],"summary":"Delete file","operationId":"delete_file_api_files__file_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/chat":{"post":{"tags":["ai"],"summary":"Chat completion via Ollama","operationId":"chat_api_ai_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routes__ai__ChatIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai/generate":{"post":{"tags":["ai"],"summary":"Single-prompt generation","operationId":"generate_api_ai_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai/models":{"get":{"tags":["ai"],"summary":"List local Ollama models","operationId":"models_api_ai_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai/sessions":{"get":{"tags":["ai"],"summary":"List recent chat sessions","operationId":"sessions_api_ai_sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/sessions/{session_id}":{"get":{"tags":["ai"],"summary":"Get chat session with full history","operationId":"session_api_ai_sessions__session_id__get","security":[{"HTTPBearer":[]}],"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/search/text":{"post":{"tags":["search"],"summary":"Substring search","operationId":"text_search_api_search_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/search/semantic":{"post":{"tags":["search"],"summary":"Embedding cosine search (uses Ollama for query embedding)","operationId":"semantic_search_api_search_semantic_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/seymour/status":{"get":{"tags":["seymour-command-center"],"summary":"Status","description":"High-level status of the Seymour Command Center subsystem.","operationId":"status_api_seymour_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status Api Seymour Status Get"}}}}}}},"/api/seymour/cameras":{"get":{"tags":["seymour-command-center"],"summary":"List Cameras","operationId":"list_cameras_api_seymour_cameras_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Cameras Api Seymour Cameras Get"}}}}}}},"/api/seymour/cameras/proxy/{cam_id}":{"get":{"tags":["seymour-command-center"],"summary":"Camera Proxy","description":"Proxy the raw camera JPEG to avoid CORS in browsers.\n\nMirrors the /proxy/<cam_id> endpoint from SeymourCommandCenter v6.","operationId":"camera_proxy_api_seymour_cameras_proxy__cam_id__get","parameters":[{"name":"cam_id","in":"path","required":true,"schema":{"type":"string","title":"Cam Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/seymour/traffic":{"get":{"tags":["seymour-command-center"],"summary":"Traffic","operationId":"traffic_api_seymour_traffic_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Traffic Api Seymour Traffic Get"}}}}}}},"/api/seymour/weather":{"get":{"tags":["seymour-command-center"],"summary":"Weather","operationId":"weather_api_seymour_weather_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Weather Api Seymour Weather Get"}}}}}}},"/api/seymour/alerts":{"get":{"tags":["seymour-command-center"],"summary":"Nws Alerts","description":"Pull active NWS alerts for Indiana (area=IN).","operationId":"nws_alerts_api_seymour_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Nws Alerts Api Seymour Alerts Get"}}}}}}},"/api/seymour/flood":{"get":{"tags":["seymour-command-center"],"summary":"Flood Gauges","description":"USGS Indiana stream-gauge readings for flood awareness.","operationId":"flood_gauges_api_seymour_flood_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Flood Gauges Api Seymour Flood Get"}}}}}}},"/api/seymour/threat":{"get":{"tags":["seymour-command-center"],"summary":"Threat Score","description":"Single 0-100 threat tile: weather road status + active NWS alerts +\nflood-stage gauges + recent HIGH/MEDIUM dispatch count.","operationId":"threat_score_api_seymour_threat_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Threat Score Api Seymour Threat Get"}}}}}}},"/api/seymour/scanner/channels":{"get":{"tags":["seymour-command-center"],"summary":"Scanner Channels","operationId":"scanner_channels_api_seymour_scanner_channels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scanner Channels Api Seymour Scanner Channels Get"}}}}}}},"/api/seymour/scanner/recent":{"get":{"tags":["seymour-command-center"],"summary":"Scanner Recent","operationId":"scanner_recent_api_seymour_scanner_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scanner Recent Api Seymour Scanner Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/seymour/scanner/active":{"get":{"tags":["seymour-command-center"],"summary":"Scanner Active","operationId":"scanner_active_api_seymour_scanner_active_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scanner Active Api Seymour Scanner Active Get"}}}}}}},"/api/seymour/map/events":{"get":{"tags":["seymour-command-center"],"summary":"Map Events","operationId":"map_events_api_seymour_map_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Map Events Api Seymour Map Events Get"}}}}}}},"/api/seymour/ai/analyze":{"post":{"tags":["seymour-command-center"],"summary":"Ai Analyze","description":"Download a camera image and run Claude Vision on it.","operationId":"ai_analyze_api_seymour_ai_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Analyze Api Seymour Ai Analyze Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/seymour/ai/chat":{"post":{"tags":["seymour-command-center"],"summary":"Ai Chat","description":"Simple chat endpoint that prefers Anthropic, falls back to Gemini/Groq.","operationId":"ai_chat_api_seymour_ai_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Chat Api Seymour Ai Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/seymour/recorder/capture":{"post":{"tags":["seymour-command-center"],"summary":"Recorder Capture","description":"Pull one frame from every camera and persist to data/seymour/captures/<cam_id>/.","operationId":"recorder_capture_api_seymour_recorder_capture_post","parameters":[{"name":"keep_per_camera","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":300,"title":"Keep Per Camera"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recorder Capture Api Seymour Recorder Capture Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/seymour/recorder/frames/{cam_id}":{"get":{"tags":["seymour-command-center"],"summary":"Recorder List","description":"List recorded frames for a camera, newest first.","operationId":"recorder_list_api_seymour_recorder_frames__cam_id__get","parameters":[{"name":"cam_id","in":"path","required":true,"schema":{"type":"string","title":"Cam Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recorder List Api Seymour Recorder Frames  Cam Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/seymour/sitrep":{"get":{"tags":["seymour-command-center"],"summary":"Sitrep","description":"Derived threat level from current weather/alerts/scanner state.","operationId":"sitrep_api_seymour_sitrep_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sitrep Api Seymour Sitrep Get"}}}}}}},"/api/feeds/sources":{"get":{"tags":["feeds"],"summary":"List Sources","operationId":"list_sources_api_feeds_sources_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Sources Api Feeds Sources Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feeds/items":{"get":{"tags":["feeds"],"summary":"List Items","operationId":"list_items_api_feeds_items_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Items Api Feeds Items Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feeds/state":{"get":{"tags":["feeds"],"summary":"State","operationId":"state_api_feeds_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response State Api Feeds State Get"}}}}}}},"/api/feeds/poll":{"post":{"tags":["feeds"],"summary":"Poll","operationId":"poll_api_feeds_poll_post","parameters":[{"name":"concurrency","in":"query","required":false,"schema":{"type":"integer","maximum":32,"minimum":1,"default":8,"title":"Concurrency"}},{"name":"timeout","in":"query","required":false,"schema":{"type":"number","maximum":60,"minimum":1,"default":12.0,"title":"Timeout"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Poll Api Feeds Poll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feeds/poll/{source_id}":{"post":{"tags":["feeds"],"summary":"Poll One","operationId":"poll_one_api_feeds_poll__source_id__post","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Poll One Api Feeds Poll  Source Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feeds/social/reddit/{subreddit}":{"get":{"tags":["feeds"],"summary":"Reddit Top","operationId":"reddit_top_api_feeds_social_reddit__subreddit__get","parameters":[{"name":"subreddit","in":"path","required":true,"schema":{"type":"string","title":"Subreddit"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"window","in":"query","required":false,"schema":{"type":"string","default":"day","title":"Window"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reddit Top Api Feeds Social Reddit  Subreddit  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feeds/social/hn/{kind}":{"get":{"tags":["feeds"],"summary":"Hn","operationId":"hn_api_feeds_social_hn__kind__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Hn Api Feeds Social Hn  Kind  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feeds/social/mastodon/{instance}/{tag}":{"get":{"tags":["feeds"],"summary":"Mastodon","operationId":"mastodon_api_feeds_social_mastodon__instance___tag__get","parameters":[{"name":"instance","in":"path","required":true,"schema":{"type":"string","title":"Instance"}},{"name":"tag","in":"path","required":true,"schema":{"type":"string","title":"Tag"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":40,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mastodon Api Feeds Social Mastodon  Instance   Tag  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feeds/social/bluesky/{handle}":{"get":{"tags":["feeds"],"summary":"Bluesky","operationId":"bluesky_api_feeds_social_bluesky__handle__get","parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","title":"Handle"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":15,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bluesky Api Feeds Social Bluesky  Handle  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/tooling":{"get":{"tags":["cybersecurity-hub"],"summary":"Tooling","description":"Curated catalog of security tools, meta-repos, and training labs.\n\nRead-only static catalog (see app/sec/tooling_registry.py). Other apps in\nthe family (e.g. tcgsolutions /security-tools) render this list directly.","operationId":"tooling_api_sec_tooling_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Tooling Api Sec Tooling Get"}}}}}}},"/api/sec/threats/summary":{"get":{"tags":["cybersecurity-hub"],"summary":"Threats Summary","operationId":"threats_summary_api_sec_threats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Threats Summary Api Sec Threats Summary Get"}}}}}}},"/api/sec/threats/kev":{"get":{"tags":["cybersecurity-hub"],"summary":"Threats Kev","operationId":"threats_kev_api_sec_threats_kev_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Threats Kev Api Sec Threats Kev Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/threats/urlhaus":{"get":{"tags":["cybersecurity-hub"],"summary":"Threats Urlhaus","operationId":"threats_urlhaus_api_sec_threats_urlhaus_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Threats Urlhaus Api Sec Threats Urlhaus Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/threats/feodo":{"get":{"tags":["cybersecurity-hub"],"summary":"Threats Feodo","operationId":"threats_feodo_api_sec_threats_feodo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Threats Feodo Api Sec Threats Feodo Get"}}}}}}},"/api/sec/threats/sslbl":{"get":{"tags":["cybersecurity-hub"],"summary":"Threats Sslbl","operationId":"threats_sslbl_api_sec_threats_sslbl_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":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Threats Sslbl Api Sec Threats Sslbl Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/lookup/ip/{ip}":{"get":{"tags":["cybersecurity-hub"],"summary":"Lookup Ip","operationId":"lookup_ip_api_sec_lookup_ip__ip__get","parameters":[{"name":"ip","in":"path","required":true,"schema":{"type":"string","title":"Ip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Lookup Ip Api Sec Lookup Ip  Ip  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/lookup/domain/{domain}":{"get":{"tags":["cybersecurity-hub"],"summary":"Lookup Domain","operationId":"lookup_domain_api_sec_lookup_domain__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Lookup Domain Api Sec Lookup Domain  Domain  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/lookup/pwned":{"post":{"tags":["cybersecurity-hub"],"summary":"Lookup Pwned","operationId":"lookup_pwned_api_sec_lookup_pwned_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PwCheck"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Lookup Pwned Api Sec Lookup Pwned Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/lookup/cert/{host}":{"get":{"tags":["cybersecurity-hub"],"summary":"Lookup Cert","operationId":"lookup_cert_api_sec_lookup_cert__host__get","parameters":[{"name":"host","in":"path","required":true,"schema":{"type":"string","title":"Host"}},{"name":"port","in":"query","required":false,"schema":{"type":"integer","maximum":65535,"minimum":1,"default":443,"title":"Port"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Lookup Cert Api Sec Lookup Cert  Host  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/lookup/headers":{"get":{"tags":["cybersecurity-hub"],"summary":"Lookup Headers","operationId":"lookup_headers_api_sec_lookup_headers_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":8,"title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Lookup Headers Api Sec Lookup Headers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/monitor/ports":{"get":{"tags":["cybersecurity-hub"],"summary":"Monitor Ports","operationId":"monitor_ports_api_sec_monitor_ports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Monitor Ports Api Sec Monitor Ports Get"}}}}}}},"/api/sec/monitor/posture":{"get":{"tags":["cybersecurity-hub"],"summary":"Monitor Posture","operationId":"monitor_posture_api_sec_monitor_posture_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Monitor Posture Api Sec Monitor Posture Get"}}}}}}},"/api/sec/monitor/firewall":{"get":{"tags":["cybersecurity-hub"],"summary":"Monitor Firewall","operationId":"monitor_firewall_api_sec_monitor_firewall_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Monitor Firewall Api Sec Monitor Firewall Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec/monitor/interfaces":{"get":{"tags":["cybersecurity-hub"],"summary":"Monitor Interfaces","operationId":"monitor_interfaces_api_sec_monitor_interfaces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Monitor Interfaces Api Sec Monitor Interfaces Get"}}}}}}},"/api/automation/health":{"get":{"tags":["automation"],"summary":"Health","description":"Is Playwright + a usable Chromium present?","operationId":"health_api_automation_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api Automation Health Get"}}}}}}},"/api/automation/playwright/screenshot":{"post":{"tags":["automation"],"summary":"Playwright Screenshot","description":"Capture a PNG screenshot. Returns base64 PNG + meta.","operationId":"playwright_screenshot_api_automation_playwright_screenshot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenshotBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Playwright Screenshot Api Automation Playwright Screenshot Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/playwright/audit":{"post":{"tags":["automation"],"summary":"Playwright Audit","description":"Lightweight page audit: status, headers, console errors, perf timing,\ncounts, mixed-content scan. Useful for smoke-testing deploys.","operationId":"playwright_audit_api_automation_playwright_audit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Playwright Audit Api Automation Playwright Audit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/playwright/link-check":{"post":{"tags":["automation"],"summary":"Playwright Link Check","description":"Open the page, gather <a href>, HEAD-check each. Returns broken set.","operationId":"playwright_link_check_api_automation_playwright_link_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkCheckBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Playwright Link Check Api Automation Playwright Link Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/scan/availability":{"get":{"tags":["automation"],"summary":"Scan Availability","description":"Which CLI security tools are installed on the host?","operationId":"scan_availability_api_automation_scan_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scan Availability Api Automation Scan Availability Get"}}}}}}},"/api/automation/scan/nmap":{"post":{"tags":["automation"],"summary":"Scan Nmap","operationId":"scan_nmap_api_automation_scan_nmap_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NmapBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scan Nmap Api Automation Scan Nmap Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/scan/trivy/image":{"post":{"tags":["automation"],"summary":"Scan Trivy Image","operationId":"scan_trivy_image_api_automation_scan_trivy_image_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrivyImageBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scan Trivy Image Api Automation Scan Trivy Image Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/scan/trivy/fs":{"post":{"tags":["automation"],"summary":"Scan Trivy Fs","operationId":"scan_trivy_fs_api_automation_scan_trivy_fs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scan Trivy Fs Api Automation Scan Trivy Fs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/scan/semgrep":{"post":{"tags":["automation"],"summary":"Scan Semgrep","operationId":"scan_semgrep_api_automation_scan_semgrep_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemgrepBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scan Semgrep Api Automation Scan Semgrep Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/scan/syft":{"post":{"tags":["automation"],"summary":"Scan Syft","operationId":"scan_syft_api_automation_scan_syft_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyftBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scan Syft Api Automation Scan Syft Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/pwsh/list":{"get":{"tags":["automation"],"summary":"Pwsh List","operationId":"pwsh_list_api_automation_pwsh_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Pwsh List Api Automation Pwsh List Get"}}}}}}},"/api/automation/pwsh/run/{slug}":{"post":{"tags":["automation"],"summary":"Pwsh Run","operationId":"pwsh_run_api_automation_pwsh_run__slug__post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/PwshBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pwsh Run Api Automation Pwsh Run  Slug  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/automation/cypress/info":{"get":{"tags":["automation"],"summary":"Cypress Info","description":"Cypress is a Node service; this endpoint documents how to invoke it.\n\nThe shipped sample spec lives at server-python/automation/cypress/.\nRun with `npx cypress run --spec cypress/e2e/smoke.cy.js`.","operationId":"cypress_info_api_automation_cypress_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cypress Info Api Automation Cypress Info Get"}}}}}}},"/api/news/recent":{"get":{"tags":["news-scraper"],"summary":"Recent","description":"Latest stored articles, newest first. Optional source filter.","operationId":"recent_api_news_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recent Api News Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/news/article/{article_id}":{"get":{"tags":["news-scraper"],"summary":"Article","operationId":"article_api_news_article__article_id__get","parameters":[{"name":"article_id","in":"path","required":true,"schema":{"type":"integer","title":"Article Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Article Api News Article  Article Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/news/stats":{"get":{"tags":["news-scraper"],"summary":"Stats","operationId":"stats_api_news_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api News Stats Get"}}}}}}},"/api/news/search":{"get":{"tags":["news-scraper"],"summary":"Search","operationId":"search_api_news_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Api News Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/news/scrape/url":{"post":{"tags":["news-scraper"],"summary":"Scrape One Url","description":"Scrape a single URL on demand.","operationId":"scrape_one_url_api_news_scrape_url_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScrapeOneBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scrape One Url Api News Scrape Url Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/news/scrape/feeds":{"post":{"tags":["news-scraper"],"summary":"Scrape Feeds","description":"Trigger a feed scrape. Runs in the background; returns immediately.","operationId":"scrape_feeds_api_news_scrape_feeds_post","parameters":[{"name":"with_images","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"With Images"}},{"name":"max_per_feed","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"default":8,"title":"Max Per Feed"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scrape Feeds Api News Scrape Feeds Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/news/last-run":{"get":{"tags":["news-scraper"],"summary":"Last Run","operationId":"last_run_api_news_last_run_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Last Run Api News Last Run Get"}}}}}}},"/api/news/availability":{"get":{"tags":["news-scraper"],"summary":"Availability","description":"Is Newspaper4k installed? Reports without raising.","operationId":"availability_api_news_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Availability Api News Availability Get"}}}}}}},"/api/consciousness/ask":{"post":{"tags":["consciousness"],"summary":"Ask","operationId":"ask_api_consciousness_ask_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ask Api Consciousness Ask Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/consciousness/workspace/{session_id}":{"get":{"tags":["consciousness"],"summary":"Workspace Dump","operationId":"workspace_dump_api_consciousness_workspace__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Workspace Dump Api Consciousness Workspace  Session Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/consciousness/stats":{"get":{"tags":["consciousness"],"summary":"Stats","operationId":"stats_api_consciousness_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Consciousness Stats Get"}}}}}}},"/api/civic/indiana/mycase":{"get":{"tags":["civic-search-urls"],"summary":"Build mycase.in.gov search URL","description":"mycase.in.gov is the Indiana Judicial Branch portal. We return the URL\npre-filled with the user's query. The UI is rendered by the state.","operationId":"indiana_mycase_api_civic_indiana_mycase_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"}},{"name":"case_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Case Number"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"County"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Indiana Mycase Api Civic Indiana Mycase Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/civic/indiana/state-police":{"get":{"tags":["civic-search-urls"],"summary":"Build ISP criminal-history search URL","operationId":"indiana_isp_api_civic_indiana_state_police_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Indiana Isp Api Civic Indiana State Police Get"}}}}}}},"/api/civic/indiana/county-clerk":{"get":{"tags":["civic-search-urls"],"summary":"Build county-clerk search URL","operationId":"indiana_county_clerk_api_civic_indiana_county_clerk_get","parameters":[{"name":"county","in":"query","required":true,"schema":{"type":"string","maxLength":40,"title":"County"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Indiana County Clerk Api Civic Indiana County Clerk Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/civic/indiana/idoc-offender":{"get":{"tags":["civic-search-urls"],"summary":"Build IDOC offender lookup URL","operationId":"indiana_idoc_api_civic_indiana_idoc_offender_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"}},{"name":"doc_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Doc Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Indiana Idoc Api Civic Indiana Idoc Offender Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/civic/kentucky/aoc-fastcheck":{"get":{"tags":["civic-search-urls"],"summary":"Build AOC FastCheck URL","operationId":"kentucky_fastcheck_api_civic_kentucky_aoc_fastcheck_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Kentucky Fastcheck Api Civic Kentucky Aoc Fastcheck Get"}}}}}}},"/api/civic/kentucky/kool-offender":{"get":{"tags":["civic-search-urls"],"summary":"Build KOOL offender lookup URL","operationId":"kentucky_kool_api_civic_kentucky_kool_offender_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"}},{"name":"doc_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Doc Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Kentucky Kool Api Civic Kentucky Kool Offender Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/civic/scotus/case":{"get":{"tags":["civic-search-urls"],"summary":"Build Supreme Court case search URL","operationId":"scotus_case_api_civic_scotus_case_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scotus Case Api Civic Scotus Case Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/civic/pacer/lookup":{"get":{"tags":["civic-search-urls"],"summary":"PACER federal court records URL","operationId":"pacer_lookup_api_civic_pacer_lookup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Pacer Lookup Api Civic Pacer Lookup Get"}}}}}}},"/api/civic/federal/register":{"get":{"tags":["civic-search-urls"],"summary":"Federal Register search URL","operationId":"federal_register_api_civic_federal_register_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"term","in":"query","required":false,"schema":{"type":"string","maxLength":20,"default":"notices","title":"Term"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Federal Register Api Civic Federal Register Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/civic/federal/bills":{"get":{"tags":["civic-search-urls"],"summary":"congress.gov bill search URL","operationId":"federal_bills_api_civic_federal_bills_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"congress","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":80},{"type":"null"}],"title":"Congress"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Federal Bills Api Civic Federal Bills Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/civic/federal/sanctions":{"get":{"tags":["civic-search-urls"],"summary":"OFAC sanctions search URL","operationId":"federal_sanctions_api_civic_federal_sanctions_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Federal Sanctions Api Civic Federal Sanctions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/civic/":{"get":{"tags":["civic-search-urls"],"summary":"Civic search portal index","description":"Lists every search-URL builder this module exposes.","operationId":"index_api_civic__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Civic  Get"}}}}}}},"/api/bible/translations":{"get":{"tags":["bible"],"summary":"List known Bible translations","operationId":"translations_api_bible_translations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Translations Api Bible Translations Get"}}}}}}},"/api/bible/{translation}/{ref}":{"get":{"tags":["bible"],"summary":"Fetch a Bible passage","description":"Examples: /api/bible/kjv/john%203:16  ·  /api/bible/web/genesis%201:1-10","operationId":"passage_api_bible__translation___ref__get","parameters":[{"name":"translation","in":"path","required":true,"schema":{"type":"string","title":"Translation"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}},{"name":"verse_numbers","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Verse Numbers"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Passage Api Bible  Translation   Ref  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scotus/stats":{"get":{"tags":["scotus"],"summary":"Stats","operationId":"stats_api_scotus_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Scotus Stats Get"}}}}}}},"/api/scotus/cases":{"get":{"tags":["scotus"],"summary":"Cases","operationId":"cases_api_scotus_cases_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"issue","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Issue"}},{"name":"after_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1791},{"type":"null"}],"title":"After Year"}},{"name":"before_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1791},{"type":"null"}],"title":"Before Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":200000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cases Api Scotus Cases Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scotus/case/{case_id}":{"get":{"tags":["scotus"],"summary":"Case","operationId":"case_api_scotus_case__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Case Api Scotus Case  Case Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/uscode/titles":{"get":{"tags":["us-law"],"summary":"List all 54 US Code titles","operationId":"titles_api_uscode_titles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Titles Api Uscode Titles Get"}}}}}}},"/api/uscode/title/{n}/info":{"get":{"tags":["us-law"],"summary":"Title metadata + official download URLs","operationId":"title_info_api_uscode_title__n__info_get","parameters":[{"name":"n","in":"path","required":true,"schema":{"type":"integer","title":"N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Title Info Api Uscode Title  N  Info Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/uscode/constitution":{"get":{"tags":["us-law"],"summary":"Full Constitution + amendments index","operationId":"constitution_api_uscode_constitution_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Constitution Api Uscode Constitution Get"}}}}}}},"/api/uscode/constitution/{section}":{"get":{"tags":["us-law"],"summary":"Single article or amendment","operationId":"constitution_section_api_uscode_constitution__section__get","parameters":[{"name":"section","in":"path","required":true,"schema":{"type":"string","title":"Section"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Constitution Section Api Uscode Constitution  Section  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/uscode/":{"get":{"tags":["us-law"],"summary":"US Code + Constitution endpoint index","operationId":"index_api_uscode__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Uscode  Get"}}}}}}},"/api/email/availability":{"get":{"tags":["email-watcher"],"summary":"IMAP creds + library check","operationId":"availability_api_email_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Availability Api Email Availability Get"}}}}}}},"/api/email/poll":{"post":{"tags":["email-watcher"],"summary":"Poll IMAP inbox once","operationId":"poll_api_email_poll_post","parameters":[{"name":"folder","in":"query","required":false,"schema":{"type":"string","maxLength":80,"default":"INBOX","title":"Folder"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Poll Api Email Poll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/recent":{"get":{"tags":["email-watcher"],"summary":"List recently stored email headers","operationId":"recent_api_email_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":25,"title":"Limit"}},{"name":"from_addr","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"From Addr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recent Api Email Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/stats":{"get":{"tags":["email-watcher"],"summary":"Stats","operationId":"stats_api_email_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Email Stats Get"}}}}}}},"/api/fb/availability":{"get":{"tags":["fb-watcher"],"summary":"Availability","operationId":"availability_api_fb_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Availability Api Fb Availability Get"}}}}}}},"/api/fb/snapshot":{"post":{"tags":["fb-watcher"],"summary":"Capture one snapshot now","operationId":"snapshot_api_fb_snapshot_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Snapshot Api Fb Snapshot Post"}}}}}}},"/api/fb/changes":{"get":{"tags":["fb-watcher"],"summary":"Changes","description":"Most recent snapshots — each one indicates a *change* (duplicates aren't stored).","operationId":"changes_api_fb_changes_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Changes Api Fb Changes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fb/stats":{"get":{"tags":["fb-watcher"],"summary":"Stats","operationId":"stats_api_fb_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Fb Stats Get"}}}}}}},"/api/emergency/pulsepoint":{"get":{"tags":["emergency-cad"],"summary":"PulsePoint agency embed URL","operationId":"pulsepoint_api_emergency_pulsepoint_get","parameters":[{"name":"agency_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Agency Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pulsepoint Api Emergency Pulsepoint Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/emergency/scanner-radio":{"get":{"tags":["emergency-cad"],"summary":"Public scanner-radio listings","operationId":"scanner_radio_api_emergency_scanner_radio_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"State"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"County"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scanner Radio Api Emergency Scanner Radio Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/emergency/indiana/jackson":{"get":{"tags":["emergency-cad"],"summary":"Jackson County, IN — ESD links","operationId":"in_jackson_api_emergency_indiana_jackson_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response In Jackson Api Emergency Indiana Jackson Get"}}}}}}},"/api/emergency/":{"get":{"tags":["emergency-cad"],"summary":"Emergency CAD endpoint index","operationId":"index_api_emergency__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Emergency  Get"}}}}}}},"/api/history/":{"get":{"tags":["historical-events"],"summary":"List or search historical events","operationId":"list_events_api_history__get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Kind"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Region"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"after_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2200,"minimum":0},{"type":"null"}],"title":"After Year"}},{"name":"before_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2200,"minimum":0},{"type":"null"}],"title":"Before Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"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":{"type":"object","additionalProperties":true,"title":"Response List Events Api History  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["historical-events"],"summary":"Add a historical event (admin)","operationId":"add_event_api_history__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Event Api History  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/{event_id}":{"get":{"tags":["historical-events"],"summary":"Get Event","operationId":"get_event_api_history__event_id__get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Event Api History  Event Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/stats/summary":{"get":{"tags":["historical-events"],"summary":"Stats","operationId":"stats_api_history_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api History Stats Summary Get"}}}}}}},"/api/jails/":{"get":{"tags":["indiana-jails"],"summary":"Index","operationId":"index_api_jails__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Jails  Get"}}}}}}},"/api/jails/recent":{"get":{"tags":["indiana-jails"],"summary":"Recent","operationId":"recent_api_jails_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recent Api Jails Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jails/stats":{"get":{"tags":["indiana-jails"],"summary":"Stats","operationId":"stats_api_jails_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Jails Stats Get"}}}}}}},"/api/jails/search":{"get":{"tags":["indiana-jails"],"summary":"Build inmate-search URL for VINELink + sheriff page","description":"VINELink is the national-standard inmate-lookup. We return the\npre-filled search URL the user clicks through to.","operationId":"search_api_jails_search_get","parameters":[{"name":"county","in":"query","required":true,"schema":{"type":"string","maxLength":40,"title":"County"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Api Jails Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jails/{county}":{"get":{"tags":["indiana-jails"],"summary":"Stored roster for one county","operationId":"by_county_api_jails__county__get","parameters":[{"name":"county","in":"path","required":true,"schema":{"type":"string","title":"County"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response By County Api Jails  County  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jails/scrape/{county}":{"post":{"tags":["indiana-jails"],"summary":"Scrape","operationId":"scrape_api_jails_scrape__county__post","parameters":[{"name":"county","in":"path","required":true,"schema":{"type":"string","title":"County"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scrape Api Jails Scrape  County  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jails/runs/{county}":{"get":{"tags":["indiana-jails"],"summary":"Recent scrape attempts for a county","operationId":"runs_api_jails_runs__county__get","parameters":[{"name":"county","in":"path","required":true,"schema":{"type":"string","title":"County"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Runs Api Jails Runs  County  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/idoh/":{"get":{"tags":["indiana-idoh"],"summary":"IDOH index","operationId":"index_api_idoh__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Idoh  Get"}}}}}}},"/api/idoh/overdose/latest":{"get":{"tags":["indiana-idoh"],"summary":"Latest IDOH statewide overdose snapshot","operationId":"overdose_latest_api_idoh_overdose_latest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Overdose Latest Api Idoh Overdose Latest Get"}}}}}}},"/api/idoh/overdose/historical":{"get":{"tags":["indiana-idoh"],"summary":"Indiana statewide OD by year","operationId":"overdose_historical_api_idoh_overdose_historical_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Overdose Historical Api Idoh Overdose Historical Get"}}}}}}},"/api/trump/availability":{"get":{"tags":["truth-social"],"summary":"Availability","operationId":"availability_api_trump_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Availability Api Trump Availability Get"}}}}}}},"/api/trump/recent":{"get":{"tags":["truth-social"],"summary":"Recent","operationId":"recent_api_trump_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recent Api Trump Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/trump/scrape":{"post":{"tags":["truth-social"],"summary":"Trigger a Truth Social pull","operationId":"scrape_api_trump_scrape_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scrape Api Trump Scrape Post"}}}}}}},"/api/trump/stats":{"get":{"tags":["truth-social"],"summary":"Stats","operationId":"stats_api_trump_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Trump Stats Get"}}}}}}},"/api/eia/gas/national":{"get":{"tags":["eia-gas"],"summary":"EIA weekly retail gasoline — national","description":"Series PET.EMM_EPMR_PTE_NUS_DPG (national average regular gasoline).","operationId":"gas_national_api_eia_gas_national_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gas National Api Eia Gas National Get"}}}}}}},"/api/eia/gas/midwest":{"get":{"tags":["eia-gas"],"summary":"EIA weekly retail gasoline — Midwest","description":"Midwest region — best public proxy for Indiana retail gas.","operationId":"gas_midwest_api_eia_gas_midwest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gas Midwest Api Eia Gas Midwest Get"}}}}}}},"/api/eia/availability":{"get":{"tags":["eia-gas"],"summary":"Availability","operationId":"availability_api_eia_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Availability Api Eia Availability Get"}}}}}}},"/api/workforce/availability":{"get":{"tags":["ai-workforce"],"summary":"Availability","operationId":"availability_api_workforce_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Availability Api Workforce Availability Get"}}}}}}},"/api/workforce/drafts":{"post":{"tags":["ai-workforce"],"summary":"Create Draft","operationId":"create_draft_api_workforce_drafts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routes__workforce__DraftIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Draft Api Workforce Drafts Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ai-workforce"],"summary":"List Drafts","operationId":"list_drafts_api_workforce_drafts_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Status"}},{"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":{"type":"object","additionalProperties":true,"title":"Response List Drafts Api Workforce Drafts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workforce/drafts/{draft_id}/approve":{"post":{"tags":["ai-workforce"],"summary":"Approve Draft","operationId":"approve_draft_api_workforce_drafts__draft_id__approve_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}},{"name":"by","in":"query","required":true,"schema":{"type":"string","maxLength":80,"title":"By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Draft Api Workforce Drafts  Draft Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workforce/drafts/{draft_id}/publish":{"post":{"tags":["ai-workforce"],"summary":"Publish Draft","description":"Publish an approved draft. Dry-runs unless any publisher creds are set.","operationId":"publish_draft_api_workforce_drafts__draft_id__publish_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Publish Draft Api Workforce Drafts  Draft Id  Publish Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workforce/stats":{"get":{"tags":["ai-workforce"],"summary":"Stats","operationId":"stats_api_workforce_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Workforce Stats Get"}}}}}}},"/api/vision/availability":{"get":{"tags":["vision-security"],"summary":"Availability","operationId":"availability_api_vision_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Availability Api Vision Availability Get"}}}}}}},"/api/vision/known-faces":{"get":{"tags":["vision-security"],"summary":"List Known","operationId":"list_known_api_vision_known_faces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Known Api Vision Known Faces Get"}}}}}}},"/api/vision/detections":{"post":{"tags":["vision-security"],"summary":"Worker-to-server detection ingestion","description":"External user-context worker POSTs detection rows here.\n\nUse this when the FastAPI service can't access the camera directly\n(Windows Session 0 isolation under LocalSystem). The vision_worker.py\nscript ships in server-python/automation/vision/.","operationId":"ingest_detection_api_vision_detections_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetectionIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Detection Api Vision Detections Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vision/detections/recent":{"get":{"tags":["vision-security"],"summary":"Recent Detections","operationId":"recent_detections_api_vision_detections_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recent Detections Api Vision Detections Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vision/stats":{"get":{"tags":["vision-security"],"summary":"Stats","operationId":"stats_api_vision_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Vision Stats Get"}}}}}}},"/api/vision/start":{"post":{"tags":["vision-security"],"summary":"Start vision-security loop","description":"Start the capture loop in background. opencv + ultralytics + numpy\nare required. deepface is optional (face-recognition mode). Returns 503\nwith install command if required libs missing; 409 if already running.","operationId":"start_api_vision_start_post","parameters":[{"name":"camera_index","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Camera Index"}},{"name":"fps","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Fps"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Start Api Vision Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vision/stop":{"post":{"tags":["vision-security"],"summary":"Stop the capture loop","operationId":"stop_api_vision_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stop Api Vision Stop Post"}}}}}}},"/api/vision/loop-status":{"get":{"tags":["vision-security"],"summary":"Current capture-loop state","operationId":"loop_status_api_vision_loop_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Loop Status Api Vision Loop Status Get"}}}}}}},"/api/vision/enroll-face/upload":{"post":{"tags":["vision-security"],"summary":"Enroll a face from an image upload","description":"Upload a face photo. Server detects the face with a Haar cascade,\ncrops it, saves the crop to vision_faces/, and records the enrollment.\nIdentity_status: 'authorized', 'banned', or 'watch'.","operationId":"enroll_face_upload_api_vision_enroll_face_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_enroll_face_upload_api_vision_enroll_face_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Enroll Face Upload Api Vision Enroll Face Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vision/known-faces/{face_id}/image":{"get":{"tags":["vision-security"],"summary":"Return the enrolled face crop","operationId":"known_face_image_api_vision_known_faces__face_id__image_get","parameters":[{"name":"face_id","in":"path","required":true,"schema":{"type":"integer","title":"Face Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vision/known-faces/{face_id}":{"delete":{"tags":["vision-security"],"summary":"Remove an enrolled face","operationId":"delete_known_face_api_vision_known_faces__face_id__delete","parameters":[{"name":"face_id","in":"path","required":true,"schema":{"type":"integer","title":"Face Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Known Face Api Vision Known Faces  Face Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vision/snapshot/{ts_int}":{"get":{"tags":["vision-security"],"summary":"Return a detection snapshot by ts (int seconds)","description":"Detections store snapshot_path like vision_snapshots/detect-<ts>.jpg.\nThis endpoint returns the file by integer ts so the UI can <img src=...>.","operationId":"get_snapshot_api_vision_snapshot__ts_int__get","parameters":[{"name":"ts_int","in":"path","required":true,"schema":{"type":"integer","title":"Ts Int"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats/all":{"get":{"tags":["aggregate-stats"],"summary":"Aggregate stats from every backbone endpoint","description":"Single fetch — returns counts/totals from every major endpoint.\n\nEach subkey holds the upstream payload (or {error} if it failed). The\n`summary` block at top extracts the most-requested numbers for fast UI.","operationId":"stats_all_api_stats_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats All Api Stats All Get"}}}}}}},"/api/voice/capabilities":{"get":{"tags":["voice"],"summary":"Capabilities","description":"Report which voice pipelines are available on this server.","operationId":"capabilities_api_voice_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Capabilities Api Voice Capabilities Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/voice/stt":{"post":{"tags":["voice"],"summary":"Server Stt","description":"Optional server-side STT via whisper.\n\nAccepts audio file upload (wav/ogg/mp3/flac). Returns a transcript.\nOnly works if `pip install openai-whisper` has been run locally.","operationId":"server_stt_api_voice_stt_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"type":"string","default":"base","title":"Model"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_server_stt_api_voice_stt_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Server Stt Api Voice Stt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/ai/ask":{"post":{"tags":["public-intel"],"summary":"Ollama completion (CORS-gated, rate-limited)","operationId":"public_ai_ask_api_public_ai_ask_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAskIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Ai Ask Api Public Ai Ask Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/stats":{"get":{"tags":["public-intel"],"summary":"Stats","description":"Numbers for the landing-page hero strip. Always honest; may be zero on a fresh install.","operationId":"stats_api_public_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Public Stats Get"}}}}}}},"/api/public/findings":{"get":{"tags":["public-intel"],"summary":"Findings","operationId":"findings_api_public_findings_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":6,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Findings Api Public Findings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/findings/{slug}":{"get":{"tags":["public-intel"],"summary":"Finding Detail","operationId":"finding_detail_api_public_findings__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Finding Detail Api Public Findings  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/articles":{"get":{"tags":["public-intel"],"summary":"Aggregated news feed (HN, Reddit, RSS, etc.)","description":"Read-only feed of articles ingested into feed_items.\n\nFilters: category (e.g. tech/news/business/security), region (e.g. indiana),\nsource (substring match on source_name), q (substring match on title).","operationId":"public_articles_api_public_articles_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Category"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Region"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Source"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"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":{"type":"object","additionalProperties":true,"title":"Response Public Articles Api Public Articles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/articles/categories":{"get":{"tags":["public-intel"],"summary":"List article categories with counts","operationId":"public_articles_categories_api_public_articles_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Articles Categories Api Public Articles Categories Get"}}}}}}},"/api/public/device-ping":{"post":{"tags":["public-intel"],"summary":"Record a device location breadcrumb (CORS-gated)","operationId":"public_device_ping_api_public_device_ping_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePingIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Device Ping Api Public Device Ping Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/search":{"get":{"tags":["public-intel"],"summary":"Search","operationId":"search_api_public_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Api Public Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/tips":{"post":{"tags":["public-intel"],"summary":"Submit Tip","operationId":"submit_tip_api_public_tips_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TipIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Submit Tip Api Public Tips Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/subscribe":{"post":{"tags":["public-intel"],"summary":"Subscribe","operationId":"subscribe_api_public_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Subscribe Api Public Subscribe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nevaeh/pings":{"get":{"tags":["admin:nevaeh"],"summary":"Recent device-location pings","operationId":"admin_recent_pings_api_admin_nevaeh_pings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"site","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Site"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Recent Pings Api Admin Nevaeh Pings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nevaeh/rtdb/{rtdb_path}":{"get":{"tags":["admin:nevaeh"],"summary":"Read babysitter-b322c RTDB via legacy secret (admin proxy)","description":"Server-side RTDB proxy. Uses the legacy DB secret on the server so the\nadmin browser can read without baking the secret into client JS.","operationId":"admin_rtdb_read_api_admin_nevaeh_rtdb__rtdb_path__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"rtdb_path","in":"path","required":true,"schema":{"type":"string","title":"Rtdb Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Rtdb Read Api Admin Nevaeh Rtdb  Rtdb Path  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nevaeh/sessions":{"get":{"tags":["admin:nevaeh"],"summary":"Distinct sessions seen recently with last-known coords","operationId":"admin_sessions_api_admin_nevaeh_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Sessions Api Admin Nevaeh Sessions Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/public/chat":{"post":{"tags":["public-ai"],"summary":"Chat completion (tcg-assistant)","operationId":"public_chat_api_public_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routes__public_ai__ChatIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Chat Api Public Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/summarize":{"post":{"tags":["public-ai"],"summary":"Website / log summarization (tcg-summarizer)","operationId":"public_summarize_api_public_summarize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizeIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Summarize Api Public Summarize Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/code":{"post":{"tags":["public-ai"],"summary":"Code help (tcg-coder or tcg-debugger)","operationId":"public_code_api_public_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Code Api Public Code Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/vision":{"post":{"tags":["public-ai"],"summary":"Lightweight image analysis (tcg-vision / moondream)","operationId":"public_vision_api_public_vision_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_public_vision_api_public_vision_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Vision Api Public Vision Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/vision-deep":{"post":{"tags":["public-ai"],"summary":"Deeper scene reasoning (gemma3:4b)","operationId":"public_vision_deep_api_public_vision_deep_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_public_vision_deep_api_public_vision_deep_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Vision Deep Api Public Vision Deep Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/ai-routes":{"get":{"tags":["public-ai"],"summary":"Discover available public-AI routes + which model each uses","description":"Lets sites discover the gateway shape without reading openapi.json.","operationId":"list_ai_routes_api_public_ai_routes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Ai Routes Api Public Ai Routes Get"}}}}}}},"/api/admin/agent/state":{"get":{"tags":["admin:agent"],"summary":"Current observation + recent decisions + policy","description":"One-shot snapshot for the dashboard. Includes a fresh observation\n(read-only — no executor invoked) plus the policy + recent history.","operationId":"state_api_admin_agent_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response State Api Admin Agent State Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/agent/tick":{"post":{"tags":["admin:agent"],"summary":"Run one Observer → Analyst → Policy → Executor cycle","description":"Manual cycle. Returns the full record (observation + decision + execution).","operationId":"tick_api_admin_agent_tick_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Tick Api Admin Agent Tick Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/agent/decisions":{"get":{"tags":["admin:agent"],"summary":"Tail the agent_decisions.jsonl audit log","operationId":"decisions_api_admin_agent_decisions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Decisions Api Admin Agent Decisions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agent/approvals":{"get":{"tags":["admin:agent"],"summary":"List approval-required actions still pending","operationId":"approvals_api_admin_agent_approvals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Approvals Api Admin Agent Approvals Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/agent/approvals/{approval_id}/approve":{"post":{"tags":["admin:agent"],"summary":"Approve + execute a queued action","operationId":"approve_api_admin_agent_approvals__approval_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","title":"Approval Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Api Admin Agent Approvals  Approval Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agent/rebuild-model/{name}":{"post":{"tags":["admin:agent"],"summary":"Rebuild a tcg-* custom model from its Modelfile","description":"Run `ollama create <name> -f modelfiles/<name>.Modelfile`. Allowlist-gated.","operationId":"rebuild_model_api_admin_agent_rebuild_model__name__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rebuild Model Api Admin Agent Rebuild Model  Name  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agent/rebuild-model":{"get":{"tags":["admin:agent"],"summary":"List models that can be rebuilt + their Modelfile presence","operationId":"rebuild_model_status_api_admin_agent_rebuild_model_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Rebuild Model Status Api Admin Agent Rebuild Model Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/babysitter/contact-gary":{"post":{"tags":["babysitter"],"summary":"Sitter sends Gary a direct message","description":"Public — CORS-gated to amickbabysitting.netlify.app + tunnel origins.","operationId":"contact_gary_api_babysitter_contact_gary_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Contact Gary Api Babysitter Contact Gary Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nevaeh/sitter-messages":{"get":{"tags":["admin:nevaeh"],"summary":"Recent babysitter→Gary messages","operationId":"list_messages_api_admin_nevaeh_sitter_messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Messages Api Admin Nevaeh Sitter Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nevaeh/sitter-messages/{msg_id}/read":{"post":{"tags":["admin:nevaeh"],"summary":"Mark a sitter message as read","operationId":"mark_read_api_admin_nevaeh_sitter_messages__msg_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"msg_id","in":"path","required":true,"schema":{"type":"string","title":"Msg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mark Read Api Admin Nevaeh Sitter Messages  Msg Id  Read Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nevaeh/sitter-messages/stats":{"get":{"tags":["admin:nevaeh"],"summary":"Counts by urgency + read state","operationId":"message_stats_api_admin_nevaeh_sitter_messages_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Message Stats Api Admin Nevaeh Sitter Messages Stats Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/aydens/sync/push":{"post":{"tags":["aydens-page"],"summary":"Push a backup blob (replaces previous for this user+kind)","operationId":"sync_push_api_aydens_sync_push_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sync Push Api Aydens Sync Push Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/sync/pull":{"get":{"tags":["aydens-page"],"summary":"Pull the latest backup blob for a user+kind","operationId":"sync_pull_api_aydens_sync_pull_get","parameters":[{"name":"user","in":"query","required":true,"schema":{"type":"string","title":"User"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"default","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Pull Api Aydens Sync Pull Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/sync/list":{"get":{"tags":["aydens-page"],"summary":"List backup blob kinds for a user (no payloads)","operationId":"sync_list_api_aydens_sync_list_get","parameters":[{"name":"user","in":"query","required":true,"schema":{"type":"string","title":"User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync List Api Aydens Sync List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/sync/{user}/{kind}":{"delete":{"tags":["aydens-page"],"summary":"Delete one backup blob","operationId":"sync_delete_api_aydens_sync__user___kind__delete","parameters":[{"name":"user","in":"path","required":true,"schema":{"type":"string","title":"User"}},{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Delete Api Aydens Sync  User   Kind  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/chat-log":{"post":{"tags":["aydens-page"],"summary":"Log a kid AI chat + run abuse check + notify Gary on flag","operationId":"chat_log_api_aydens_chat_log_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatLogIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Chat Log Api Aydens Chat Log Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/chat-log/list":{"get":{"tags":["aydens-page"],"summary":"List recent Ayden chats (admin only via X-Service-Token or origin)","operationId":"chat_log_list_api_aydens_chat_log_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"flagged_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Flagged Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chat Log List Api Aydens Chat Log List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/chat-log/{row_id}":{"delete":{"tags":["aydens-page"],"summary":"Delete one chat log entry (admin)","operationId":"chat_log_delete_api_aydens_chat_log__row_id__delete","parameters":[{"name":"row_id","in":"path","required":true,"schema":{"type":"integer","title":"Row Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chat Log Delete Api Aydens Chat Log  Row Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/errors":{"post":{"tags":["aydens-page"],"summary":"Browser-side error reporter — logs + notifies Gary on first sighting","operationId":"browser_error_api_aydens_errors_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserErrorIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Browser Error Api Aydens Errors Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/errors/list":{"get":{"tags":["aydens-page"],"summary":"List recent browser errors","operationId":"browser_errors_list_api_aydens_errors_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Browser Errors List Api Aydens Errors List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aydens/health":{"get":{"tags":["aydens-page"],"summary":"Aydens-page integration health probe","operationId":"aydens_health_api_aydens_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Aydens Health Api Aydens Health Get"}}}}}}},"/api/proxy/ipify":{"get":{"tags":["proxy"],"summary":"Public IP lookup (proxy for api.ipify.org)","operationId":"ipify_api_proxy_ipify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ipify Api Proxy Ipify Get"}}}}}}},"/api/proxy/weather":{"get":{"tags":["proxy"],"summary":"Current weather (proxy for open-meteo)","operationId":"weather_api_proxy_weather_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","maxLength":64,"default":"America/Indiana/Indianapolis","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Weather Api Proxy Weather Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/iss":{"get":{"tags":["proxy"],"summary":"ISS current position (proxy for wheretheiss.at)","operationId":"iss_api_proxy_iss_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Iss Api Proxy Iss Get"}}}}}}},"/api/proxy/maclookup/{mac}":{"get":{"tags":["proxy"],"summary":"MAC OUI lookup (proxy for maclookup.app)","operationId":"maclookup_api_proxy_maclookup__mac__get","parameters":[{"name":"mac","in":"path","required":true,"schema":{"type":"string","title":"Mac"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Maclookup Api Proxy Maclookup  Mac  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/ipgeo/{ip}":{"get":{"tags":["proxy"],"summary":"IP geolocation (proxy for ipwho.is)","operationId":"ipgeo_api_proxy_ipgeo__ip__get","parameters":[{"name":"ip","in":"path","required":true,"schema":{"type":"string","title":"Ip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ipgeo Api Proxy Ipgeo  Ip  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/launches":{"get":{"tags":["proxy"],"summary":"Upcoming space launches (proxy for thespacedevs)","operationId":"launches_api_proxy_launches_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Launches Api Proxy Launches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/hn/topstories":{"get":{"tags":["proxy"],"summary":"Hacker News top story IDs","operationId":"hn_top_api_proxy_hn_topstories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Hn Top Api Proxy Hn Topstories Get"}}}}}}},"/api/proxy/hn/item/{item_id}":{"get":{"tags":["proxy"],"summary":"Hacker News item by id","operationId":"hn_item_api_proxy_hn_item__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Hn Item Api Proxy Hn Item  Item Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/reddit/{subreddit}":{"get":{"tags":["proxy"],"summary":"Reddit subreddit JSON listing (default hot)","operationId":"reddit_api_proxy_reddit__subreddit__get","parameters":[{"name":"subreddit","in":"path","required":true,"schema":{"type":"string","title":"Subreddit"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reddit Api Proxy Reddit  Subreddit  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/reddit/{subreddit}/{feed}":{"get":{"tags":["proxy"],"summary":"Reddit subreddit feed (hot/new/top/rising/etc)","operationId":"reddit_feed_api_proxy_reddit__subreddit___feed__get","parameters":[{"name":"subreddit","in":"path","required":true,"schema":{"type":"string","title":"Subreddit"}},{"name":"feed","in":"path","required":true,"schema":{"type":"string","title":"Feed"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reddit Feed Api Proxy Reddit  Subreddit   Feed  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/qr":{"get":{"tags":["proxy"],"summary":"QR code PNG (proxy for api.qrserver.com)","operationId":"qr_api_proxy_qr_get","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","maxLength":2000,"title":"Text"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":50,"default":200,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/dns/{name}":{"get":{"tags":["proxy"],"summary":"DNS-over-HTTPS lookup (proxy for cloudflare-dns)","operationId":"dns_api_proxy_dns__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","maxLength":12,"default":"A","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dns Api Proxy Dns  Name  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/weather/forecast":{"get":{"tags":["proxy"],"summary":"Multi-day weather forecast (open-meteo)","operationId":"weather_forecast_api_proxy_weather_forecast_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":14,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Weather Forecast Api Proxy Weather Forecast Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/usgs/quakes":{"get":{"tags":["proxy"],"summary":"USGS earthquakes (last 24h, magnitude 2.5+)","description":"Live earthquake feed via earthquake.usgs.gov (no key required).","operationId":"usgs_quakes_api_proxy_usgs_quakes_get","parameters":[{"name":"feed","in":"query","required":false,"schema":{"type":"string","pattern":"^(all_hour|1\\.0_day|2\\.5_day|4\\.5_day|significant_day|all_day|all_week|2\\.5_week|4\\.5_week|significant_week|all_month|2\\.5_month|4\\.5_month|significant_month)$","default":"2.5_day","title":"Feed"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Usgs Quakes Api Proxy Usgs Quakes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/gdacs/disasters":{"get":{"tags":["proxy"],"summary":"GDACS global disasters RSS","description":"Global Disaster Alert and Coordination System RSS feed (UN OCHA + EU ECHO).","operationId":"gdacs_disasters_api_proxy_gdacs_disasters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gdacs Disasters Api Proxy Gdacs Disasters Get"}}}}}}},"/api/proxy/coingecko/markets":{"get":{"tags":["proxy"],"summary":"Top crypto markets via CoinGecko (free tier)","operationId":"coingecko_markets_api_proxy_coingecko_markets_get","parameters":[{"name":"vs_currency","in":"query","required":false,"schema":{"type":"string","maxLength":10,"pattern":"^[a-z]{3,10}$","default":"usd","title":"Vs Currency"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Coingecko Markets Api Proxy Coingecko Markets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/news/headlines":{"get":{"tags":["proxy"],"summary":"World news via public RSS aggregators","description":"Aggregates 40+ public-domain RSS feeds into a single JSON list.\n\nPulls in parallel through the process-wide http pool. Per-source\nfailures are silently skipped so the response always returns\nsomething. 10-minute cache (per category) to spare upstreams.","operationId":"news_headlines_api_proxy_news_headlines_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional filter: world|defense|ai|health|cyber|politics|space|disasters|markets","title":"Category"},"description":"Optional filter: world|defense|ai|health|cyber|politics|space|disasters|markets"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":60,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response News Headlines Api Proxy News Headlines Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/indot/events":{"get":{"tags":["proxy"],"summary":"INDOT 511IN traffic events (best-effort + structured stub)","description":"Return INDOT 511IN events with optional county filter.\n\nTries the public 511IN feed first (no auth required). On failure or empty\nresult, returns a small structured stub so frontends can integrate against\na stable contract immediately. The HERE-based per-Seymour route at\n`/api/seymour/traffic` remains the auth'd, higher-fidelity source.","operationId":"indot_events_api_proxy_indot_events_get","parameters":[{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"County"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Indot Events Api Proxy Indot Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/news/kids-safe":{"get":{"tags":["proxy"],"summary":"Strictly-filtered kid-safe news headlines","description":"Server-side strict filter for child-targeted sites. Pulls from\n/api/feeds/items, drops anything matching the blocklist in title OR\nsummary, then boosts kid-friendly topics to the top.","operationId":"kids_safe_news_api_proxy_news_kids_safe_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Kids Safe News Api Proxy News Kids Safe Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/news/kids":{"get":{"tags":["proxy"],"summary":"Alias of /news/kids-safe (legacy path used by index.html)","description":"Server-side strict filter for child-targeted sites. Pulls from\n/api/feeds/items, drops anything matching the blocklist in title OR\nsummary, then boosts kid-friendly topics to the top.","operationId":"kids_safe_news_api_proxy_news_kids_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Kids Safe News Api Proxy News Kids Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/scott-schools/status":{"get":{"tags":["proxy"],"summary":"Scott County IN school status — checks district sites + closings aggregators","description":"Polls the most reliable feeds Gary identified for Scott County (IN) school\ndelays/closings. Returns a normalized status per district + the raw evidence\nso the UI can show \"what changed\". Cached 5 min — district sites only post a\nhandful of updates per day (mainly 5-7am winter morning calls).","operationId":"scott_schools_status_api_proxy_scott_schools_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scott Schools Status Api Proxy Scott Schools Status Get"}}}}}}},"/api/proxy/nasa/apod":{"get":{"tags":["proxy"],"summary":"NASA Astronomy Picture of the Day (cached)","description":"Proxy NASA APOD. DEMO_KEY works for low traffic; set NASA_API_KEY in .env to lift the rate limit.\n\nReturns 200 even on upstream failure (with ok:false) so the CORS middleware\nhas a chance to attach Access-Control-Allow-Origin. HTTPException bypasses\nStarlette's normal response path, which strips our CORS headers.","operationId":"nasa_apod_api_proxy_nasa_apod_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Nasa Apod Api Proxy Nasa Apod Get"}}}}}}},"/api/proxy/indot/traffic":{"get":{"tags":["proxy"],"summary":"Alias of /api/proxy/indot/events for Ayden's Claude integration","description":"Same response as /api/proxy/indot/events. Two paths kept so the\naydens-page frontend (which calls /traffic) and the kids-gaming page\n(which calls /events) both work without modification.","operationId":"indot_traffic_alias_api_proxy_indot_traffic_get","parameters":[{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"County"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Indot Traffic Alias Api Proxy Indot Traffic Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proxy/_health":{"get":{"tags":["proxy"],"summary":"Proxy router self-check","operationId":"_health_api_proxy__health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response  Health Api Proxy  Health Get"}}}}}}},"/api/world/sitrep":{"get":{"tags":["world"],"summary":"Global situation report (composite)","operationId":"sitrep_api_world_sitrep_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sitrep Api World Sitrep Get"}}}}}}},"/api/world/predictions":{"get":{"tags":["world"],"summary":"AI predictions — 24h / 7d / 30d (per-category)","description":"Non-blocking. Returns immediately with whatever's in cache.\n\nOn cache miss, kicks off background synthesis and returns\n`status: \"synthesizing\"` so the client can poll. Total response time\nstays well under Cloudflare's tunnel-origin timeout.","operationId":"predictions_api_world_predictions_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","maxLength":20,"default":"all","title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Predictions Api World Predictions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/conflicts":{"get":{"tags":["world"],"summary":"Active conflicts — composite","description":"Live conflict feed assembled from world news + ISW + ReliefWeb tags.\n\nFilters /api/proxy/news/headlines for items whose title/desc match\nconflict keywords. Coarse but free; real conflict-event-data feeds\n(ACLED, GDELT) are licensed/keyed and deferred to a follow-up wave.","operationId":"conflicts_api_world_conflicts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Conflicts Api World Conflicts Get"}}}}}}},"/api/world/disasters":{"get":{"tags":["world"],"summary":"Disasters — USGS + GDACS combined","operationId":"disasters_api_world_disasters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Disasters Api World Disasters Get"}}}}}}},"/api/legal/":{"get":{"tags":["legal"],"summary":"Legal-research index","description":"High-level counts so consumers know what's ingested.\n\nReturns 0/0/0 until the scrapers run; that's the expected Phase 1 state.","operationId":"index_api_legal__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Legal  Get"}}}}}}},"/api/legal/cases":{"get":{"tags":["legal"],"summary":"Browse / filter U.S. Tax Court cases","operationId":"list_cases_api_legal_cases_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Free-text query (uses FTS when set)","title":"Q"},"description":"Free-text query (uses FTS when set)"},{"name":"court","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20,"pattern":"^[a-z-]+$"},{"type":"null"}],"title":"Court"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Cases Api Legal Cases Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/cases/{ref}":{"get":{"tags":["legal"],"summary":"Single case by id or docket","operationId":"case_detail_api_legal_cases__ref__get","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Case Detail Api Legal Cases  Ref  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/code/{section}":{"get":{"tags":["legal"],"summary":"Internal Revenue Code section text","operationId":"code_section_api_legal_code__section__get","parameters":[{"name":"section","in":"path","required":true,"schema":{"type":"string","title":"Section"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Code Section Api Legal Code  Section  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/guidance":{"get":{"tags":["legal"],"summary":"IRS published guidance — rev rul, rev proc, notices","operationId":"list_guidance_api_legal_guidance_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(rev-rul|rev-proc|notice)$"},{"type":"null"}],"title":"Kind"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Guidance Api Legal Guidance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/search":{"get":{"tags":["legal"],"summary":"FTS5 full-text search over cases","operationId":"search_api_legal_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Api Legal Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/admin/ingest/ustaxcourt":{"post":{"tags":["legal"],"summary":"Kick off DAWSON ingest (admin)","operationId":"admin_ingest_ustaxcourt_api_legal_admin_ingest_ustaxcourt_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Limit"}},{"name":"since_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":3650,"minimum":1},{"type":"null"}],"title":"Since Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Ingest Ustaxcourt Api Legal Admin Ingest Ustaxcourt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/admin/ingest/irs":{"post":{"tags":["legal"],"summary":"Kick off IRS guidance ingest (admin)","operationId":"admin_ingest_irs_api_legal_admin_ingest_irs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}},{"name":"since_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":3650,"minimum":1},{"type":"null"}],"title":"Since Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Ingest Irs Api Legal Admin Ingest Irs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/legal/admin/ingest/irc":{"post":{"tags":["legal"],"summary":"Kick off Title 26 (IRC) ingest (admin)","operationId":"admin_ingest_irc_api_legal_admin_ingest_irc_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Ingest Irc Api Legal Admin Ingest Irc Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/visit":{"post":{"tags":["visitors"],"summary":"Record one site pageview","operationId":"record_visit_api_public_visit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Record Visit Api Public Visit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/visit/counts":{"get":{"tags":["visitors"],"summary":"Public per-site visit counters","description":"Aggregate counters by site. Safe to surface — no PII.","operationId":"public_counts_api_public_visit_counts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Counts Api Public Visit Counts Get"}}}}}}},"/api/admin/visitors/":{"get":{"tags":["admin:visitors"],"summary":"Admin visitor dashboard","operationId":"admin_dashboard_api_admin_visitors__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Dashboard Api Admin Visitors  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/visitors/recent":{"get":{"tags":["admin:visitors"],"summary":"Admin — most recent visit events","operationId":"admin_recent_api_admin_visitors_recent_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Recent Api Admin Visitors Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/dns/{name}":{"get":{"tags":["tools-advanced"],"summary":"DNS lookup (any record type)","operationId":"net_dns_api_tools_v2_net_dns__name__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","maxLength":10,"default":"A","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/whois/{domain}":{"get":{"tags":["tools-advanced"],"summary":"WHOIS lookup","operationId":"net_whois_api_tools_v2_net_whois__domain__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/portscan":{"get":{"tags":["tools-advanced"],"summary":"Quick TCP port scan against a host","operationId":"net_portscan_api_tools_v2_net_portscan_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"host","in":"query","required":true,"schema":{"type":"string","title":"Host"}},{"name":"ports","in":"query","required":false,"schema":{"type":"string","default":"80,443,3000,3306,5432,8080,8443,9443","title":"Ports"}},{"name":"timeout","in":"query","required":false,"schema":{"type":"number","maximum":2.0,"minimum":0.1,"default":0.3,"title":"Timeout"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/ssl/{host}":{"get":{"tags":["tools-advanced"],"summary":"SSL/TLS certificate inspector","operationId":"net_ssl_api_tools_v2_net_ssl__host__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"host","in":"path","required":true,"schema":{"type":"string","title":"Host"}},{"name":"port","in":"query","required":false,"schema":{"type":"integer","default":443,"title":"Port"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/http":{"get":{"tags":["tools-advanced"],"summary":"HTTP head + headers inspector","operationId":"net_http_head_api_tools_v2_net_http_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/ipinfo/{ip}":{"get":{"tags":["tools-advanced"],"summary":"IP geo + WHOIS-lite","operationId":"net_ipinfo_api_tools_v2_net_ipinfo__ip__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ip","in":"path","required":true,"schema":{"type":"string","title":"Ip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/subnet":{"get":{"tags":["tools-advanced"],"summary":"Subnet calculator","operationId":"net_subnet_api_tools_v2_net_subnet_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cidr","in":"query","required":true,"schema":{"type":"string","title":"Cidr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/headers":{"get":{"tags":["tools-advanced"],"summary":"Inspect response headers (full GET)","operationId":"net_headers_api_tools_v2_net_headers_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/net/myip":{"get":{"tags":["tools-advanced"],"summary":"What does the server see as the client IP","operationId":"net_myip_api_tools_v2_net_myip_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/net/reverse-dns/{ip}":{"get":{"tags":["tools-advanced"],"summary":"Reverse DNS PTR lookup","operationId":"net_reverse_api_tools_v2_net_reverse_dns__ip__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ip","in":"path","required":true,"schema":{"type":"string","title":"Ip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/system/info":{"get":{"tags":["tools-advanced"],"summary":"Host info dashboard","operationId":"system_info_api_tools_v2_system_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/system/processes":{"get":{"tags":["tools-advanced"],"summary":"Process explorer (top by CPU/MEM)","operationId":"system_procs_api_tools_v2_system_processes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"by","in":"query","required":false,"schema":{"type":"string","pattern":"^(cpu|mem|name)$","default":"cpu","title":"By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"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/tools/v2/system/services":{"get":{"tags":["tools-advanced"],"summary":"Windows services list","operationId":"system_services_api_tools_v2_system_services_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/system/ports":{"get":{"tags":["tools-advanced"],"summary":"Listening TCP/UDP ports","operationId":"system_ports_api_tools_v2_system_ports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/system/disk":{"get":{"tags":["tools-advanced"],"summary":"Disk usage by mountpoint","operationId":"system_disk_api_tools_v2_system_disk_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/system/network":{"get":{"tags":["tools-advanced"],"summary":"Network interface stats","operationId":"system_network_api_tools_v2_system_network_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/system/uptime":{"get":{"tags":["tools-advanced"],"summary":"Uptime + boot time","operationId":"system_uptime_api_tools_v2_system_uptime_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/system/env":{"get":{"tags":["tools-advanced"],"summary":"Environment variables (redacted)","operationId":"system_env_api_tools_v2_system_env_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/files/list":{"get":{"tags":["tools-advanced"],"summary":"Directory listing (allowlisted roots only)","operationId":"files_list_api_tools_v2_files_list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/files/read":{"get":{"tags":["tools-advanced"],"summary":"Read text file (capped to 1MB)","operationId":"files_read_api_tools_v2_files_read_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/files/search":{"get":{"tags":["tools-advanced"],"summary":"Find files matching glob within allowlisted root","operationId":"files_search_api_tools_v2_files_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"root","in":"query","required":true,"schema":{"type":"string","title":"Root"}},{"name":"pattern","in":"query","required":true,"schema":{"type":"string","title":"Pattern"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/files/big":{"get":{"tags":["tools-advanced"],"summary":"Find largest files under root","operationId":"files_big_api_tools_v2_files_big_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"root","in":"query","required":true,"schema":{"type":"string","title":"Root"}},{"name":"top","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Top"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/files/recent":{"get":{"tags":["tools-advanced"],"summary":"Most recently modified files under root","operationId":"files_recent_api_tools_v2_files_recent_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"root","in":"query","required":true,"schema":{"type":"string","title":"Root"}},{"name":"top","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Top"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/web/fetch":{"post":{"tags":["tools-advanced"],"summary":"Proxy web browser — fetch any URL through the backend","operationId":"web_fetch_api_tools_v2_web_fetch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebFetchIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/web/render":{"get":{"tags":["tools-advanced"],"summary":"Proxy browser — return remote HTML inline (sanitized)","operationId":"web_render_api_tools_v2_web_render_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/web/text":{"get":{"tags":["tools-advanced"],"summary":"Strip HTML and return readable text","operationId":"web_text_api_tools_v2_web_text_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/web/screenshot-url":{"get":{"tags":["tools-advanced"],"summary":"Get a screenshot service URL (no actual rendering yet)","operationId":"web_screenshot_url_api_tools_v2_web_screenshot_url_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/data/json/format":{"post":{"tags":["tools-advanced"],"summary":"JSON pretty-print + validate","operationId":"data_json_format_api_tools_v2_data_json_format_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"indent","in":"query","required":false,"schema":{"type":"integer","maximum":8,"minimum":0,"default":2,"title":"Indent"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/data/base64/encode":{"post":{"tags":["tools-advanced"],"summary":"Base64 encode","operationId":"data_b64_encode_api_tools_v2_data_base64_encode_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/data/base64/decode":{"post":{"tags":["tools-advanced"],"summary":"Base64 decode","operationId":"data_b64_decode_api_tools_v2_data_base64_decode_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/data/url/encode":{"post":{"tags":["tools-advanced"],"summary":"URL-encode text","operationId":"data_url_encode_api_tools_v2_data_url_encode_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/data/url/decode":{"post":{"tags":["tools-advanced"],"summary":"URL-decode text","operationId":"data_url_decode_api_tools_v2_data_url_decode_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/data/hash":{"post":{"tags":["tools-advanced"],"summary":"Compute md5/sha1/sha256/sha512 of text","operationId":"data_hash_api_tools_v2_data_hash_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/data/uuid":{"get":{"tags":["tools-advanced"],"summary":"Generate UUIDs","operationId":"data_uuid_api_tools_v2_data_uuid_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"count","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":1,"title":"Count"}},{"name":"version","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":4,"title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/data/password":{"get":{"tags":["tools-advanced"],"summary":"Cryptographically random password","operationId":"data_password_api_tools_v2_data_password_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"length","in":"query","required":false,"schema":{"type":"integer","maximum":128,"minimum":8,"default":20,"title":"Length"}},{"name":"alphabet","in":"query","required":false,"schema":{"type":"string","pattern":"^(alphanumeric|hex|symbols|alpha)$","default":"alphanumeric","title":"Alphabet"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/data/csv-to-json":{"post":{"tags":["tools-advanced"],"summary":"CSV → JSON array","operationId":"data_csv_to_json_api_tools_v2_data_csv_to_json_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"delimiter","in":"query","required":false,"schema":{"type":"string","default":",","title":"Delimiter"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/data/json-to-csv":{"post":{"tags":["tools-advanced"],"summary":"JSON array → CSV","operationId":"data_json_to_csv_api_tools_v2_data_json_to_csv_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/dev/regex":{"post":{"tags":["tools-advanced"],"summary":"Test a Python regex against sample text","operationId":"dev_regex_api_tools_v2_dev_regex_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegexIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/dev/jwt-decode":{"post":{"tags":["tools-advanced"],"summary":"Decode a JWT (does not verify signature)","operationId":"dev_jwt_decode_api_tools_v2_dev_jwt_decode_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/dev/timestamp":{"get":{"tags":["tools-advanced"],"summary":"Convert epoch ↔ ISO datetime","operationId":"dev_timestamp_api_tools_v2_dev_timestamp_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"value","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/dev/diff":{"post":{"tags":["tools-advanced"],"summary":"Unified text diff between two strings","operationId":"dev_diff_api_tools_v2_dev_diff_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string","maxLength":100000,"title":"A"}},{"name":"b","in":"query","required":true,"schema":{"type":"string","maxLength":100000,"title":"B"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/dev/lorem":{"get":{"tags":["tools-advanced"],"summary":"Lorem ipsum generator","operationId":"dev_lorem_api_tools_v2_dev_lorem_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"words","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":50,"title":"Words"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/dev/color":{"get":{"tags":["tools-advanced"],"summary":"Color converter (hex / rgb / hsl)","operationId":"dev_color_api_tools_v2_dev_color_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hex","in":"query","required":false,"schema":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","default":"#0b6b70","title":"Hex"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/ollama/chat":{"post":{"tags":["tools-advanced"],"summary":"Chat with local Ollama LLM (single-shot)","operationId":"ollama_chat_api_tools_v2_ollama_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaChatIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/ollama/chat/stream":{"post":{"tags":["tools-advanced"],"summary":"Chat with local Ollama LLM (streamed NDJSON)","operationId":"ollama_chat_stream_api_tools_v2_ollama_chat_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaChatIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/ollama/models":{"get":{"tags":["tools-advanced"],"summary":"List local Ollama models","operationId":"ollama_models_api_tools_v2_ollama_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/files/upload":{"post":{"tags":["tools-advanced"],"summary":"Upload a file to allowlisted desktop folder","operationId":"files_upload_api_tools_v2_files_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_files_upload_api_tools_v2_files_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"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/files/download":{"get":{"tags":["tools-advanced"],"summary":"Download a file from allowlisted path","operationId":"files_download_api_tools_v2_files_download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/v2/files/capture":{"post":{"tags":["tools-advanced"],"summary":"Save a webcam snapshot (data URL or raw bytes) to Desktop\\TCG-Captures","operationId":"files_capture_api_tools_v2_files_capture_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/v2/_index":{"get":{"tags":["tools-advanced"],"summary":"List every tool in this router","operationId":"_index_api_tools_v2__index_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response  Index Api Tools V2  Index Get"}}}}}}},"/api/chat":{"post":{"tags":["ollama-compat"],"summary":"Ollama-compatible chat passthrough","operationId":"chat_api_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ChatIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Chat Api Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tags":{"get":{"tags":["ollama-compat"],"summary":"Ollama-compatible model list","operationId":"tags_api_tags_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Tags Api Tags Get"}}}}}}},"/api/tools/":{"get":{"tags":["tools"],"summary":"List Tools","operationId":"list_tools_api_tools__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"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/{tool_id}":{"get":{"tags":["tools"],"summary":"Tool Detail","operationId":"tool_detail_api_tools__tool_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tool Detail Api Tools  Tool Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/youtube/info":{"post":{"tags":["tools"],"summary":"Youtube Info","operationId":"youtube_info_api_tools_youtube_info_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YTRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Youtube Info Api Tools Youtube Info Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/youtube/download":{"post":{"tags":["tools"],"summary":"Youtube Download","operationId":"youtube_download_api_tools_youtube_download_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YTDownloadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Youtube Download Api Tools Youtube Download Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/web/fetch":{"get":{"tags":["tools"],"summary":"Web Fetch","operationId":"web_fetch_api_tools_web_fetch_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":8,"title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Web Fetch Api Tools Web Fetch Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/web/scrape":{"post":{"tags":["tools"],"summary":"Web Scrape","operationId":"web_scrape_api_tools_web_scrape_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScrapeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Web Scrape Api Tools Web Scrape Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/web/text":{"post":{"tags":["tools"],"summary":"Web Text","operationId":"web_text_api_tools_web_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Web Text Api Tools Web Text Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/excel/generate":{"post":{"tags":["tools"],"summary":"Excel Generate","operationId":"excel_generate_api_tools_excel_generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"download","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Download"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExcelRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Excel Generate Api Tools Excel Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/sql/query":{"post":{"tags":["tools"],"summary":"Sql Query","operationId":"sql_query_api_tools_sql_query_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SQLRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sql Query Api Tools Sql Query Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/ports/listening":{"get":{"tags":["tools"],"summary":"Ports Listening","operationId":"ports_listening_api_tools_ports_listening_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ports Listening Api Tools Ports Listening Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/ports/firewall":{"get":{"tags":["tools"],"summary":"Ports Firewall","operationId":"ports_firewall_api_tools_ports_firewall_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ports Firewall Api Tools Ports Firewall Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/ports/probe":{"get":{"tags":["tools"],"summary":"Ports Probe","operationId":"ports_probe_api_tools_ports_probe_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"host","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Host"}},{"name":"port","in":"query","required":true,"schema":{"type":"integer","maximum":65535,"minimum":1,"title":"Port"}},{"name":"timeout","in":"query","required":false,"schema":{"type":"number","maximum":10.0,"minimum":0.1,"default":2.0,"title":"Timeout"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ports Probe Api Tools Ports Probe Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/image/generate":{"post":{"tags":["tools"],"summary":"Image Generate","operationId":"image_generate_api_tools_image_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Image Generate Api Tools Image Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/gmail/status":{"get":{"tags":["tools"],"summary":"Gmail Status","operationId":"gmail_status_api_tools_gmail_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gmail Status Api Tools Gmail Status Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/gmail/auth-url":{"get":{"tags":["tools"],"summary":"Gmail Auth Url","operationId":"gmail_auth_url_api_tools_gmail_auth_url_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","minLength":8,"title":"Redirect Uri"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gmail Auth Url Api Tools Gmail Auth Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/gmail/exchange-code":{"post":{"tags":["tools"],"summary":"Gmail Exchange","operationId":"gmail_exchange_api_tools_gmail_exchange_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailCallback"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gmail Exchange Api Tools Gmail Exchange Code Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/gmail/messages":{"get":{"tags":["tools"],"summary":"Gmail List","operationId":"gmail_list_api_tools_gmail_messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Max Results"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gmail List Api Tools Gmail Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/gmail/send":{"post":{"tags":["tools"],"summary":"Gmail Send","operationId":"gmail_send_api_tools_gmail_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailSend"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gmail Send Api Tools Gmail Send Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/facebook/status":{"get":{"tags":["tools"],"summary":"Fb Status","operationId":"fb_status_api_tools_facebook_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fb Status Api Tools Facebook Status Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/facebook/me":{"get":{"tags":["tools"],"summary":"Fb Me","operationId":"fb_me_api_tools_facebook_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fb Me Api Tools Facebook Me Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tools/facebook/feed/{page_id}":{"get":{"tags":["tools"],"summary":"Fb Feed","operationId":"fb_feed_api_tools_facebook_feed__page_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page_id","in":"path","required":true,"schema":{"type":"string","title":"Page Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fb Feed Api Tools Facebook Feed  Page Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/facebook/post":{"post":{"tags":["tools"],"summary":"Fb Post","operationId":"fb_post_api_tools_facebook_post_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FBPost"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fb Post Api Tools Facebook Post Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/explorer/list":{"get":{"tags":["file-explorer"],"summary":"List Dir","operationId":"list_dir_api_explorer_list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":false,"schema":{"type":"string","description":"Relative path from root","default":"","title":"Path"},"description":"Relative path from root"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Dir Api Explorer List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/explorer/download":{"get":{"tags":["file-explorer"],"summary":"Download","operationId":"download_api_explorer_download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/explorer/preview":{"get":{"tags":["file-explorer"],"summary":"Preview","description":"Inline preview: images served as-is, text returned as plain text (head).","operationId":"preview_api_explorer_preview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/explorer/stream":{"get":{"tags":["file-explorer"],"summary":"Stream","description":"Byte-range streaming response — plays HTML5 video/audio.","operationId":"stream_api_explorer_stream_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/explorer/upload":{"post":{"tags":["file-explorer"],"summary":"Upload","operationId":"upload_api_explorer_upload_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":false,"schema":{"type":"string","description":"Target directory relative to root","default":"","title":"Path"},"description":"Target directory relative to root"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_api_explorer_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Api Explorer Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/explorer/mkdir":{"post":{"tags":["file-explorer"],"summary":"Mkdir","operationId":"mkdir_api_explorer_mkdir_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mkdir Api Explorer Mkdir Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/explorer/delete":{"delete":{"tags":["file-explorer"],"summary":"Delete","operationId":"delete_api_explorer_delete_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Api Explorer Delete Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enterprise/brands":{"get":{"tags":["enterprise"],"summary":"Brands","operationId":"brands_api_enterprise_brands_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Brands Api Enterprise Brands Get"}}}}}}},"/api/enterprise/customers":{"get":{"tags":["enterprise"],"summary":"Customers List","operationId":"customers_list_api_enterprise_customers_get","parameters":[{"name":"brand","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"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":{"type":"object","additionalProperties":true,"title":"Response Customers List Api Enterprise Customers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["enterprise"],"summary":"Customers Create","operationId":"customers_create_api_enterprise_customers_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Customers Create Api Enterprise Customers Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enterprise/customers/{cid}":{"get":{"tags":["enterprise"],"summary":"Customers Get","operationId":"customers_get_api_enterprise_customers__cid__get","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"integer","title":"Cid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Customers Get Api Enterprise Customers  Cid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["enterprise"],"summary":"Customers Update","operationId":"customers_update_api_enterprise_customers__cid__patch","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"integer","title":"Cid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Customers Update Api Enterprise Customers  Cid  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enterprise/customers/{cid}/interactions":{"post":{"tags":["enterprise"],"summary":"Customers Interact","operationId":"customers_interact_api_enterprise_customers__cid__interactions_post","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"integer","title":"Cid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InteractionIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Customers Interact Api Enterprise Customers  Cid  Interactions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enterprise/tickets":{"get":{"tags":["enterprise"],"summary":"Tickets List","operationId":"tickets_list_api_enterprise_tickets_get","parameters":[{"name":"brand","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"open","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tickets List Api Enterprise Tickets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["enterprise"],"summary":"Tickets Create","operationId":"tickets_create_api_enterprise_tickets_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tickets Create Api Enterprise Tickets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enterprise/tickets/{tid}":{"patch":{"tags":["enterprise"],"summary":"Tickets Update","operationId":"tickets_update_api_enterprise_tickets__tid__patch","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"integer","title":"Tid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tickets Update Api Enterprise Tickets  Tid  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enterprise/invoices":{"get":{"tags":["enterprise"],"summary":"Invoices List","operationId":"invoices_list_api_enterprise_invoices_get","parameters":[{"name":"brand","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Invoices List Api Enterprise Invoices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["enterprise"],"summary":"Invoices Create","operationId":"invoices_create_api_enterprise_invoices_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Invoices Create Api Enterprise Invoices Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/":{"get":{"tags":["agents"],"summary":"List Agents","operationId":"list_agents_api_agents__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Agents Api Agents  Get"}}}}}}},"/api/agents/{aid}":{"get":{"tags":["agents"],"summary":"Agent Detail","operationId":"agent_detail_api_agents__aid__get","parameters":[{"name":"aid","in":"path","required":true,"schema":{"type":"string","title":"Aid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agent Detail Api Agents  Aid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/kb/search":{"get":{"tags":["agents"],"summary":"Kb Search","operationId":"kb_search_api_agents_kb_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":400,"default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Kb Search Api Agents Kb Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/route":{"post":{"tags":["agents"],"summary":"Route Message","operationId":"route_message_api_agents_route_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Route Message Api Agents Route Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/dispatch":{"post":{"tags":["agents"],"summary":"Dispatch","operationId":"dispatch_api_agents_dispatch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Dispatch Api Agents Dispatch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/":{"get":{"tags":["integrations"],"summary":"List Integrations","operationId":"list_integrations_api_integrations__get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Integrations Api Integrations  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/{iid}":{"get":{"tags":["integrations"],"summary":"Get Integration","operationId":"get_integration_api_integrations__iid__get","parameters":[{"name":"iid","in":"path","required":true,"schema":{"type":"string","title":"Iid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Integration Api Integrations  Iid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["integrations"],"summary":"Update Integration","operationId":"update_integration_api_integrations__iid__patch","parameters":[{"name":"iid","in":"path","required":true,"schema":{"type":"string","title":"Iid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Integration Api Integrations  Iid  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mail/accounts":{"get":{"tags":["mail"],"summary":"Accounts","operationId":"accounts_api_mail_accounts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accounts Api Mail Accounts Get"}}}}}},"post":{"tags":["mail"],"summary":"Account Create","operationId":"account_create_api_mail_accounts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Account Create Api Mail Accounts Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mail/send":{"post":{"tags":["mail"],"summary":"Send Queue","operationId":"send_queue_api_mail_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Send Queue Api Mail Send Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mail/send/flush":{"post":{"tags":["mail"],"summary":"Send Flush","description":"Send queued outbound now. Normally runs on a scheduler.","operationId":"send_flush_api_mail_send_flush_post","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Send Flush Api Mail Send Flush Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mail/poll":{"post":{"tags":["mail"],"summary":"Poll Now","description":"Poll IMAP for every active account; dedupe + persist.","operationId":"poll_now_api_mail_poll_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Poll Now Api Mail Poll Post"}}}}}}},"/api/mail/messages":{"get":{"tags":["mail"],"summary":"Messages List","operationId":"messages_list_api_mail_messages_get","parameters":[{"name":"account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"}},{"name":"seen","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Seen"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Messages List Api Mail Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mail/messages/{mid}/seen":{"patch":{"tags":["mail"],"summary":"Messages Seen","operationId":"messages_seen_api_mail_messages__mid__seen_patch","parameters":[{"name":"mid","in":"path","required":true,"schema":{"type":"integer","title":"Mid"}},{"name":"seen","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Seen"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Messages Seen Api Mail Messages  Mid  Seen Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mail/stats":{"get":{"tags":["mail"],"summary":"Stats","operationId":"stats_api_mail_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Mail Stats Get"}}}}}}},"/api/agent-tasks/":{"get":{"tags":["agent-tasks"],"summary":"List Templates","operationId":"list_templates_api_agent_tasks__get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Templates Api Agent Tasks  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-tasks/{tid}":{"get":{"tags":["agent-tasks"],"summary":"Template Detail","operationId":"template_detail_api_agent_tasks__tid__get","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Template Detail Api Agent Tasks  Tid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-tasks/{tid}/run":{"post":{"tags":["agent-tasks"],"summary":"Run Template","operationId":"run_template_api_agent_tasks__tid__run_post","parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Template Api Agent Tasks  Tid  Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-tasks/runs/recent":{"get":{"tags":["agent-tasks"],"summary":"Recent Runs","operationId":"recent_runs_api_agent_tasks_runs_recent_get","parameters":[{"name":"template_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Recent Runs Api Agent Tasks Runs Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/heartbeat":{"post":{"tags":["home-agent"],"summary":"Heartbeat","operationId":"heartbeat_api_home_agent_heartbeat_post","parameters":[{"name":"x-home-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Home-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeartbeatIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Heartbeat Api Home Agent Heartbeat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/pull-commands":{"get":{"tags":["home-agent"],"summary":"Pull Commands","operationId":"pull_commands_api_home_agent_pull_commands_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"x-home-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Home-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pull Commands Api Home Agent Pull Commands Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/ack-command":{"post":{"tags":["home-agent"],"summary":"Ack Command","operationId":"ack_command_api_home_agent_ack_command_post","parameters":[{"name":"x-home-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Home-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AckIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ack Command Api Home Agent Ack Command Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/log":{"post":{"tags":["home-agent"],"summary":"Log Line","operationId":"log_line_api_home_agent_log_post","parameters":[{"name":"x-home-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Home-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Log Line Api Home Agent Log Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/agents":{"get":{"tags":["home-agent"],"summary":"Agents List","operationId":"agents_list_api_home_agent_agents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Agents List Api Home Agent Agents Get"}}}}}},"post":{"tags":["home-agent"],"summary":"Agents Create","description":"Returns the freshly-generated shared secret ONCE.\n\nPersist the value immediately in the home server's HOME_SECRET env var; the\nserver stores the secret itself (for auth), but only returns it here and\non a rotate call.","operationId":"agents_create_api_home_agent_agents_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Agents Create Api Home Agent Agents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/agents/{aid}/rotate":{"post":{"tags":["home-agent"],"summary":"Agents Rotate","operationId":"agents_rotate_api_home_agent_agents__aid__rotate_post","parameters":[{"name":"aid","in":"path","required":true,"schema":{"type":"integer","title":"Aid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agents Rotate Api Home Agent Agents  Aid  Rotate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/agents/{aid}/tunnel":{"patch":{"tags":["home-agent"],"summary":"Agents Tunnel","operationId":"agents_tunnel_api_home_agent_agents__aid__tunnel_patch","parameters":[{"name":"aid","in":"path","required":true,"schema":{"type":"integer","title":"Aid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routes__home_agent__TunnelIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agents Tunnel Api Home Agent Agents  Aid  Tunnel Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/queue":{"post":{"tags":["home-agent"],"summary":"Queue","operationId":"queue_api_home_agent_queue_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Queue Api Home Agent Queue Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/commands":{"get":{"tags":["home-agent"],"summary":"Commands","operationId":"commands_api_home_agent_commands_get","parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Commands Api Home Agent Commands Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/logs":{"get":{"tags":["home-agent"],"summary":"Logs","operationId":"logs_api_home_agent_logs_get","parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Logs Api Home Agent Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/home-agent/status":{"get":{"tags":["home-agent"],"summary":"Status","operationId":"status_api_home_agent_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status Api Home Agent Status Get"}}}}}}},"/api/home-agent/proxy":{"post":{"tags":["home-agent"],"summary":"Proxy","description":"Proxy through an agent's `tunnel_url` (ngrok / cloudflared / tailscale-funnel).","operationId":"proxy_api_home_agent_proxy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Proxy Api Home Agent Proxy Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/surveillance/":{"get":{"tags":["surveillance"],"summary":"Index","description":"Overview + attribution.","operationId":"index_api_surveillance__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Surveillance  Get"}}}}}}},"/api/surveillance/cameras":{"get":{"tags":["surveillance"],"summary":"Cameras","operationId":"cameras_api_surveillance_cameras_get","parameters":[{"name":"manufacturer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manufacturer"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"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":{"type":"object","additionalProperties":true,"title":"Response Cameras Api Surveillance Cameras Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/surveillance/stats":{"get":{"tags":["surveillance"],"summary":"Stats","operationId":"stats_api_surveillance_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Surveillance Stats Get"}}}}}}},"/api/surveillance/near":{"get":{"tags":["surveillance"],"summary":"Near","operationId":"near_api_surveillance_near_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}},{"name":"km","in":"query","required":false,"schema":{"type":"number","maximum":100,"minimum":0.05,"default":5.0,"title":"Km"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Near Api Surveillance Near Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/surveillance/{osm_id}":{"get":{"tags":["surveillance"],"summary":"Camera Detail","operationId":"camera_detail_api_surveillance__osm_id__get","parameters":[{"name":"osm_id","in":"path","required":true,"schema":{"type":"integer","title":"Osm Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Camera Detail Api Surveillance  Osm Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/surveillance/refresh":{"post":{"tags":["surveillance"],"summary":"Refresh","description":"Pull a fresh snapshot from Overpass. Rate-limited to once per 10 minutes.","operationId":"refresh_api_surveillance_refresh_post","parameters":[{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional 'south,west,north,east' bbox. Default = Indiana.","title":"Bbox"},"description":"Optional 'south,west,north,east' bbox. Default = Indiana."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Api Surveillance Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flock/":{"get":{"tags":["flock"],"summary":"Index","operationId":"index_api_flock__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Flock  Get"}}}}}}},"/api/flock/agencies":{"get":{"tags":["flock"],"summary":"Agencies","operationId":"agencies_api_flock_agencies_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"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":{"type":"object","additionalProperties":true,"title":"Response Agencies Api Flock Agencies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flock/agencies/{slug}":{"get":{"tags":["flock"],"summary":"Agency Detail","operationId":"agency_detail_api_flock_agencies__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agency Detail Api Flock Agencies  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flock/agencies/refresh":{"post":{"tags":["flock"],"summary":"Refresh One","operationId":"refresh_one_api_flock_agencies_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshOneBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Refresh One Api Flock Agencies Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flock/refresh-all":{"post":{"tags":["flock"],"summary":"Refresh All","description":"Refresh every seeded Indiana agency. Rate-limited by 1s sleep per agency.","operationId":"refresh_all_api_flock_refresh_all_post","parameters":[{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh All Api Flock Refresh All Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flock/stats":{"get":{"tags":["flock"],"summary":"Stats","operationId":"stats_api_flock_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Flock Stats Get"}}}}}}},"/api/flock/seed":{"get":{"tags":["flock"],"summary":"Seed List","description":"Return the built-in seed list of Indiana Flock agency slugs.","operationId":"seed_list_api_flock_seed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Seed List Api Flock Seed Get"}}}}}}},"/api/flock/validate":{"get":{"tags":["flock"],"summary":"Validate","description":"Check whether a slug exists on the Flock portal without persisting.","operationId":"validate_api_flock_validate_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Validate Api Flock Validate Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flock/candidates":{"get":{"tags":["flock"],"summary":"Candidates","description":"Return candidate Flock slugs for a city (patterns only — validation is separate).","operationId":"candidates_api_flock_candidates_get","parameters":[{"name":"city","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":80,"title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Candidates Api Flock Candidates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/indot/":{"get":{"tags":["indot"],"summary":"Index","operationId":"index_api_indot__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Indot  Get"}}}}}}},"/api/indot/cameras":{"get":{"tags":["indot"],"summary":"Cameras","operationId":"cameras_api_indot_cameras_get","parameters":[{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"route","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"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":{"type":"object","additionalProperties":true,"title":"Response Cameras Api Indot Cameras Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/indot/stats":{"get":{"tags":["indot"],"summary":"Stats","operationId":"stats_api_indot_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Indot Stats Get"}}}}}}},"/api/indot/cameras/{camera_id}":{"get":{"tags":["indot"],"summary":"Camera Detail","operationId":"camera_detail_api_indot_cameras__camera_id__get","parameters":[{"name":"camera_id","in":"path","required":true,"schema":{"type":"string","title":"Camera Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Camera Detail Api Indot Cameras  Camera Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/indot/seed":{"post":{"tags":["indot"],"summary":"Seed","operationId":"seed_api_indot_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Seed Api Indot Seed Post"}}}}}}},"/api/webcams/":{"get":{"tags":["webcams"],"summary":"Index","operationId":"index_api_webcams__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Webcams  Get"}}}}}},"post":{"tags":["webcams"],"summary":"Add","operationId":"add_api_webcams__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebcamIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Add Api Webcams  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webcams/list":{"get":{"tags":["webcams"],"summary":"Listing","operationId":"listing_api_webcams_list_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"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":{"type":"object","additionalProperties":true,"title":"Response Listing Api Webcams List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webcams/seed":{"post":{"tags":["webcams"],"summary":"Seed","operationId":"seed_api_webcams_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Seed Api Webcams Seed Post"}}}}}}},"/api/webcams/stats":{"get":{"tags":["webcams"],"summary":"Stats","operationId":"stats_api_webcams_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Webcams Stats Get"}}}}}}},"/api/webcams/{wid}":{"get":{"tags":["webcams"],"summary":"Detail","operationId":"detail_api_webcams__wid__get","parameters":[{"name":"wid","in":"path","required":true,"schema":{"type":"integer","title":"Wid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Detail Api Webcams  Wid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["webcams"],"summary":"Remove","operationId":"remove_api_webcams__wid__delete","parameters":[{"name":"wid","in":"path","required":true,"schema":{"type":"integer","title":"Wid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Api Webcams  Wid  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webcams/{wid}/status":{"patch":{"tags":["webcams"],"summary":"Set Status","operationId":"set_status_api_webcams__wid__status_patch","parameters":[{"name":"wid","in":"path","required":true,"schema":{"type":"integer","title":"Wid"}},{"name":"status","in":"query","required":true,"schema":{"type":"string","pattern":"^(pending|verified|offline)$","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Status Api Webcams  Wid  Status Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/foia/":{"get":{"tags":["foia"],"summary":"Index","operationId":"index_api_foia__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Foia  Get"}}}}}}},"/api/foia/resources":{"get":{"tags":["foia"],"summary":"Resources","operationId":"resources_api_foia_resources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Resources Api Foia Resources Get"}}}}}}},"/api/foia/ingest":{"post":{"tags":["foia"],"summary":"Ingest","operationId":"ingest_api_foia_ingest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Api Foia Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/foia/ingest-latest":{"post":{"tags":["foia"],"summary":"Ingest Latest","description":"Ingest the most recent N quarterly CSVs.","operationId":"ingest_latest_api_foia_ingest_latest_post","parameters":[{"name":"count","in":"query","required":false,"schema":{"type":"integer","maximum":8,"minimum":1,"default":1,"title":"Count"}},{"name":"filter_surveillance_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Filter Surveillance Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Latest Api Foia Ingest Latest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/foia/search":{"get":{"tags":["foia"],"summary":"Search","operationId":"search_api_foia_search_get","parameters":[{"name":"vendor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor"}},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":2000},{"type":"null"}],"title":"Fiscal Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"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":{"type":"object","additionalProperties":true,"title":"Response Search Api Foia Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/foia/stats":{"get":{"tags":["foia"],"summary":"Stats","operationId":"stats_api_foia_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Foia Stats Get"}}}}}}},"/api/signals/":{"get":{"tags":["signals"],"summary":"Index","operationId":"index_api_signals__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Signals  Get"}}}}}}},"/api/signals/refresh":{"post":{"tags":["signals"],"summary":"Refresh","operationId":"refresh_api_signals_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshBody","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Refresh Api Signals Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals/mentions":{"get":{"tags":["signals"],"summary":"Mentions","operationId":"mentions_api_signals_mentions_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(reddit|news|manual)$"},{"type":"null"}],"title":"Source"}},{"name":"agency_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"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":{"type":"object","additionalProperties":true,"title":"Response Mentions Api Signals Mentions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals/stats":{"get":{"tags":["signals"],"summary":"Stats","operationId":"stats_api_signals_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Signals Stats Get"}}}}}}},"/api/surveillance-map":{"get":{"tags":["surveillance-map"],"summary":"Index","description":"Map metadata + per-layer counts. UI calls this on first paint.","operationId":"index_api_surveillance_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Surveillance Map Get"}}}}}}},"/api/surveillance-map/":{"get":{"tags":["surveillance-map"],"summary":"Index","description":"Map metadata + per-layer counts. UI calls this on first paint.","operationId":"index_api_surveillance_map__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Surveillance Map  Get"}}}}}}},"/api/surveillance-map/layers":{"get":{"tags":["surveillance-map"],"summary":"Layers","operationId":"layers_api_surveillance_map_layers_get","parameters":[{"name":"include_osm","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Osm"}},{"name":"include_indot","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Indot"}},{"name":"include_flock","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Flock"}},{"name":"include_webcams","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Webcams"}},{"name":"limit_osm","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":10,"default":5000,"title":"Limit Osm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Layers Api Surveillance Map Layers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/netdiscovery/":{"get":{"tags":["netdiscovery"],"summary":"Index","operationId":"index_api_netdiscovery__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Netdiscovery  Get"}}}}}}},"/api/netdiscovery/devices":{"get":{"tags":["netdiscovery"],"summary":"Devices","operationId":"devices_api_netdiscovery_devices_get","parameters":[{"name":"device_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Type"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"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":{"type":"object","additionalProperties":true,"title":"Response Devices Api Netdiscovery Devices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/netdiscovery/devices/{did}":{"get":{"tags":["netdiscovery"],"summary":"Device Detail","operationId":"device_detail_api_netdiscovery_devices__did__get","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"integer","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Device Detail Api Netdiscovery Devices  Did  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["netdiscovery"],"summary":"Device Delete","operationId":"device_delete_api_netdiscovery_devices__did__delete","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"integer","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Device Delete Api Netdiscovery Devices  Did  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/netdiscovery/stats":{"get":{"tags":["netdiscovery"],"summary":"Stats","operationId":"stats_api_netdiscovery_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Netdiscovery Stats Get"}}}}}}},"/api/netdiscovery/arp":{"get":{"tags":["netdiscovery"],"summary":"Arp Cache","description":"Read-only view of the OS ARP cache — no probing.","operationId":"arp_cache_api_netdiscovery_arp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Arp Cache Api Netdiscovery Arp Get"}}}}}}},"/api/netdiscovery/scan":{"post":{"tags":["netdiscovery"],"summary":"Scan","operationId":"scan_api_netdiscovery_scan_post","parameters":[{"name":"cidr","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Target CIDR, default = local /24","title":"Cidr"},"description":"Target CIDR, default = local /24"},{"name":"include_ports","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Ports"}},{"name":"concurrency","in":"query","required":false,"schema":{"type":"integer","maximum":64,"minimum":4,"default":24,"title":"Concurrency"}},{"name":"port_timeout","in":"query","required":false,"schema":{"type":"number","maximum":3.0,"minimum":0.05,"default":0.4,"title":"Port Timeout"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scan Api Netdiscovery Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/netdiscovery/probe-device/{did}":{"post":{"tags":["netdiscovery"],"summary":"Probe Device","description":"Re-probe a single device with port scan.","operationId":"probe_device_api_netdiscovery_probe_device__did__post","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"integer","title":"Did"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Probe Device Api Netdiscovery Probe Device  Did  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/netdiscovery/topology":{"get":{"tags":["netdiscovery"],"summary":"Topology","description":"Simple hub-and-spoke topology data (gateway at center, devices as leaves).","operationId":"topology_api_netdiscovery_topology_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Topology Api Netdiscovery Topology Get"}}}}}}},"/api/agencies/":{"get":{"tags":["agencies"],"summary":"Index","description":"Lightweight list of known agencies (for the deep-dive picker).","operationId":"index_api_agencies__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Agencies  Get"}}}}}}},"/api/agencies/{slug}/profile":{"get":{"tags":["agencies"],"summary":"Profile","operationId":"profile_api_agencies__slug__profile_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"km","in":"query","required":false,"schema":{"type":"number","maximum":100.0,"minimum":1.0,"description":"Radius around the agency's city for nearby-camera lookups","default":12.0,"title":"Km"},"description":"Radius around the agency's city for nearby-camera lookups"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Profile Api Agencies  Slug  Profile Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/atlas/":{"get":{"tags":["atlas"],"summary":"Index","operationId":"index_api_atlas__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Atlas  Get"}}}}}}},"/api/atlas/ingest":{"post":{"tags":["atlas"],"summary":"Ingest","operationId":"ingest_api_atlas_ingest_post","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":40,"default":"Indiana","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Api Atlas Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/atlas/deployments":{"get":{"tags":["atlas"],"summary":"Deployments","operationId":"deployments_api_atlas_deployments_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency"}},{"name":"technology","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Technology"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"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":{"type":"object","additionalProperties":true,"title":"Response Deployments Api Atlas Deployments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/atlas/stats":{"get":{"tags":["atlas"],"summary":"Stats","operationId":"stats_api_atlas_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Atlas Stats Get"}}}}}}},"/api/foia-requests/":{"get":{"tags":["foia-requests"],"summary":"Index","operationId":"index_api_foia_requests__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Foia Requests  Get"}}}}}},"post":{"tags":["foia-requests"],"summary":"Create","operationId":"create_api_foia_requests__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Api Foia Requests  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/foia-requests/templates":{"get":{"tags":["foia-requests"],"summary":"Templates","operationId":"templates_api_foia_requests_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Templates Api Foia Requests Templates Get"}}}}}}},"/api/foia-requests/states":{"get":{"tags":["foia-requests"],"summary":"States","operationId":"states_api_foia_requests_states_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response States Api Foia Requests States Get"}}}}}}},"/api/foia-requests/draft":{"post":{"tags":["foia-requests"],"summary":"Draft","operationId":"draft_api_foia_requests_draft_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routes__foia_requests__DraftIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Draft Api Foia Requests Draft Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/foia-requests/list":{"get":{"tags":["foia-requests"],"summary":"Listing","operationId":"listing_api_foia_requests_list_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"agency_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency Slug"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"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":{"type":"object","additionalProperties":true,"title":"Response Listing Api Foia Requests List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/foia-requests/stats":{"get":{"tags":["foia-requests"],"summary":"Stats","operationId":"stats_api_foia_requests_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Foia Requests Stats Get"}}}}}}},"/api/foia-requests/{rid}":{"get":{"tags":["foia-requests"],"summary":"Detail","operationId":"detail_api_foia_requests__rid__get","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Detail Api Foia Requests  Rid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["foia-requests"],"summary":"Patch","operationId":"patch_api_foia_requests__rid__patch","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Api Foia Requests  Rid  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["foia-requests"],"summary":"Remove","operationId":"remove_api_foia_requests__rid__delete","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Api Foia Requests  Rid  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/":{"get":{"tags":["radio"],"summary":"Index","operationId":"index_api_radio__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Radio  Get"}}}}}}},"/api/radio/refresh":{"post":{"tags":["radio"],"summary":"Refresh","operationId":"refresh_api_radio_refresh_post","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":40,"default":"Indiana","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Api Radio Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/feeds":{"get":{"tags":["radio"],"summary":"Feeds","operationId":"feeds_api_radio_feeds_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"genre","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genre"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"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":{"type":"object","additionalProperties":true,"title":"Response Feeds Api Radio Feeds Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/stats":{"get":{"tags":["radio"],"summary":"Stats","operationId":"stats_api_radio_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Radio Stats Get"}}}}}}},"/api/public-signals/":{"get":{"tags":["public-signals"],"summary":"Index","operationId":"index_api_public_signals__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Public Signals  Get"}}}}}}},"/api/public-signals/list":{"get":{"tags":["public-signals"],"summary":"Listing","operationId":"listing_api_public_signals_list_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"signal_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Type"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"min_severity","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":1,"title":"Min Severity"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Since"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"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":{"type":"object","additionalProperties":true,"title":"Response Listing Api Public Signals List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-signals/geojson":{"get":{"tags":["public-signals"],"summary":"Geojson","operationId":"geojson_api_public_signals_geojson_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"signal_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Type"}},{"name":"min_severity","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":1,"title":"Min Severity"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Since"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":2000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Geojson Api Public Signals Geojson Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-signals/stats":{"get":{"tags":["public-signals"],"summary":"Stats","operationId":"stats_api_public_signals_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Public Signals Stats Get"}}}}}}},"/api/public-signals/refresh/nws":{"post":{"tags":["public-signals"],"summary":"Refresh Nws","operationId":"refresh_nws_api_public_signals_refresh_nws_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Refresh Nws Api Public Signals Refresh Nws Post"}}}}}}},"/api/public-signals/refresh/rss":{"post":{"tags":["public-signals"],"summary":"Refresh Rss","operationId":"refresh_rss_api_public_signals_refresh_rss_post","parameters":[{"name":"feed_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated feed ids (default: all)","title":"Feed Ids"},"description":"Comma-separated feed ids (default: all)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Rss Api Public Signals Refresh Rss Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-signals/refresh/bluesky":{"post":{"tags":["public-signals"],"summary":"Refresh Bluesky","operationId":"refresh_bluesky_api_public_signals_refresh_bluesky_post","parameters":[{"name":"queries","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated queries","title":"Queries"},"description":"Comma-separated queries"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Bluesky Api Public Signals Refresh Bluesky Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-signals/refresh/fars":{"post":{"tags":["public-signals"],"summary":"Refresh Fars","operationId":"refresh_fars_api_public_signals_refresh_fars_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Refresh Fars Api Public Signals Refresh Fars Post"}}}}}}},"/api/public-signals/refresh/all":{"post":{"tags":["public-signals"],"summary":"Refresh All","description":"Run every registered writer in sequence. Returns per-source results.","operationId":"refresh_all_api_public_signals_refresh_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Refresh All Api Public Signals Refresh All Post"}}}}}}},"/api/public-records/":{"get":{"tags":["public-records"],"summary":"Index","operationId":"index_api_public_records__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Public Records  Get"}}}}}}},"/api/public-records/mycase":{"get":{"tags":["public-records"],"summary":"Mycase","operationId":"mycase_api_public_records_mycase_get","parameters":[{"name":"last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"}},{"name":"first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"}},{"name":"case_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Number"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mycase Api Public Records Mycase Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-records/injail":{"get":{"tags":["public-records"],"summary":"Injail","operationId":"injail_api_public_records_injail_get","parameters":[{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Injail Api Public Records Injail Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-records/vinelink":{"get":{"tags":["public-records"],"summary":"Vinelink","operationId":"vinelink_api_public_records_vinelink_get","parameters":[{"name":"last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"}},{"name":"first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vinelink Api Public Records Vinelink Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-records/pacer":{"get":{"tags":["public-records"],"summary":"Pacer","operationId":"pacer_api_public_records_pacer_get","parameters":[{"name":"court","in":"query","required":false,"schema":{"type":"string","pattern":"^(insd|innd)$","default":"insd","title":"Court"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pacer Api Public Records Pacer Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-records/inbiz":{"get":{"tags":["public-records"],"summary":"Inbiz","operationId":"inbiz_api_public_records_inbiz_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Inbiz Api Public Records Inbiz Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public-records/inprof":{"get":{"tags":["public-records"],"summary":"Inprof","operationId":"inprof_api_public_records_inprof_get","parameters":[{"name":"profession","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profession"}},{"name":"last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Inprof Api Public Records Inprof Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/tips/photo":{"post":{"tags":["public-intel"],"summary":"Upload Photo","operationId":"upload_photo_api_public_tips_photo_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_photo_api_public_tips_photo_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Photo Api Public Tips Photo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ibe-search/":{"get":{"tags":["search"],"summary":"Index","operationId":"index_api_ibe_search__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Ibe Search  Get"}}}}}}},"/api/ibe-search/query":{"get":{"tags":["search"],"summary":"Do Search","operationId":"do_search_api_ibe_search_query_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Source"}},{"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":{"type":"object","additionalProperties":true,"title":"Response Do Search Api Ibe Search Query Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ibe-search/rebuild":{"post":{"tags":["search"],"summary":"Rebuild","operationId":"rebuild_api_ibe_search_rebuild_post","parameters":[{"name":"sources","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated source list; omit to rebuild all","title":"Sources"},"description":"Comma-separated source list; omit to rebuild all"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rebuild Api Ibe Search Rebuild Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ibe-search/stats":{"get":{"tags":["search"],"summary":"Stats","operationId":"stats_api_ibe_search_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Ibe Search Stats Get"}}}}}}},"/api/r2/status":{"get":{"tags":["r2"],"summary":"Status","description":"Is radare2 reachable? Where? What version?","operationId":"status_api_r2_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status Api R2 Status Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/r2/install":{"post":{"tags":["r2"],"summary":"Install","description":"Trigger the one-time Windows ZIP download from GitHub releases.","operationId":"install_api_r2_install_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Install Api R2 Install Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/r2/analyze":{"post":{"tags":["r2"],"summary":"Analyze","operationId":"analyze_api_r2_analyze_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_analyze_api_r2_analyze_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Analyze Api R2 Analyze Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/r2/analyses":{"get":{"tags":["r2"],"summary":"List Analyses","operationId":"list_analyses_api_r2_analyses_get","security":[{"HTTPBearer":[]}],"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Analyses Api R2 Analyses Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/r2/analyses/{aid}":{"get":{"tags":["r2"],"summary":"Analysis Detail","operationId":"analysis_detail_api_r2_analyses__aid__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"aid","in":"path","required":true,"schema":{"type":"integer","title":"Aid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analysis Detail Api R2 Analyses  Aid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/r2/stats":{"get":{"tags":["r2"],"summary":"Stats","operationId":"stats_api_r2_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api R2 Stats Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/multistate-cams/":{"get":{"tags":["multistate-cams"],"summary":"Catalog summary across IN/OH/KY/IL/MI","operationId":"index_api_multistate_cams__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Multistate Cams  Get"}}}}}}},"/api/multistate-cams/cameras":{"get":{"tags":["multistate-cams"],"summary":"List cached cameras (filter by state)","operationId":"cameras_api_multistate_cams_cameras_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[A-Za-z]{2}$"},{"type":"null"}],"title":"State"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cameras Api Multistate Cams Cameras Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/multistate-cams/refresh":{"post":{"tags":["multistate-cams"],"summary":"Refresh cameras (admin)","operationId":"refresh_api_multistate_cams_refresh_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One of INDOT / OHGO / KYTC / TRIMARC / IDOT / MDOT","title":"Source"},"description":"One of INDOT / OHGO / KYTC / TRIMARC / IDOT / MDOT"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[A-Za-z]{2}$"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Api Multistate Cams Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/stocks/":{"get":{"tags":["stocks"],"summary":"Index of stock-watcher endpoints","operationId":"index_api_public_stocks__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Public Stocks  Get"}}}}}}},"/api/public/stocks/watchlist":{"get":{"tags":["stocks"],"summary":"Live quotes + signals for the watchlist","operationId":"watchlist_api_public_stocks_watchlist_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Watchlist Api Public Stocks Watchlist Get"}}}}}}},"/api/public/stocks/quote":{"get":{"tags":["stocks"],"summary":"Single-symbol live quote","operationId":"quote_api_public_stocks_quote_get","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":12,"title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Quote Api Public Stocks Quote Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/stocks/analyze":{"get":{"tags":["stocks"],"summary":"AI commentary on a symbol (Ollama)","operationId":"analyze_api_public_stocks_analyze_get","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":12,"title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analyze Api Public Stocks Analyze Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/stocks/watchlist":{"post":{"tags":["admin:stocks"],"summary":"Add a symbol to the watchlist","operationId":"add_api_admin_stocks_watchlist_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Api Admin Stocks Watchlist Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:stocks"],"summary":"Remove a symbol","operationId":"remove_api_admin_stocks_watchlist_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":12,"title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Api Admin Stocks Watchlist Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tcg/repair-catalog":{"get":{"tags":["tcg"],"summary":"Public repair-pricing catalog","operationId":"repair_catalog_api_tcg_repair_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Repair Catalog Api Tcg Repair Catalog Get"}}}}}}},"/api/tcg/repair-catalog/{repair_type}":{"get":{"tags":["tcg"],"summary":"One repair type estimate","operationId":"repair_estimate_api_tcg_repair_catalog__repair_type__get","parameters":[{"name":"repair_type","in":"path","required":true,"schema":{"type":"string","title":"Repair Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Repair Estimate Api Tcg Repair Catalog  Repair Type  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tcg/diagnose":{"get":{"tags":["tcg"],"summary":"Symptom-based heuristic classifier","operationId":"diagnose_api_tcg_diagnose_get","parameters":[{"name":"symptoms","in":"query","required":true,"schema":{"type":"string","title":"Symptoms"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Diagnose Api Tcg Diagnose Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tcg/telemetry":{"get":{"tags":["tcg"],"summary":"Deep system telemetry (admin)","operationId":"telemetry_api_tcg_telemetry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Telemetry Api Tcg Telemetry Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tcg/work-order":{"post":{"tags":["tcg"],"summary":"Render fillable TCG26 work-order PDF","operationId":"work_order_api_tcg_work_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}},"application/pdf":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tcg/work-order/sample":{"get":{"tags":["tcg"],"summary":"Render a demo work-order PDF (admin)","operationId":"work_order_sample_api_tcg_work_order_sample_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/semantic/":{"get":{"tags":["semantic"],"summary":"Status of the semantic index","operationId":"index_api_semantic__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Semantic  Get"}}}}}}},"/api/semantic/search":{"get":{"tags":["semantic"],"summary":"Semantic search over published findings","operationId":"search_api_semantic_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":500,"title":"Q"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"default":5,"title":"K"}},{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.3,"title":"Min Score"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Api Semantic Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/semantic/reindex":{"post":{"tags":["semantic"],"summary":"Force re-embedding of all published findings (admin)","operationId":"reindex_api_semantic_reindex_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reindex Api Semantic Reindex Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users":{"get":{"tags":["admin:users"],"summary":"List admin users","operationId":"list_users_api_admin_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["admin:users"],"summary":"Create admin user","operationId":"create_user_api_admin_users_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/users/{user_id}/status":{"patch":{"tags":["admin:users"],"summary":"Enable/disable user","operationId":"update_status_api_admin_users__user_id__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routes__admin__users__StatusIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}/password":{"post":{"tags":["admin:users"],"summary":"Change own password","operationId":"change_password_api_admin_users__user_id__password_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChangeIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/me/rotate-password":{"post":{"tags":["admin:users"],"summary":"Rotate own password — atomic DB + .admin_credentials + .env sync","description":"Single-shot rotation that updates ALL three places at once so the\nloopback auto-token doesn't fall out of sync. Returns the new password\nONCE in the response — store it before closing the page.","operationId":"rotate_my_password_api_admin_users_me_rotate_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Rotate My Password Api Admin Users Me Rotate Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/apps":{"get":{"tags":["admin:apps"],"summary":"List apps","operationId":"list_apps_api_admin_apps_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["admin:apps"],"summary":"Create app — returns secret ONCE","operationId":"create_app_api_admin_apps_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/apps/{app_id}":{"get":{"tags":["admin:apps"],"summary":"Get app details","operationId":"get_app_api_admin_apps__app_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin:apps"],"summary":"Update app","operationId":"update_app_api_admin_apps__app_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppUpdateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:apps"],"summary":"Delete app + cascade related rows","operationId":"delete_app_api_admin_apps__app_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/apps/{app_id}/stats":{"get":{"tags":["admin:apps"],"summary":"App usage stats","operationId":"app_stats_api_admin_apps__app_id__stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/apps/{app_id}/rotate-secret":{"post":{"tags":["admin:apps"],"summary":"Rotate app secret — returns new secret ONCE","operationId":"rotate_secret_api_admin_apps__app_id__rotate_secret_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/files":{"get":{"tags":["admin:files"],"summary":"List all files (any tenant)","operationId":"list_all_api_admin_files_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"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/admin/files/{file_id}":{"delete":{"tags":["admin:files"],"summary":"Force-delete file","operationId":"delete_file_api_admin_files__file_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/files/quarantine":{"get":{"tags":["admin:files"],"summary":"List quarantined files","operationId":"quarantined_api_admin_files_quarantine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/logs":{"get":{"tags":["admin:logs"],"summary":"Query server logs","operationId":"server_logs_api_admin_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(debug|info|warn|warning|error|critical)$"},{"type":"null"}],"title":"Level"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"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/admin/logs/audit":{"get":{"tags":["admin:logs"],"summary":"Query audit log","operationId":"audit_logs_api_admin_logs_audit_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Type"}},{"name":"outcome","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"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/admin/logs/requests":{"get":{"tags":["admin:logs"],"summary":"Query per-request metrics","operationId":"requests_api_admin_logs_requests_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status_min","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Status Min"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/system/ai-audit-tail":{"get":{"tags":["admin:system"],"summary":"Last N lines of data/ai_requests.jsonl (public-AI gateway audit)","description":"Read the tail of the public-AI gateway audit log so the control-center\nplayground can display recent /api/public/{chat,summarize,code,vision*}\nrequests. Admin-gated. limit clamped to [1, 200].","operationId":"ai_audit_tail_api_admin_system_ai_audit_tail_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ai Audit Tail Api Admin System Ai Audit Tail Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/system/info":{"get":{"tags":["admin:system"],"summary":"System info","operationId":"system_info_api_admin_system_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/system/config":{"get":{"tags":["admin:system"],"summary":"Static + runtime config (secrets redacted)","operationId":"get_config_api_admin_system_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/system/disk":{"get":{"tags":["admin:system"],"summary":"Disk usage","operationId":"disk_api_admin_system_disk_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/system/backup":{"post":{"tags":["admin:system"],"summary":"Run a manual backup","operationId":"manual_backup_api_admin_system_backup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/system/backups":{"get":{"tags":["admin:system"],"summary":"List backups","operationId":"list_backups_api_admin_system_backups_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/system/prune-logs":{"post":{"tags":["admin:system"],"summary":"Prune logs older than N days","operationId":"prune_logs_api_admin_system_prune_logs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/network":{"get":{"tags":["admin:network"],"summary":"Get current network/TLS config snapshot","operationId":"get_network_api_admin_network_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/network/public-ip":{"get":{"tags":["admin:network"],"summary":"Detect public IP + UPnP gateway state","operationId":"public_ip_api_admin_network_public_ip_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/network/mappings":{"get":{"tags":["admin:network"],"summary":"List current UPnP port mappings (best-effort)","description":"Probes the gateway for the server's main port + a few common ones.\nUPnP IGDv1 has no 'list all' call — we look up specific ports instead.","operationId":"list_mappings_api_admin_network_mappings_get","security":[{"HTTPBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["admin:network"],"summary":"Open a UPnP port mapping","operationId":"add_mapping_api_admin_network_mappings_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortMapIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:network"],"summary":"Remove a UPnP port mapping","operationId":"del_mapping_api_admin_network_mappings_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"external_port","in":"query","required":true,"schema":{"type":"integer","title":"External Port"}},{"name":"protocol","in":"query","required":false,"schema":{"type":"string","default":"TCP","title":"Protocol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tunnel":{"get":{"tags":["admin:tunnel"],"summary":"Tunnel config","operationId":"get_tunnel_api_admin_tunnel_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["admin:tunnel"],"summary":"Upsert tunnel config","operationId":"update_tunnel_api_admin_tunnel_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routes__admin__tunnel__TunnelIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/tunnel/health":{"get":{"tags":["admin:tunnel"],"summary":"Recent tunnel health","operationId":"tunnel_health_api_admin_tunnel_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/tunnel/health/latest":{"get":{"tags":["admin:tunnel"],"summary":"Most recent tunnel-health rows (for live dashboards)","description":"Compact form of /health: returns just the latest few probes for the dashboard dot.\n\nEach item: {status: 'up'|'down'|'degraded'|'unknown', latency_ms, error_message,\nmetadata, checked_at}.","operationId":"tunnel_health_latest_api_admin_tunnel_health_latest_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/external-security/config":{"get":{"tags":["admin:external-security"],"summary":"Read config","operationId":"get_config_api_admin_external_security_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["admin:external-security"],"summary":"Update one config key","operationId":"update_config_api_admin_external_security_config_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigUpdateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/external-security/origins":{"get":{"tags":["admin:external-security"],"summary":"List allowed origins","operationId":"list_origins_api_admin_external_security_origins_get","security":[{"HTTPBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["admin:external-security"],"summary":"Add allowed origin","operationId":"add_origin_api_admin_external_security_origins_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OriginIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:external-security"],"summary":"Remove allowed origin (origin in query)","operationId":"remove_origin_api_admin_external_security_origins_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"origin","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":2000,"title":"Origin"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/external-security/denials":{"get":{"tags":["admin:external-security"],"summary":"List recent denied requests","operationId":"denials_api_admin_external_security_denials_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"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/admin/external-security/posture":{"get":{"tags":["admin:external-security"],"summary":"Aggregated security posture summary","description":"One-shot dashboard: config + origin count + recent denials.\nUI calls this for the security overview card.","operationId":"posture_api_admin_external_security_posture_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/service-tokens":{"get":{"tags":["admin:service-tokens"],"summary":"List service tokens","operationId":"list_tokens_api_admin_service_tokens_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["admin:service-tokens"],"summary":"Create service token — secret returned ONCE","operationId":"create_token_api_admin_service_tokens_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/service-tokens/{token_id}":{"delete":{"tags":["admin:service-tokens"],"summary":"Revoke service token","operationId":"revoke_api_admin_service_tokens__token_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string","title":"Token Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cloudflare-access":{"get":{"tags":["admin:cf-access"],"summary":"Get Cloudflare Access config","operationId":"get_api_admin_cloudflare_access_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["admin:cf-access"],"summary":"Update Cloudflare Access config","operationId":"update_api_admin_cloudflare_access_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/security-events":{"get":{"tags":["admin:security-events"],"summary":"List security events","operationId":"list_events_api_admin_security_events_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"only_unresolved","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Only Unresolved"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/security-events/{event_id}/resolve":{"post":{"tags":["admin:security-events"],"summary":"Mark event resolved","operationId":"resolve_api_admin_security_events__event_id__resolve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cors-audit":{"get":{"tags":["admin:cors-audit"],"summary":"Recent origin verification attempts","operationId":"list__api_admin_cors_audit_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cors-audit/summary":{"get":{"tags":["admin:cors-audit"],"summary":"Allow / deny counts grouped by origin","operationId":"summary_api_admin_cors_audit_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/tips":{"get":{"tags":["admin:tips"],"summary":"List tips with filters","operationId":"list_tips_api_admin_tips_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"agency_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency Slug"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"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":{"type":"object","additionalProperties":true,"title":"Response List Tips Api Admin Tips Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tips/stats":{"get":{"tags":["admin:tips"],"summary":"Stats","operationId":"stats_api_admin_tips_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Admin Tips Stats Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/tips/{tid}":{"get":{"tags":["admin:tips"],"summary":"Detail","operationId":"detail_api_admin_tips__tid__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"integer","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Detail Api Admin Tips  Tid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin:tips"],"summary":"Remove","operationId":"remove_api_admin_tips__tid__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"integer","title":"Tid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Api Admin Tips  Tid  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tips/{tid}/status":{"patch":{"tags":["admin:tips"],"summary":"Set Status","operationId":"set_status_api_admin_tips__tid__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"integer","title":"Tid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routes__admin__tips__StatusIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Status Api Admin Tips  Tid  Status Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/backup/run":{"post":{"tags":["admin:backup"],"summary":"Run a hot SQLite backup now","operationId":"run_api_admin_backup_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunIn","default":{"include_uploads":true}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Api Admin Backup Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/backup":{"get":{"tags":["admin:backup"],"summary":"List backups","operationId":"listing_api_admin_backup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Listing Api Admin Backup Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/backup/{filename}/manifest":{"get":{"tags":["admin:backup"],"summary":"Peek a backup's manifest.json","operationId":"manifest_api_admin_backup__filename__manifest_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Manifest Api Admin Backup  Filename  Manifest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/backup/{filename}":{"delete":{"tags":["admin:backup"],"summary":"Delete","operationId":"delete_api_admin_backup__filename__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Api Admin Backup  Filename  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/connections/live":{"get":{"tags":["admin:connections"],"summary":"Last 60 seconds of requests","operationId":"live_api_admin_connections_live_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/connections/history":{"get":{"tags":["admin:connections"],"summary":"Paginated request history","operationId":"history_api_admin_connections_history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"}},{"name":"min_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":599,"minimum":100},{"type":"null"}],"title":"Min Status"}},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/connections/summary":{"get":{"tags":["admin:connections"],"summary":"Per-route totals + last seen","operationId":"summary_api_admin_connections_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"window_minutes","in":"query","required":false,"schema":{"type":"integer","maximum":10080,"minimum":1,"default":60,"title":"Window Minutes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sites":{"get":{"tags":["admin:sites"],"summary":"List configured sites","operationId":"list_sites_api_admin_sites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Sites Api Admin Sites Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/sites/probe":{"get":{"tags":["admin:sites"],"summary":"Live HEAD probe of every site, in parallel","description":"One HEAD request per site, 8s timeout, in parallel. Reports HTTP code,\nlatency, and whichever Netlify CDN headers are present (x-nf-request-id etc.).","operationId":"probe_api_admin_sites_probe_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Probe Api Admin Sites Probe Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/sites/{slug}/redeploy":{"post":{"tags":["admin:sites"],"summary":"Redeploy a site via the netlify CLI","operationId":"redeploy_api_admin_sites__slug__redeploy_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Redeploy Api Admin Sites  Slug  Redeploy Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccessIn":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"team_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Domain"},"audience_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience Tag"},"protect_admin_routes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Protect Admin Routes"},"protect_app_routes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Protect App Routes"},"validate_service_tokens":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Validate Service Tokens"}},"type":"object","title":"AccessIn"},"AccountIn":{"properties":{"label":{"type":"string","title":"Label"},"address":{"type":"string","format":"email","title":"Address"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"smtp_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Host"},"smtp_port":{"type":"integer","title":"Smtp Port","default":587},"smtp_use_tls":{"type":"boolean","title":"Smtp Use Tls","default":true},"smtp_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Username"},"smtp_password_env":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Password Env","description":"Env-var name that holds SMTP password"},"imap_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imap Host"},"imap_port":{"type":"integer","title":"Imap Port","default":993},"imap_use_ssl":{"type":"boolean","title":"Imap Use Ssl","default":true},"imap_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imap Username"},"imap_password_env":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imap Password Env"},"folder":{"type":"string","title":"Folder","default":"INBOX"},"poll_minutes":{"type":"integer","title":"Poll Minutes","default":5},"active":{"type":"boolean","title":"Active","default":true}},"type":"object","required":["label","address"],"title":"AccountIn"},"AckIn":{"properties":{"id":{"type":"integer","title":"Id"},"status":{"type":"string","title":"Status","default":"done"},"result":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["id"],"title":"AckIn"},"AdminLoginIn":{"properties":{"email":{"type":"string","maxLength":200,"minLength":1,"title":"Email"},"password":{"type":"string","maxLength":512,"minLength":1,"title":"Password"}},"type":"object","required":["email","password"],"title":"AdminLoginIn"},"AgentCreateIn":{"properties":{"label":{"type":"string","maxLength":80,"minLength":1,"title":"Label"},"tunnel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tunnel Url"}},"type":"object","required":["label"],"title":"AgentCreateIn"},"AnalyzeRequest":{"properties":{"camera_id":{"type":"string","title":"Camera Id","description":"Camera ID from /api/seymour/cameras"}},"type":"object","required":["camera_id"],"title":"AnalyzeRequest"},"AppIn":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"}},"type":"object","required":["name"],"title":"AppIn"},"AppTokenIn":{"properties":{"appId":{"type":"string","maxLength":128,"minLength":1,"title":"Appid"},"appSecret":{"type":"string","maxLength":256,"minLength":1,"title":"Appsecret"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Userid"}},"type":"object","required":["appId","appSecret"],"title":"AppTokenIn"},"AppUpdateIn":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"capabilities":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Capabilities"},"status":{"anyOf":[{"type":"string","pattern":"^(active|disabled)$"},{"type":"null"}],"title":"Status"}},"type":"object","title":"AppUpdateIn"},"AskBody":{"properties":{"prompt":{"type":"string","maxLength":8000,"minLength":1,"title":"Prompt"},"session_id":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[a-zA-Z0-9_\\-]+$","title":"Session Id"},"abstain_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Abstain Threshold","default":0.4},"use_emotion":{"type":"boolean","title":"Use Emotion","default":true},"use_workspace_context":{"type":"boolean","title":"Use Workspace Context","default":true}},"type":"object","required":["prompt","session_id"],"title":"AskBody"},"AuditBody":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"},"timeout_ms":{"type":"integer","maximum":60000.0,"minimum":2000.0,"title":"Timeout Ms","default":25000},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"wait_until":{"type":"string","pattern":"^(load|domcontentloaded|networkidle|commit)$","title":"Wait Until","default":"networkidle"}},"type":"object","required":["url"],"title":"AuditBody"},"Body_analyze_api_r2_analyze_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"Binary to analyze"},"deep":{"type":"boolean","title":"Deep","description":"Run aaa full-analyze (slower)","default":false},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["file"],"title":"Body_analyze_api_r2_analyze_post"},"Body_enroll_face_upload_api_vision_enroll_face_upload_post":{"properties":{"name":{"type":"string","maxLength":120,"title":"Name"},"notes":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Notes"},"identity_status":{"type":"string","maxLength":20,"title":"Identity Status","default":"authorized"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["name","file"],"title":"Body_enroll_face_upload_api_vision_enroll_face_upload_post"},"Body_files_upload_api_tools_v2_files_upload_post":{"properties":{"upload":{"type":"string","contentMediaType":"application/octet-stream","title":"Upload"},"target_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Dir"}},"type":"object","required":["upload"],"title":"Body_files_upload_api_tools_v2_files_upload_post"},"Body_public_vision_api_public_vision_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"JPEG/PNG/WebP, ≤ 5 MB"},"prompt":{"type":"string","title":"Prompt","description":"What to look for in the image"}},"type":"object","required":["file","prompt"],"title":"Body_public_vision_api_public_vision_post"},"Body_public_vision_deep_api_public_vision_deep_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"JPEG/PNG/WebP, ≤ 5 MB"},"prompt":{"type":"string","title":"Prompt","description":"What to look for in the image"}},"type":"object","required":["file","prompt"],"title":"Body_public_vision_deep_api_public_vision_deep_post"},"Body_server_stt_api_voice_stt_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"}},"type":"object","required":["audio"],"title":"Body_server_stt_api_voice_stt_post"},"Body_upload_api_explorer_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_api_explorer_upload_post"},"Body_upload_api_files_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_api_files_upload_post"},"Body_upload_photo_api_public_tips_photo_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"Image to attach to a tip"}},"type":"object","required":["file"],"title":"Body_upload_photo_api_public_tips_photo_post"},"BrowserErrorIn":{"properties":{"user":{"type":"string","maxLength":32,"title":"User","default":"anon"},"page":{"type":"string","maxLength":128,"title":"Page"},"msg":{"type":"string","maxLength":500,"title":"Msg"},"src":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Src"},"line":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Line"},"col":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Col"},"stack":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Stack"},"url":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}],"title":"Url"},"ua":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Ua"}},"type":"object","required":["page","msg"],"title":"BrowserErrorIn"},"ChatLogIn":{"properties":{"user":{"type":"string","maxLength":32,"title":"User"},"kind":{"type":"string","maxLength":24,"title":"Kind","default":"chat"},"source":{"type":"string","maxLength":64,"title":"Source","default":"unknown"},"prompt":{"type":"string","maxLength":8000,"title":"Prompt"},"response":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Response"}},"type":"object","required":["user","prompt"],"title":"ChatLogIn"},"ChatMessage":{"properties":{"role":{"type":"string","pattern":"^(system|user|assistant|tool)$","title":"Role"},"content":{"type":"string","title":"Content"}},"type":"object","required":["role","content"],"title":"ChatMessage"},"ChatRequest":{"properties":{"message":{"type":"string","title":"Message"},"history":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"History"}},"type":"object","required":["message"],"title":"ChatRequest"},"ChecklistItem":{"properties":{"item":{"type":"string","title":"Item"},"done":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Done","default":"☐"}},"type":"object","required":["item"],"title":"ChecklistItem"},"CodeIn":{"properties":{"prompt":{"type":"string","maxLength":8000,"minLength":1,"title":"Prompt"},"debug":{"type":"boolean","title":"Debug","description":"If true, route to tcg-debugger","default":false}},"type":"object","required":["prompt"],"title":"CodeIn"},"ConfigUpdateIn":{"properties":{"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"}},"type":"object","required":["key","value"],"title":"ConfigUpdateIn"},"ContactIn":{"properties":{"from":{"type":"string","maxLength":60,"minLength":1,"title":"From","default":"Sitter"},"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"},"urgency":{"type":"string","enum":["info","normal","high","emergency"],"title":"Urgency","default":"normal"}},"type":"object","required":["message"],"title":"ContactIn"},"CreateIn":{"properties":{"request_type":{"type":"string","title":"Request Type","default":"flock_org_audit"},"agency_name":{"type":"string","maxLength":200,"minLength":2,"title":"Agency Name"},"agency_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency Email"},"agency_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency Slug"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"type":"string","title":"State","default":"IN"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"requester_name":{"type":"string","title":"Requester Name","default":""},"requester_email":{"type":"string","title":"Requester Email","default":""},"requester_org":{"type":"string","title":"Requester Org","default":""},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"status":{"type":"string","title":"Status","default":"draft"}},"type":"object","required":["agency_name"],"title":"CreateIn"},"CreateUserIn":{"properties":{"email":{"type":"string","maxLength":200,"minLength":1,"title":"Email"},"password":{"type":"string","maxLength":512,"minLength":8,"title":"Password"},"role":{"type":"string","pattern":"^(admin|operator|viewer)$","title":"Role","default":"admin"}},"type":"object","required":["email","password"],"title":"CreateUserIn"},"CustomerIn":{"properties":{"brand_slug":{"type":"string","minLength":2,"title":"Brand Slug"},"name":{"type":"string","minLength":1,"title":"Name"},"kind":{"type":"string","pattern":"^(person|business|nonprofit|gov)$","title":"Kind","default":"person"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"county":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State","default":"IN"},"zip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zip"},"status":{"type":"string","title":"Status","default":"active"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["brand_slug","name"],"title":"CustomerIn"},"DetectionIn":{"properties":{"label":{"type":"string","maxLength":40,"title":"Label"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"},"matched_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Matched Name"},"match_distance":{"anyOf":[{"type":"number","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Match Distance"},"threat_assessed":{"type":"boolean","title":"Threat Assessed","default":false},"threat_reasoning":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Threat Reasoning"},"snapshot_path":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Snapshot Path"},"ts":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Ts"}},"type":"object","required":["label","confidence"],"title":"DetectionIn"},"DevicePingIn":{"properties":{"site":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Site"},"session_id":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Session Id"},"user":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"User"},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon"},"accuracy_m":{"anyOf":[{"type":"number","maximum":1000000.0,"minimum":0.0},{"type":"null"}],"title":"Accuracy M"},"altitude_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Altitude M"},"speed_mps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Speed Mps"},"heading_deg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Heading Deg"},"page":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}],"title":"Page"},"extra":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Extra"}},"type":"object","title":"DevicePingIn"},"DispatchIn":{"properties":{"message":{"type":"string","minLength":2,"title":"Message"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"timeout":{"type":"number","maximum":90.0,"minimum":2.0,"title":"Timeout","default":30.0}},"type":"object","required":["message"],"title":"DispatchIn"},"EventIn":{"properties":{"kind":{"type":"string","maxLength":40,"title":"Kind"},"title":{"type":"string","maxLength":200,"title":"Title"},"predicted_date":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Predicted Date"},"actual_date":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Actual Date"},"region":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Region"},"summary":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Summary"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence","default":0.7},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"}},"type":"object","required":["kind","title"],"title":"EventIn"},"ExcelRequest":{"properties":{"sheets":{"items":{"$ref":"#/components/schemas/ExcelSheet"},"type":"array","title":"Sheets"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},"type":"object","required":["sheets"],"title":"ExcelRequest"},"ExcelSheet":{"properties":{"name":{"type":"string","title":"Name"},"columns":{"items":{"type":"string"},"type":"array","title":"Columns"},"rows":{"items":{"items":{},"type":"array"},"type":"array","title":"Rows"},"freeze_header":{"type":"boolean","title":"Freeze Header","default":true}},"type":"object","required":["name"],"title":"ExcelSheet"},"FBPost":{"properties":{"page_id":{"type":"string","title":"Page Id"},"message":{"type":"string","title":"Message"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"}},"type":"object","required":["page_id","message"],"title":"FBPost"},"GenerateIn":{"properties":{"prompt":{"type":"string","maxLength":200000,"minLength":1,"title":"Prompt"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Options"}},"type":"object","required":["prompt"],"title":"GenerateIn"},"GmailCallback":{"properties":{"code":{"type":"string","title":"Code"},"redirect_uri":{"type":"string","title":"Redirect Uri"}},"type":"object","required":["code","redirect_uri"],"title":"GmailCallback"},"GmailSend":{"properties":{"to":{"type":"string","title":"To"},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"},"from_addr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Addr"}},"type":"object","required":["to","subject","body"],"title":"GmailSend"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HeartbeatIn":{"properties":{"host":{"type":"string","title":"Host","default":""},"ip":{"type":"string","title":"Ip","default":""},"version":{"type":"string","title":"Version","default":""},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"}},"type":"object","title":"HeartbeatIn"},"ImageGenRequest":{"properties":{"prompt":{"type":"string","maxLength":4000,"minLength":2,"title":"Prompt"},"provider":{"type":"string","pattern":"^(auto|openai|stability)$","title":"Provider","default":"auto"},"size":{"type":"string","title":"Size","default":"1024x1024"},"aspect_ratio":{"type":"string","title":"Aspect Ratio","default":"1:1"}},"type":"object","required":["prompt"],"title":"ImageGenRequest"},"IngestBody":{"properties":{"resource_id":{"type":"string","minLength":4,"title":"Resource Id"},"source_url":{"type":"string","minLength":10,"title":"Source Url"},"filter_surveillance_only":{"type":"boolean","title":"Filter Surveillance Only","default":true},"max_rows":{"type":"integer","title":"Max Rows","default":0}},"type":"object","required":["resource_id","source_url"],"title":"IngestBody"},"IntegrationUpdate":{"properties":{"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value","description":"New value, or empty string to clear."}},"type":"object","required":["value"],"title":"IntegrationUpdate"},"InteractionIn":{"properties":{"kind":{"type":"string","pattern":"^(call|email|visit|remote|note)$","title":"Kind","default":"note"},"summary":{"type":"string","minLength":1,"title":"Summary"},"happened_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Happened At"},"minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Minutes"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"}},"type":"object","required":["summary"],"title":"InteractionIn"},"InvoiceIn":{"properties":{"brand_slug":{"type":"string","title":"Brand Slug"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number"},"issued_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Issued At"},"due_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Due At"},"status":{"type":"string","pattern":"^(draft|sent|paid|void|overdue)$","title":"Status","default":"draft"},"total_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Cents"},"currency":{"type":"string","title":"Currency","default":"USD"},"line_items":{"items":{"$ref":"#/components/schemas/InvoiceLine"},"type":"array","title":"Line Items"},"memo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Memo"}},"type":"object","required":["brand_slug"],"title":"InvoiceIn"},"InvoiceLine":{"properties":{"description":{"type":"string","title":"Description"},"cents":{"type":"integer","title":"Cents","default":0},"quantity":{"type":"integer","title":"Quantity","default":1}},"type":"object","required":["description"],"title":"InvoiceLine"},"LinkCheckBody":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"},"timeout_ms":{"type":"integer","maximum":60000.0,"minimum":2000.0,"title":"Timeout Ms","default":25000},"same_origin_only":{"type":"boolean","title":"Same Origin Only","default":true},"max_links":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Max Links","default":60}},"type":"object","required":["url"],"title":"LinkCheckBody"},"LogIn":{"properties":{"level":{"type":"string","title":"Level","default":"info"},"msg":{"type":"string","title":"Msg"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},"type":"object","required":["msg"],"title":"LogIn"},"NmapBody":{"properties":{"target":{"type":"string","maxLength":253,"minLength":1,"title":"Target"},"ports":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ports"},"fast":{"type":"boolean","title":"Fast","default":true},"timeout":{"type":"integer","maximum":300.0,"minimum":5.0,"title":"Timeout","default":60}},"type":"object","required":["target"],"title":"NmapBody"},"OllamaChatIn":{"properties":{"model":{"type":"string","maxLength":100,"title":"Model","default":"tcg-assistant"},"messages":{"items":{"$ref":"#/components/schemas/OllamaMessage"},"type":"array","maxItems":200,"title":"Messages"},"temperature":{"anyOf":[{"type":"number","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Temperature"},"num_predict":{"anyOf":[{"type":"integer","maximum":8192.0,"minimum":1.0},{"type":"null"}],"title":"Num Predict"}},"type":"object","required":["messages"],"title":"OllamaChatIn"},"OllamaMessage":{"properties":{"role":{"type":"string","pattern":"^(system|user|assistant|tool)$","title":"Role"},"content":{"type":"string","maxLength":200000,"title":"Content"}},"type":"object","required":["role","content"],"title":"OllamaMessage"},"OriginIn":{"properties":{"origin":{"type":"string","maxLength":2000,"minLength":1,"title":"Origin"},"type":{"type":"string","pattern":"^(app|admin|frontend|other)$","title":"Type","default":"app"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["origin"],"title":"OriginIn"},"OutboundIn":{"properties":{"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"},"to":{"type":"string","format":"email","title":"To"},"subject":{"type":"string","maxLength":300,"minLength":1,"title":"Subject"},"body_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Text"},"body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Html"}},"type":"object","required":["to","subject"],"title":"OutboundIn"},"PasswordChangeIn":{"properties":{"oldPassword":{"type":"string","title":"Oldpassword"},"newPassword":{"type":"string","maxLength":512,"minLength":8,"title":"Newpassword"}},"type":"object","required":["oldPassword","newPassword"],"title":"PasswordChangeIn"},"PatchIn":{"properties":{"agency_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency Email"},"agency_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency Slug"},"status":{"anyOf":[{"type":"string","pattern":"^(draft|sent|acknowledged|partial|responded|ingested|denied|expired)$"},{"type":"null"}],"title":"Status"},"response_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Text"},"response_docs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Response Docs"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"sent_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sent At"},"response_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response At"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"}},"type":"object","title":"PatchIn"},"PathBody":{"properties":{"path":{"type":"string","maxLength":500,"minLength":1,"title":"Path"},"timeout":{"type":"integer","maximum":300.0,"minimum":30.0,"title":"Timeout","default":180}},"type":"object","required":["path"],"title":"PathBody"},"PortMapIn":{"properties":{"external_port":{"type":"integer","maximum":65535.0,"minimum":1.0,"title":"External Port"},"internal_port":{"type":"integer","maximum":65535.0,"minimum":1.0,"title":"Internal Port"},"internal_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Ip"},"protocol":{"type":"string","pattern":"^(TCP|UDP)$","title":"Protocol","default":"TCP"},"description":{"type":"string","title":"Description","default":"TCG home server"},"lease_seconds":{"type":"integer","title":"Lease Seconds","default":0}},"type":"object","required":["external_port","internal_port"],"title":"PortMapIn"},"ProxyIn":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"method":{"type":"string","title":"Method","default":"GET"},"path":{"type":"string","title":"Path","default":"/"},"body":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"},{"type":"null"}],"title":"Body"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers"}},"type":"object","required":["agent_id"],"title":"ProxyIn"},"PublicAskIn":{"properties":{"prompt":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"Prompt"},"system":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"System"},"messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Messages"},"model":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Model"}},"type":"object","title":"PublicAskIn"},"PushIn":{"properties":{"user":{"type":"string","maxLength":32,"minLength":1,"title":"User"},"kind":{"type":"string","maxLength":32,"minLength":1,"title":"Kind","default":"default"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Payload"}},"type":"object","required":["user","payload"],"title":"PushIn"},"PwCheck":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"PwCheck"},"PwshBody":{"properties":{"arg":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Arg"},"timeout":{"type":"integer","maximum":300.0,"minimum":5.0,"title":"Timeout","default":60}},"type":"object","title":"PwshBody"},"QueueIn":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"cmd":{"type":"string","maxLength":80,"minLength":1,"title":"Cmd"},"args":{"additionalProperties":true,"type":"object","title":"Args"},"queued_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Queued By"}},"type":"object","required":["agent_id","cmd"],"title":"QueueIn"},"RefreshBody":{"properties":{"queries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Queries"}},"type":"object","title":"RefreshBody"},"RefreshOneBody":{"properties":{"slug":{"type":"string","maxLength":120,"minLength":2,"title":"Slug"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"type":"string","title":"State","default":"IN"}},"type":"object","required":["slug"],"title":"RefreshOneBody"},"RegexIn":{"properties":{"pattern":{"type":"string","maxLength":2000,"title":"Pattern"},"flags":{"type":"string","maxLength":10,"title":"Flags","default":""},"text":{"type":"string","maxLength":200000,"title":"Text"}},"type":"object","required":["pattern","text"],"title":"RegexIn"},"RotateIn":{"properties":{"oldPassword":{"type":"string","title":"Oldpassword"},"newPassword":{"anyOf":[{"type":"string","maxLength":512,"minLength":8},{"type":"null"}],"title":"Newpassword","description":"New password. If omitted, the server generates a 24-char random one and returns it ONCE."}},"type":"object","required":["oldPassword"],"title":"RotateIn"},"RouteIn":{"properties":{"message":{"type":"string","minLength":2,"title":"Message"}},"type":"object","required":["message"],"title":"RouteIn"},"RunIn":{"properties":{"note":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Note"},"include_uploads":{"type":"boolean","title":"Include Uploads","default":true}},"type":"object","title":"RunIn"},"SQLRequest":{"properties":{"query":{"type":"string","title":"Query"},"dsn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dsn"},"limit":{"type":"integer","title":"Limit","default":500}},"type":"object","required":["query"],"title":"SQLRequest"},"ScrapeOneBody":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"},"source":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Source"},"with_images":{"type":"boolean","title":"With Images","default":true}},"type":"object","required":["url"],"title":"ScrapeOneBody"},"ScrapeRequest":{"properties":{"url":{"type":"string","title":"Url"},"selectors":{"additionalProperties":{"type":"string"},"type":"object","title":"Selectors"}},"type":"object","required":["url","selectors"],"title":"ScrapeRequest"},"ScreenshotBody":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"},"timeout_ms":{"type":"integer","maximum":60000.0,"minimum":2000.0,"title":"Timeout Ms","default":25000},"width":{"type":"integer","maximum":2400.0,"minimum":320.0,"title":"Width","default":1280},"height":{"type":"integer","maximum":2400.0,"minimum":320.0,"title":"Height","default":800},"full_page":{"type":"boolean","title":"Full Page","default":false},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"wait_until":{"type":"string","pattern":"^(load|domcontentloaded|networkidle|commit)$","title":"Wait Until","default":"networkidle"}},"type":"object","required":["url"],"title":"ScreenshotBody"},"SearchIn":{"properties":{"query":{"type":"string","maxLength":2000,"minLength":1,"title":"Query"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":10}},"type":"object","required":["query"],"title":"SearchIn"},"SemgrepBody":{"properties":{"path":{"type":"string","maxLength":500,"minLength":1,"title":"Path"},"timeout":{"type":"integer","maximum":300.0,"minimum":30.0,"title":"Timeout","default":180},"config":{"type":"string","maxLength":80,"minLength":1,"title":"Config","default":"auto"}},"type":"object","required":["path"],"title":"SemgrepBody"},"SubIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"scope":{"type":"string","title":"Scope","default":"all"}},"type":"object","required":["email"],"title":"SubIn"},"SummarizeIn":{"properties":{"text":{"type":"string","maxLength":20000,"minLength":1,"title":"Text"}},"type":"object","required":["text"],"title":"SummarizeIn"},"SyftBody":{"properties":{"path":{"type":"string","maxLength":500,"minLength":1,"title":"Path"},"timeout":{"type":"integer","maximum":300.0,"minimum":30.0,"title":"Timeout","default":180},"fmt":{"type":"string","pattern":"^(cyclonedx-json|spdx-json|syft-json|table)$","title":"Fmt","default":"cyclonedx-json"}},"type":"object","required":["path"],"title":"SyftBody"},"TextIn":{"properties":{"text":{"type":"string","maxLength":200000,"title":"Text"}},"type":"object","required":["text"],"title":"TextIn"},"TextRequest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"TextRequest"},"TicketIn":{"properties":{"brand_slug":{"type":"string","title":"Brand Slug"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"subject":{"type":"string","minLength":2,"title":"Subject"},"body_md":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Md"},"priority":{"type":"string","pattern":"^(low|normal|high|urgent)$","title":"Priority","default":"normal"},"status":{"type":"string","pattern":"^(open|in_progress|waiting|closed|resolved)$","title":"Status","default":"open"},"assigned_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"}},"type":"object","required":["brand_slug","subject"],"title":"TicketIn"},"TipIn":{"properties":{"subject":{"type":"string","maxLength":200,"minLength":2,"title":"Subject"},"story":{"type":"string","maxLength":8000,"minLength":10,"title":"Story"},"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Email"},"county":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"County"},"category":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Category","description":"surveillance_sighting | camera_location | misuse | other"},"city":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"City"},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon"},"agency_slug":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Agency Slug"},"photo_url":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Photo Url"}},"type":"object","required":["subject","story"],"title":"TipIn"},"TokenIn":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"appId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Appid"},"allowedRoutes":{"items":{"type":"string"},"type":"array","title":"Allowedroutes"},"allowedIps":{"items":{"type":"string"},"type":"array","title":"Allowedips"},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiresat"}},"type":"object","required":["name"],"title":"TokenIn"},"TokenVerifyIn":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"TokenVerifyIn"},"TrivyImageBody":{"properties":{"image":{"type":"string","maxLength":200,"minLength":1,"title":"Image"},"timeout":{"type":"integer","maximum":300.0,"minimum":30.0,"title":"Timeout","default":180}},"type":"object","required":["image"],"title":"TrivyImageBody"},"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"},"VisitIn":{"properties":{"site":{"type":"string","maxLength":64,"minLength":1,"title":"Site"},"path":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Path"},"session_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":8},{"type":"null"}],"title":"Session Id"},"referrer":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Referrer"}},"type":"object","required":["site"],"title":"VisitIn"},"WatchIn":{"properties":{"symbol":{"type":"string","maxLength":12,"minLength":1,"title":"Symbol"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["symbol"],"title":"WatchIn"},"WebFetchIn":{"properties":{"url":{"type":"string","maxLength":2000,"title":"Url"},"method":{"type":"string","pattern":"^(GET|POST|HEAD)$","title":"Method","default":"GET"},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers"},"body":{"anyOf":[{"type":"string","maxLength":100000},{"type":"null"}],"title":"Body"},"follow_redirects":{"type":"boolean","title":"Follow Redirects","default":true}},"type":"object","required":["url"],"title":"WebFetchIn"},"WebcamIn":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"county":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"},"state":{"type":"string","title":"State","default":"IN"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"embed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Embed Url"},"owner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner"},"license":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"License"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"status":{"type":"string","title":"Status","default":"pending"}},"type":"object","required":["name"],"title":"WebcamIn"},"WorkOrderIn":{"properties":{"business_name":{"type":"string","title":"Business Name","default":"That Computer Guy 26"},"owner":{"type":"string","title":"Owner","default":"Gary Amick"},"phone":{"type":"string","title":"Phone","default":"812-414-9097"},"address":{"type":"string","title":"Address","default":"390 S Jackson Park Drive, Seymour, IN 47274"},"email1":{"type":"string","title":"Email1","default":"gdamick@thatcomputerguy26.org"},"email2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email2"},"work_order_no":{"type":"string","title":"Work Order No","default":""},"invoice_no":{"type":"string","title":"Invoice No","default":""},"date_received":{"type":"string","title":"Date Received","default":""},"client_name":{"type":"string","title":"Client Name","default":""},"client_phone":{"type":"string","title":"Client Phone","default":""},"client_email":{"type":"string","title":"Client Email","default":""},"client_address":{"type":"string","title":"Client Address","default":""},"services":{"items":{"$ref":"#/components/schemas/WorkOrderItem"},"type":"array","title":"Services"},"parts":{"items":{"$ref":"#/components/schemas/WorkOrderItem"},"type":"array","title":"Parts"},"checklist":{"items":{"$ref":"#/components/schemas/ChecklistItem"},"type":"array","title":"Checklist"},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","title":"WorkOrderIn"},"WorkOrderItem":{"properties":{"desc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Desc"},"hours":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Hours"},"rate":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Rate"},"qty":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Qty"},"unit_cost":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Unit Cost"}},"type":"object","title":"WorkOrderItem"},"YTDownloadRequest":{"properties":{"url":{"type":"string","minLength":8,"title":"Url"},"mode":{"type":"string","pattern":"^(audio|video)$","title":"Mode","default":"video"},"quality":{"type":"string","title":"Quality","default":"best"}},"type":"object","required":["url"],"title":"YTDownloadRequest"},"YTRequest":{"properties":{"url":{"type":"string","minLength":8,"title":"Url"}},"type":"object","required":["url"],"title":"YTRequest"},"_ChatIn":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/_ChatMessage"},"type":"array","title":"Messages"},"model":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Model"},"stream":{"type":"boolean","title":"Stream","default":false},"options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Options"}},"type":"object","required":["messages"],"title":"_ChatIn"},"_ChatMessage":{"properties":{"role":{"type":"string","pattern":"^(system|user|assistant|tool)$","title":"Role"},"content":{"type":"string","maxLength":200000,"title":"Content"}},"type":"object","required":["role","content"],"title":"_ChatMessage"},"app__routes__admin__tips__StatusIn":{"properties":{"status":{"type":"string","pattern":"^(new|triaged|opened|rejected|published|verified)$","title":"Status"},"staff_note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Staff Note"}},"type":"object","required":["status"],"title":"StatusIn"},"app__routes__admin__tunnel__TunnelIn":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"public_hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Hostname"},"local_target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Local Target"},"credentials_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credentials Path"},"auto_reconnect":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Reconnect"}},"type":"object","title":"TunnelIn"},"app__routes__admin__users__StatusIn":{"properties":{"status":{"type":"string","pattern":"^(active|disabled)$","title":"Status"}},"type":"object","required":["status"],"title":"StatusIn"},"app__routes__ai__ChatIn":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/ChatMessage"},"type":"array","title":"Messages"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"stream":{"type":"boolean","title":"Stream","default":false}},"type":"object","required":["messages"],"title":"ChatIn"},"app__routes__foia_requests__DraftIn":{"properties":{"request_type":{"type":"string","maxLength":40,"minLength":2,"title":"Request Type","default":"flock_org_audit"},"agency_name":{"type":"string","maxLength":200,"minLength":2,"title":"Agency Name"},"state":{"type":"string","maxLength":4,"minLength":2,"title":"State","default":"IN"},"requester_name":{"type":"string","maxLength":200,"title":"Requester Name","default":""},"requester_email":{"type":"string","maxLength":200,"title":"Requester Email","default":""},"requester_org":{"type":"string","maxLength":200,"title":"Requester Org","default":""}},"type":"object","required":["agency_name"],"title":"DraftIn"},"app__routes__home_agent__TunnelIn":{"properties":{"tunnel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tunnel Url"}},"type":"object","title":"TunnelIn"},"app__routes__public_ai__ChatIn":{"properties":{"prompt":{"type":"string","maxLength":8000,"minLength":1,"title":"Prompt"},"system":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"System"}},"type":"object","required":["prompt"],"title":"ChatIn"},"app__routes__workforce__DraftIn":{"properties":{"role":{"type":"string","enum":["researcher","writer","editor","publisher","reporter"],"title":"Role"},"topic":{"type":"string","maxLength":200,"title":"Topic"},"title":{"type":"string","maxLength":300,"title":"Title"},"body":{"type":"string","maxLength":10000,"title":"Body"},"target_page":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Target Page"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["role","topic","title","body"],"title":"DraftIn"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}