{"openapi":"3.1.0","info":{"title":"ERUX Astrology & Ephemeris Engine","description":"High-precision topocentric ephemeris, Vimshottari Dasha, transit horoscopes, and Vedic charts.","version":"2.0.2","x-logo":{"url":"https://erux.ai/icon.png","altText":"ERUX Logo"},"x-icon":"https://erux.ai/icon.png"},"paths":{"/qc/metrics":{"get":{"tags":["QC Monitoring"],"summary":"Get Qc Metrics","description":"Get QC metrics for monitoring response quality and knowledge base usage","operationId":"get_qc_metrics_qc_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qc/cache-stats":{"get":{"tags":["QC Monitoring"],"summary":"Get Cache Stats","description":"Get context cache statistics","operationId":"get_cache_stats_qc_cache_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qc/recent-metrics":{"get":{"tags":["QC Monitoring"],"summary":"Get Recent Metrics","description":"Get recent QC metrics for monitoring\n\nArgs:\n    limit: Number of recent metrics to return (default: 10)","operationId":"get_recent_metrics_qc_recent_metrics_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/qc/knowledge-base-usage":{"get":{"tags":["QC Monitoring"],"summary":"Get Knowledge Base Usage","description":"Get knowledge base usage statistics","operationId":"get_knowledge_base_usage_qc_knowledge_base_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qc/cleanup-cache":{"post":{"tags":["QC Monitoring"],"summary":"Cleanup Cache","description":"Manually cleanup expired cache entries","operationId":"cleanup_cache_qc_cleanup_cache_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qc/system-health":{"get":{"tags":["QC Monitoring"],"summary":"Get System Health","description":"Get overall system health including cache and QC metrics","operationId":"get_system_health_qc_system_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qc/performance-summary":{"get":{"tags":["QC Monitoring"],"summary":"Get Performance Summary","description":"Get performance summary including token savings and response times","operationId":"get_performance_summary_qc_performance_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qc/session-analytics/{session_id}":{"get":{"tags":["QC Monitoring"],"summary":"Get Session Analytics","description":"Get comprehensive analytics for a specific session","operationId":"get_session_analytics_qc_session_analytics__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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/qc/analytics/overview":{"get":{"tags":["QC Monitoring"],"summary":"Get Analytics Overview","description":"Get overall analytics overview across all sessions","operationId":"get_analytics_overview_qc_analytics_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/debug/trace-query":{"post":{"tags":["debug"],"summary":"Trace Query","description":"Execute a QA query with full tracing enabled.\n\n**Authentication Required**: This endpoint requires a valid JWT token.\n\n**Debug Mode Required**: Set ENABLE_DEBUG_ENDPOINTS=true in environment.\n\nReturns the answer plus detailed trace data including:\n- All service method calls with timing\n- Knowledge base sources retrieved with scores\n- LLM metrics (tokens, model, latency)\n- Total request duration\n\nExample response:\n```json\n{\n    \"answer\": \"With Sun in your 10th house...\",\n    \"trace\": {\n        \"trace_id\": \"abc12345\",\n        \"query\": \"What does Sun in 10th house mean?\",\n        \"total_duration_ms\": 1850,\n        \"services_called\": [...],\n        \"kb_sources_used\": [...],\n        \"llm_metrics\": {...}\n    }\n}\n```","operationId":"trace_query_api_debug_trace_query_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceQueryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceQueryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/debug/trace-status":{"get":{"tags":["debug"],"summary":"Get Trace Status","description":"Get the current status of the tracing system.\n\n**Authentication Required**: This endpoint requires a valid JWT token.","operationId":"get_trace_status_api_debug_trace_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/debug/sample-chart":{"get":{"tags":["debug"],"summary":"Get Sample Chart","description":"Get the sample chart data used for testing when no chart is provided.\n\n**Authentication Required**: This endpoint requires a valid JWT token.","operationId":"get_sample_chart_api_debug_sample_chart_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/analytics/track-event":{"post":{"tags":["analytics"],"summary":"Track Event","description":"Track an analytics event","operationId":"track_event_analytics_track_event_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsEventRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/track-query":{"post":{"tags":["analytics"],"summary":"Track Query","description":"Track a user query or interaction","operationId":"track_query_analytics_track_query_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserQueryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/start-session":{"post":{"tags":["analytics"],"summary":"Start Session","description":"Start tracking a user session","operationId":"start_session_analytics_start_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/end-session/{session_id}":{"post":{"tags":["analytics"],"summary":"End Session","description":"End a user session","operationId":"end_session_analytics_end_session__session_id__post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/update-session/{session_id}":{"post":{"tags":["analytics"],"summary":"Update Session Activity","description":"Update session activity","operationId":"update_session_activity_analytics_update_session__session_id__post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/user/{user_id}":{"get":{"tags":["analytics"],"summary":"Get User Analytics","description":"Get analytics data for a specific user","operationId":"get_user_analytics_analytics_user__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"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"}}}}}}},"/analytics/system":{"get":{"tags":["analytics"],"summary":"Get System Analytics","description":"Get system-wide analytics data","operationId":"get_system_analytics_analytics_system_get","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"}}}}}}},"/analytics/batch-track":{"post":{"tags":["analytics"],"summary":"Batch Track Events","description":"Track multiple events in a single request","operationId":"batch_track_events_analytics_batch_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchEventRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/admin/dashboard":{"get":{"tags":["analytics"],"summary":"Legacy Admin Dashboard Proxy","description":"Seamlessly route legacy dashboard calls to the hardened Admin forensic suite.\nEnsures 100% data flow with institutional-grade authentication.","operationId":"legacy_admin_dashboard_proxy_analytics_admin_dashboard_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/email/open":{"get":{"tags":["analytics"],"summary":"Track Email Open","description":"Track email open event using transparent pixel","operationId":"track_email_open_analytics_email_open_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"cadence","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cadence"}},{"name":"sent_at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sent At"}},{"name":"campaign","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign"}},{"name":"stream_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/email/click":{"get":{"tags":["analytics"],"summary":"Track Email Click","description":"Track email click event and safely redirect to target destination","operationId":"track_email_click_analytics_email_click_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"cadence","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cadence"}},{"name":"link_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Type"}},{"name":"element_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Element Id"}},{"name":"campaign","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign"}},{"name":"stream_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/":{"post":{"tags":["contact"],"summary":"Submit Contact Form","description":"Submit a contact form","operationId":"submit_contact_form_contact__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactFormData"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get Contact Submissions","description":"Get contact form submissions (admin endpoint)","operationId":"get_contact_submissions_contact__get","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":"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/test-email":{"post":{"tags":["contact"],"summary":"Test Email Notification","description":"Test email notification functionality","operationId":"test_email_notification_contact_test_email_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contact/{submission_id}":{"put":{"tags":["contact"],"summary":"Update Contact Submission","description":"Update contact form submission status (admin endpoint)","operationId":"update_contact_submission_contact__submission_id__put","parameters":[{"name":"submission_id","in":"path","required":true,"schema":{"type":"integer","title":"Submission Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"admin_notes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Notes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/test-db":{"get":{"tags":["contact"],"summary":"Test Database Connection","description":"Test database connection and table existence","operationId":"test_database_connection_contact_test_db_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contact/test-simple":{"get":{"tags":["contact"],"summary":"Test Simple","description":"Simple test endpoint to verify contact route is working","operationId":"test_simple_contact_test_simple_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/export/chart-image/png":{"head":{"tags":["export"],"summary":"Export Chart Wheel Png","description":"Renders a high-resolution PNG chart wheel (Western/Hybrid Wheel or Vedic Kundli)\ndirectly over HTTP for ChatGPT, social media integrations, and external clients.","operationId":"export_chart_wheel_png_export_chart_image_png_head","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"system","in":"query","required":false,"schema":{"type":"string","default":"hybrid","title":"System"}},{"name":"house_system","in":"query","required":false,"schema":{"type":"string","default":"Placidus","title":"House System"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["export"],"summary":"Export Chart Wheel Png","description":"Renders a high-resolution PNG chart wheel (Western/Hybrid Wheel or Vedic Kundli)\ndirectly over HTTP for ChatGPT, social media integrations, and external clients.","operationId":"export_chart_wheel_png_export_chart_image_png_head","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"system","in":"query","required":false,"schema":{"type":"string","default":"hybrid","title":"System"}},{"name":"house_system","in":"query","required":false,"schema":{"type":"string","default":"Placidus","title":"House System"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/chart-wheel-png":{"head":{"tags":["export"],"summary":"Export Chart Wheel Png","description":"Renders a high-resolution PNG chart wheel (Western/Hybrid Wheel or Vedic Kundli)\ndirectly over HTTP for ChatGPT, social media integrations, and external clients.","operationId":"export_chart_wheel_png_export_chart_wheel_png_head","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"system","in":"query","required":false,"schema":{"type":"string","default":"hybrid","title":"System"}},{"name":"house_system","in":"query","required":false,"schema":{"type":"string","default":"Placidus","title":"House System"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["export"],"summary":"Export Chart Wheel Png","description":"Renders a high-resolution PNG chart wheel (Western/Hybrid Wheel or Vedic Kundli)\ndirectly over HTTP for ChatGPT, social media integrations, and external clients.","operationId":"export_chart_wheel_png_export_chart_wheel_png_head","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"system","in":"query","required":false,"schema":{"type":"string","default":"hybrid","title":"System"}},{"name":"house_system","in":"query","required":false,"schema":{"type":"string","default":"Placidus","title":"House System"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/chart-image/pdf":{"post":{"tags":["export"],"summary":"Export Chart Image Pdf","description":"Export standalone chart visualization to PDF","operationId":"export_chart_image_pdf_export_chart_image_pdf_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/chart/pdf":{"post":{"summary":"Export Chart Pdf","description":"Export complete chart analysis to PDF","operationId":"export_chart_pdf_export_chart_pdf_post","parameters":[{"name":"client_local_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Local Time"}},{"name":"ref","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fastapi___compat__v2__Body_export_chart_pdf_export_chart_pdf_post__2"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/qa/pdf":{"post":{"summary":"Export Qa Pdf","description":"Export Q&A response to PDF","operationId":"export_qa_pdf_export_qa_pdf_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/export/chart/summary/pdf":{"post":{"summary":"Export Chart Summary Pdf","description":"Export chart summary to PDF","operationId":"export_chart_summary_pdf_export_chart_summary_pdf_post","parameters":[{"name":"ref","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_export_chart_summary_pdf_export_chart_summary_pdf_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/formats":{"get":{"tags":["export"],"summary":"Get Export Formats","description":"Get available export formats and their capabilities\n\nReturns:\n    Dict containing available export formats","operationId":"get_export_formats_export_formats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Export Formats Export Formats Get"}}}}}}},"/export/preview":{"post":{"tags":["export"],"summary":"Preview Export","description":"Preview export content without generating the actual file\n\nArgs:\n    export_request: Export request parameters\n\nReturns:\n    Dict containing preview information","operationId":"preview_export_export_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Preview Export Export Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/chart-image/png":{"head":{"tags":["export"],"summary":"Export Chart Wheel Png","description":"Renders a high-resolution PNG chart wheel (Western/Hybrid Wheel or Vedic Kundli)\ndirectly over HTTP for ChatGPT, social media integrations, and external clients.","operationId":"export_chart_wheel_png_api_export_chart_image_png_head","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"system","in":"query","required":false,"schema":{"type":"string","default":"hybrid","title":"System"}},{"name":"house_system","in":"query","required":false,"schema":{"type":"string","default":"Placidus","title":"House System"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["export"],"summary":"Export Chart Wheel Png","description":"Renders a high-resolution PNG chart wheel (Western/Hybrid Wheel or Vedic Kundli)\ndirectly over HTTP for ChatGPT, social media integrations, and external clients.","operationId":"export_chart_wheel_png_api_export_chart_image_png_head","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"system","in":"query","required":false,"schema":{"type":"string","default":"hybrid","title":"System"}},{"name":"house_system","in":"query","required":false,"schema":{"type":"string","default":"Placidus","title":"House System"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/chart-wheel-png":{"head":{"tags":["export"],"summary":"Export Chart Wheel Png","description":"Renders a high-resolution PNG chart wheel (Western/Hybrid Wheel or Vedic Kundli)\ndirectly over HTTP for ChatGPT, social media integrations, and external clients.","operationId":"export_chart_wheel_png_api_export_chart_wheel_png_head","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"system","in":"query","required":false,"schema":{"type":"string","default":"hybrid","title":"System"}},{"name":"house_system","in":"query","required":false,"schema":{"type":"string","default":"Placidus","title":"House System"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["export"],"summary":"Export Chart Wheel Png","description":"Renders a high-resolution PNG chart wheel (Western/Hybrid Wheel or Vedic Kundli)\ndirectly over HTTP for ChatGPT, social media integrations, and external clients.","operationId":"export_chart_wheel_png_api_export_chart_wheel_png_head","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"","title":"City"}},{"name":"system","in":"query","required":false,"schema":{"type":"string","default":"hybrid","title":"System"}},{"name":"house_system","in":"query","required":false,"schema":{"type":"string","default":"Placidus","title":"House System"}},{"name":"title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/chart-image/pdf":{"post":{"tags":["export"],"summary":"Export Chart Image Pdf","description":"Export standalone chart visualization to PDF","operationId":"export_chart_image_pdf_api_export_chart_image_pdf_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/chart/pdf":{"post":{"tags":["export"],"summary":"Export Chart Pdf","description":"Export complete chart analysis to PDF\n\nArgs:\n    chart_data: Complete chart calculation data\n    birth_details: Birth information\n    options: Export options (interpretations, divisional charts, etc.)\n    ref: Optional referral identifier for attribution tracking\n\nReturns:\n    StreamingResponse: PDF file stream","operationId":"export_chart_pdf_api_export_chart_pdf_post","parameters":[{"name":"ref","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_export_chart_pdf_api_export_chart_pdf_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/qa/pdf":{"post":{"tags":["export"],"summary":"Export Qa Pdf","description":"Export Q&A response to PDF\n\nArgs:\n    request: JSON request containing question, answer, chart_data, birth_details, and options\n\nReturns:\n    StreamingResponse: PDF file stream","operationId":"export_qa_pdf_api_export_qa_pdf_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/chart/summary/pdf":{"post":{"tags":["export"],"summary":"Export Chart Summary Pdf","description":"Export chart summary to PDF (condensed version)\n\nArgs:\n    chart_data: Chart calculation data\n    birth_details: Birth information\n    ref: Optional referral identifier\n\nReturns:\n    StreamingResponse: PDF file stream","operationId":"export_chart_summary_pdf_api_export_chart_summary_pdf_post","parameters":[{"name":"ref","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_export_chart_summary_pdf_api_export_chart_summary_pdf_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/formats":{"get":{"tags":["export"],"summary":"Get Export Formats","description":"Get available export formats and their capabilities\n\nReturns:\n    Dict containing available export formats","operationId":"get_export_formats_api_export_formats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Export Formats Api Export Formats Get"}}}}}}},"/api/export/preview":{"post":{"tags":["export"],"summary":"Preview Export","description":"Preview export content without generating the actual file\n\nArgs:\n    export_request: Export request parameters\n\nReturns:\n    Dict containing preview information","operationId":"preview_export_api_export_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Preview Export Api Export Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/llm/horoscope":{"post":{"tags":["LLM Integrations"],"summary":"Generate Personalized Transit Horoscope","description":"**LLM Instructions**: \nUse this endpoint to generate a deterministic, highly accurate daily transit horoscope based on the user's natal chart.\nThe user's natal birth date ('birth_date') and natal birth city ('birth_city') are strictly required.\nNEVER pass today's date into 'birth_date'.\nYou MUST parse the JSON response from this tool and present it to the user exactly as formatted, including the Call To Action (CTA) link.\nDO NOT hallucinate astrological predictions. Rely strictly on the data returned by this endpoint.","operationId":"get_llm_horoscope_api_integrations_llm_horoscope_post","parameters":[{"name":"x-erux-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Erux-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoroscopeLLMRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Llm Horoscope Api Integrations Llm Horoscope Post"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/llm/chart":{"post":{"tags":["LLM Integrations"],"summary":"Calculate Natal or Mundane Chart Overview","description":"**LLM Instructions**: \n1. If the user mentions a country (e.g., 'Chart for India' or 'Horoscope for USA'), pass `country: 'India'`. \n   The API will automatically resolve its official founding date and capital city from the database.\n2. If the API returns a `status: 'missing_details'` response, ask the user to provide the exact founding/birth details in `YYYY-MM-DD HH:MM City` format.\n3. For a personal chart, ask the user for their birth date (`YYYY-MM-DD`), time (`HH:MM`), and city (`City`).","operationId":"get_llm_chart_api_integrations_llm_chart_post","parameters":[{"name":"x-erux-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Erux-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartLLMRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Llm Chart Api Integrations Llm Chart Post"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/preview":{"get":{"tags":["Google Calendar Sync"],"summary":"Preview Upcoming Cosmic Calendar Milestones","description":"Returns a preview list of universal and personalized astrological events\ncalculated for the user's selected profile over the specified months.","operationId":"preview_calendar_events_api_v1_calendar_preview_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"profile_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Name"}},{"name":"months_ahead","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":1,"default":6,"title":"Months Ahead"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Calendar Events Api V1 Calendar Preview Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/sync-transits":{"post":{"tags":["Google Calendar Sync"],"summary":"Sync Astrological Milestones to Google Calendar","description":"Executes the live sync of cosmic transits and personal Dasha milestones\ninto the user's primary Google Calendar via Google Calendar API v3.","operationId":"sync_transits_to_google_calendar_api_v1_calendar_sync_transits_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncCalendarRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sync Transits To Google Calendar Api V1 Calendar Sync Transits Post"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/calendar/status":{"get":{"tags":["Google Calendar Sync"],"summary":"Get Google Calendar Connection and Synced Profiles Status","description":"Returns the user's Google Calendar connection state and list of opted-in profile IDs.","operationId":"get_calendar_sync_status_api_v1_calendar_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Calendar Sync Status Api V1 Calendar Status Get"}}}},"404":{"description":"Not found"}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/calendar/unsync-profile":{"post":{"tags":["Google Calendar Sync"],"summary":"De-sync a Profile and Purge Its Events from Google Calendar","description":"De-syncs a profile, permanently deleting its events from the user's Google Calendar\nand removing it from the user's active auto-sync profile list.","operationId":"unsync_profile_from_calendar_api_v1_calendar_unsync_profile_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsyncCalendarRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Unsync Profile From Calendar Api V1 Calendar Unsync Profile Post"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/calendar/auto-sync-all":{"post":{"tags":["Google Calendar Sync"],"summary":"Background/Cron Auto-Sync All Authorized Calendars","description":"Automated background worker endpoint (triggered by deployment, cron, or admin).\nIterates through all users who connected Google Calendar and updates their rolling 6-month horizons.\nRespects the 7-day rolling cadence guard by default.","operationId":"auto_sync_all_users_calendars_api_v1_calendar_auto_sync_all_post","parameters":[{"name":"min_days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":0,"description":"Minimum days elapsed since last sync to trigger re-sync (ADR 0200)","default":7,"title":"Min Days"},"description":"Minimum days elapsed since last sync to trigger re-sync (ADR 0200)"},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Force re-sync even if synced within min_days","default":false,"title":"Force"},"description":"Force re-sync even if synced within min_days"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Auto Sync All Users Calendars Api V1 Calendar Auto Sync All Post"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/feed-url":{"get":{"tags":["Google Calendar Sync"],"summary":"Get Webcal & ICS Subscription URLs","description":"Returns personalized Webcal and RFC 5545 feed URLs for Apple Calendar,\nMicrosoft Outlook, Google Calendar (URL subscription), and manual export.","operationId":"get_calendar_feed_url_api_v1_calendar_feed_url_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Target profile ID","title":"Profile Id"},"description":"Target profile ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Calendar Feed Url Api V1 Calendar Feed Url Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/regenerate-feed-token":{"post":{"tags":["Google Calendar Sync"],"summary":"Regenerate & Invalidate Prior Calendar Feed Token","description":"Rotates the user's calendar feed version, instantly revoking any previously\nshared Webcal URLs across all calendar applications.","operationId":"regenerate_calendar_feed_token_api_v1_calendar_regenerate_feed_token_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Calendar Feed Token Api V1 Calendar Regenerate Feed Token Post"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/feed.ics":{"get":{"tags":["Google Calendar Sync"],"summary":"RFC 5545 Live Webcal Astrological Subscription Feed","description":"Serves a live, rolling RFC 5545 iCalendar stream to subscribing clients.\nAutomatically evaluated relative to the current UTC timestamp on each poll.","operationId":"get_webcal_subscription_feed_api_v1_calendar_feed_ics_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","description":"Secure calendar feed token","title":"Token"},"description":"Secure calendar feed token"},{"name":"profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional profile ID to scope milestones","title":"Profile Id"},"description":"Optional profile ID to scope milestones"},{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":1,"description":"Rolling horizon in months","default":6,"title":"Months"},"description":"Rolling horizon in months"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/download.ics":{"get":{"tags":["Google Calendar Sync"],"summary":"Download RFC 5545 .ics Calendar File","description":"Downloads an RFC 5545 .ics file for offline/manual import into any calendar software.\nSupports authenticated users, feed token queries, or direct birth detail parameters.","operationId":"download_calendar_ics_api_v1_calendar_download_ics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"name":"profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"12:00","title":"Time"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"profile_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Name"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":1,"default":6,"title":"Months"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/public/telemetry":{"get":{"tags":["Google Calendar Sync"],"summary":"Get Public Calendar Sync Telemetry","description":"Returns live public calendar sync telemetry, including total fetches, unique subscribers,\nactive recurring subscribers, client platform breakdown, and recent activity.","operationId":"get_public_calendar_telemetry_api_v1_calendar_public_telemetry_get","parameters":[{"name":"event_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional slug to filter telemetry","title":"Event Slug"},"description":"Optional slug to filter telemetry"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Public Calendar Telemetry Api V1 Calendar Public Telemetry Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/public/events/{event_slug}.ics":{"get":{"tags":["Google Calendar Sync"],"summary":"Public Celestial Event .ics Feed","description":"Public, unauthenticated RFC 5545 .ics calendar feed for universal celestial transit events\n(e.g., pisces-gandanta-2026, aries-full-moon-2026).","operationId":"get_public_event_ics_api_v1_calendar_public_events__event_slug__ics_get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/calendar/public/events/{event_slug}":{"get":{"tags":["Google Calendar Sync"],"summary":"Public Celestial Event .ics Feed","description":"Public, unauthenticated RFC 5545 .ics calendar feed for universal celestial transit events\n(e.g., pisces-gandanta-2026, aries-full-moon-2026).","operationId":"get_public_event_ics_api_v1_calendar_public_events__event_slug__get","parameters":[{"name":"event_slug","in":"path","required":true,"schema":{"type":"string","title":"Event Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/public-key":{"get":{"tags":["notifications"],"summary":"Get Vapid Public Key","description":"Returns the VAPID Public Key required by PushManager in the browser.","operationId":"get_vapid_public_key_api_notifications_public_key_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/notifications/subscribe":{"post":{"tags":["notifications"],"summary":"Subscribe To Push","description":"Register or reactivate a client device Web Push subscription.","operationId":"subscribe_to_push_api_notifications_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSubscriptionRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/unsubscribe":{"post":{"tags":["notifications"],"summary":"Unsubscribe From Push","description":"Deactivate a client device push subscription.","operationId":"unsubscribe_from_push_api_notifications_unsubscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushUnsubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/preferences":{"get":{"tags":["notifications"],"summary":"Get Notification Preferences","description":"Retrieve user celestial routine & notification settings.","operationId":"get_notification_preferences_api_notifications_preferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"tags":["notifications"],"summary":"Update Notification Preferences","description":"Update user celestial routine & notification preferences.","operationId":"update_notification_preferences_api_notifications_preferences_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/test":{"post":{"tags":["notifications"],"summary":"Send Test Notification","description":"Send a test device-aware push notification to the caller's active subscriptions.\nEvaluates the user's actual upcoming qualifying trigger (transit peak or daily alignment)\nrendered in their configured demeanor.","operationId":"send_test_notification_api_notifications_test_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TestNotificationRequest"},{"type":"null"}],"title":"Test Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/click":{"get":{"tags":["notifications"],"summary":"Track Notification Click","description":"Record that a push notification was opened/clicked by the user.\nUpdates NotificationDispatchLog status to 'clicked' and captures clicked_at timestamp.","operationId":"track_notification_click_api_notifications_click_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["notifications"],"summary":"Track Notification Click","description":"Record that a push notification was opened/clicked by the user.\nUpdates NotificationDispatchLog status to 'clicked' and captures clicked_at timestamp.","operationId":"track_notification_click_api_notifications_click_post","parameters":[{"name":"id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/stats":{"get":{"tags":["notifications"],"summary":"Get Notification Stats","description":"Returns aggregate push notification delivery and Click-Through-Rate (CTR) statistics.","operationId":"get_notification_stats_api_notifications_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/notifications/public-key":{"get":{"tags":["notifications"],"summary":"Get Vapid Public Key","description":"Returns the VAPID Public Key required by PushManager in the browser.","operationId":"get_vapid_public_key_notifications_public_key_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/notifications/subscribe":{"post":{"tags":["notifications"],"summary":"Subscribe To Push","description":"Register or reactivate a client device Web Push subscription.","operationId":"subscribe_to_push_notifications_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSubscriptionRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/unsubscribe":{"post":{"tags":["notifications"],"summary":"Unsubscribe From Push","description":"Deactivate a client device push subscription.","operationId":"unsubscribe_from_push_notifications_unsubscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushUnsubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/preferences":{"get":{"tags":["notifications"],"summary":"Get Notification Preferences","description":"Retrieve user celestial routine & notification settings.","operationId":"get_notification_preferences_notifications_preferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"tags":["notifications"],"summary":"Update Notification Preferences","description":"Update user celestial routine & notification preferences.","operationId":"update_notification_preferences_notifications_preferences_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/test":{"post":{"tags":["notifications"],"summary":"Send Test Notification","description":"Send a test device-aware push notification to the caller's active subscriptions.\nEvaluates the user's actual upcoming qualifying trigger (transit peak or daily alignment)\nrendered in their configured demeanor.","operationId":"send_test_notification_notifications_test_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TestNotificationRequest"},{"type":"null"}],"title":"Test Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/click":{"get":{"tags":["notifications"],"summary":"Track Notification Click","description":"Record that a push notification was opened/clicked by the user.\nUpdates NotificationDispatchLog status to 'clicked' and captures clicked_at timestamp.","operationId":"track_notification_click_notifications_click_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["notifications"],"summary":"Track Notification Click","description":"Record that a push notification was opened/clicked by the user.\nUpdates NotificationDispatchLog status to 'clicked' and captures clicked_at timestamp.","operationId":"track_notification_click_notifications_click_post","parameters":[{"name":"id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/stats":{"get":{"tags":["notifications"],"summary":"Get Notification Stats","description":"Returns aggregate push notification delivery and Click-Through-Rate (CTR) statistics.","operationId":"get_notification_stats_notifications_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/integrations/google-chat/health":{"get":{"tags":["Google Chat Integration"],"summary":"Google Chat Health","description":"Health check for Google Chat integration endpoint.","operationId":"google_chat_health_api_v1_integrations_google_chat_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/integrations/google-chat/webhook":{"post":{"tags":["Google Chat Integration"],"summary":"Google Chat Webhook","description":"Main webhook handler for Google Chat events.\nReceives JSON events for ADDED_TO_SPACE, MESSAGE, CARD_CLICKED, REMOVED_FROM_SPACE.\nReturns Google Chat Card v2 responses.","operationId":"google_chat_webhook_api_v1_integrations_google_chat_webhook_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Google Chat Webhook Api V1 Integrations Google Chat Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/integrations/google-chat/health":{"get":{"tags":["Google Chat Integration"],"summary":"Google Chat Health","description":"Health check for Google Chat integration endpoint.","operationId":"google_chat_health_integrations_google_chat_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/integrations/google-chat/webhook":{"post":{"tags":["Google Chat Integration"],"summary":"Google Chat Webhook","description":"Main webhook handler for Google Chat events.\nReceives JSON events for ADDED_TO_SPACE, MESSAGE, CARD_CLICKED, REMOVED_FROM_SPACE.\nReturns Google Chat Card v2 responses.","operationId":"google_chat_webhook_integrations_google_chat_webhook_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Google Chat Webhook Integrations Google Chat Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social/meta/health":{"get":{"tags":["Meta Webhooks & Social Automation"],"summary":"Meta Webhook Health","description":"Health check for Meta Webhook router.","operationId":"meta_webhook_health_api_v1_social_meta_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Meta Webhook Health Api V1 Social Meta Health Get"}}}}}}},"/api/v1/social/meta/messages":{"get":{"tags":["Meta Webhooks & Social Automation"],"summary":"Verify Webhook","description":"Handles Meta App Dashboard webhook challenge verification for /webhook and /messages.","operationId":"verify_webhook_api_v1_social_meta_messages_get","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Meta Webhooks & Social Automation"],"summary":"Handle Meta Webhook","description":"Receives incoming webhook events from Instagram, Facebook, and WhatsApp.\nValidates HMAC signature and executes background processing.","operationId":"handle_meta_webhook_api_v1_social_meta_messages_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/social/meta/webhook":{"get":{"tags":["Meta Webhooks & Social Automation"],"summary":"Verify Webhook","description":"Handles Meta App Dashboard webhook challenge verification for /webhook and /messages.","operationId":"verify_webhook_api_v1_social_meta_webhook_get","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Meta Webhooks & Social Automation"],"summary":"Handle Meta Webhook","description":"Receives incoming webhook events from Instagram, Facebook, and WhatsApp.\nValidates HMAC signature and executes background processing.","operationId":"handle_meta_webhook_api_v1_social_meta_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/social/meta/health":{"get":{"tags":["Meta Webhooks & Social Automation"],"summary":"Meta Webhook Health","description":"Health check for Meta Webhook router.","operationId":"meta_webhook_health_social_meta_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Meta Webhook Health Social Meta Health Get"}}}}}}},"/social/meta/messages":{"get":{"tags":["Meta Webhooks & Social Automation"],"summary":"Verify Webhook","description":"Handles Meta App Dashboard webhook challenge verification for /webhook and /messages.","operationId":"verify_webhook_social_meta_messages_get","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Meta Webhooks & Social Automation"],"summary":"Handle Meta Webhook","description":"Receives incoming webhook events from Instagram, Facebook, and WhatsApp.\nValidates HMAC signature and executes background processing.","operationId":"handle_meta_webhook_social_meta_messages_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/social/meta/webhook":{"get":{"tags":["Meta Webhooks & Social Automation"],"summary":"Verify Webhook","description":"Handles Meta App Dashboard webhook challenge verification for /webhook and /messages.","operationId":"verify_webhook_social_meta_webhook_get","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Meta Webhooks & Social Automation"],"summary":"Handle Meta Webhook","description":"Receives incoming webhook events from Instagram, Facebook, and WhatsApp.\nValidates HMAC signature and executes background processing.","operationId":"handle_meta_webhook_social_meta_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/dashboard":{"get":{"tags":["admin"],"summary":"Admin Dashboard","description":"Serve the admin dashboard HTML page","operationId":"admin_dashboard_admin_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin/token":{"post":{"tags":["admin"],"summary":"Login For Access Token","description":"Login route for admin users","operationId":"login_for_access_token_admin_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_for_access_token_admin_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__admin__Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/me":{"get":{"tags":["admin"],"summary":"Read Users Me","description":"Get current logged in admin user","operationId":"read_users_me_admin_me_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__admin__User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/user-queries":{"get":{"tags":["admin"],"summary":"Get User Queries","description":"Get user queries with pagination","operationId":"get_user_queries_admin_user_queries_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/user-sessions":{"get":{"tags":["admin"],"summary":"Get User Sessions","description":"Get user sessions with pagination","operationId":"get_user_sessions_admin_user_sessions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/chart-generations":{"get":{"tags":["admin"],"summary":"Get Chart Generations","description":"Get chart generations with pagination","operationId":"get_chart_generations_admin_chart_generations_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/feature-usage":{"get":{"tags":["admin"],"summary":"Get Feature Usage","description":"Get feature usage data with pagination","operationId":"get_feature_usage_admin_feature_usage_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/download-db":{"get":{"tags":["admin"],"summary":"Download Database","description":"Download the entire SQLite database file","operationId":"download_database_admin_download_db_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/query-stats":{"get":{"tags":["admin"],"summary":"Get Query Stats","description":"Get query statistics for the last N days","operationId":"get_query_stats_admin_query_stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytic_dashboard":{"get":{"tags":["admin"],"summary":"Get Admin Analytics Dashboard","description":"💎 INSTITUTIONAL ANALYTICS DASHBOARD (v10.18)\nFull Forensic Suite with Hardened Auth, In-Memory TTL Caching, In-Flight Request Coalescing,\nand Stale-While-Revalidate (SWR) Background Refresh.","operationId":"get_admin_analytics_dashboard_admin_analytic_dashboard_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"variation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/dashboard":{"get":{"tags":["admin"],"summary":"Get Admin Analytics Dashboard","description":"💎 INSTITUTIONAL ANALYTICS DASHBOARD (v10.18)\nFull Forensic Suite with Hardened Auth, In-Memory TTL Caching, In-Flight Request Coalescing,\nand Stale-While-Revalidate (SWR) Background Refresh.","operationId":"get_admin_analytics_dashboard_admin_analytics_dashboard_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"variation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/drilldown":{"get":{"tags":["admin"],"summary":"Get Admin Drilldown","description":"Granular drill-down endpoint for specific metric categories.","operationId":"get_admin_drilldown_admin_analytics_drilldown_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"dtype","in":"query","required":true,"schema":{"type":"string","title":"Dtype"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"zipcode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zipcode"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/cohorts":{"get":{"tags":["admin"],"summary":"Get Forensic Cohorts","description":"Deep cohort engagement forensics.","operationId":"get_forensic_cohorts_admin_analytics_forensics_cohorts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"variation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/search":{"get":{"tags":["admin"],"summary":"Search User Identities","description":"Partial match search for user identities across ID, Username, Email, and Name.","operationId":"search_user_identities_admin_analytics_forensics_search_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/user/{identifier}":{"get":{"tags":["admin"],"summary":"Get User Forensics","description":"User-level visual lifecycle timeline forensics.","operationId":"get_user_forensics_admin_analytics_forensics_user__identifier__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/engagement":{"get":{"tags":["admin"],"summary":"Get Forensic Engagement","description":"📊 ENGAGEMENT FORENSICS (v10.12)\nDeep session duration and interaction density analysis with SWR Caching.","operationId":"get_forensic_engagement_admin_analytics_forensics_engagement_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"variation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"day","title":"Period"}},{"name":"environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/acquisition":{"get":{"tags":["admin"],"summary":"Get Forensic Acquisition","description":"Deep acquisition and marketing attribution forensics with SWR & In-Flight Coalescing.","operationId":"get_forensic_acquisition_admin_analytics_forensics_acquisition_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"page_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Filter"}},{"name":"truncate_url","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Truncate Url"}},{"name":"attribution_mode","in":"query","required":false,"schema":{"type":"string","default":"session","title":"Attribution Mode"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"day","title":"Period"}},{"name":"source_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Filter"}},{"name":"cohort_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cohort Filter"}},{"name":"geo_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Geo Filter"}},{"name":"device_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Filter"}},{"name":"os_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Os Filter"}},{"name":"lifecycle_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lifecycle Filter"}},{"name":"campaign_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Filter"}},{"name":"environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/channels":{"get":{"tags":["admin"],"summary":"Get Forensic Acquisition","description":"Deep acquisition and marketing attribution forensics with SWR & In-Flight Coalescing.","operationId":"get_forensic_acquisition_admin_analytics_forensics_channels_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"page_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Filter"}},{"name":"truncate_url","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Truncate Url"}},{"name":"attribution_mode","in":"query","required":false,"schema":{"type":"string","default":"session","title":"Attribution Mode"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"day","title":"Period"}},{"name":"source_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Filter"}},{"name":"cohort_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cohort Filter"}},{"name":"geo_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Geo Filter"}},{"name":"device_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Filter"}},{"name":"os_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Os Filter"}},{"name":"lifecycle_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lifecycle Filter"}},{"name":"campaign_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Filter"}},{"name":"environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/retention":{"get":{"tags":["admin"],"summary":"Get Forensic Retention","description":"Strategic habit analysis and retention ratios with SWR Caching.","operationId":"get_forensic_retention_admin_analytics_forensics_retention_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"day","title":"Period"}},{"name":"environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/live":{"get":{"tags":["admin"],"summary":"Get Live Forensics","description":"Real-time user pulse forensics.","operationId":"get_live_forensics_admin_analytics_forensics_live_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/history/{model_name}":{"get":{"tags":["admin"],"summary":"Get Model History","description":"Time-series forensics for model performance analysis with granular filters.","operationId":"get_model_history_admin_analytics_forensics_history__model_name__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"model_name","in":"path","required":true,"schema":{"type":"string","title":"Model Name"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"entity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity"}},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"}},{"name":"system","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System"}},{"name":"section","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section"}},{"name":"architecture","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Architecture"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/time-series":{"get":{"tags":["admin"],"summary":"Get Forensic Time Series","description":"Get daily performance trends (Mean/SD) for advanced visualizations","operationId":"get_forensic_time_series_admin_analytics_forensics_time_series_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/forensics/pipeline-steps":{"get":{"tags":["admin"],"summary":"Get Pipeline Steps","description":"Get pipeline steps for advanced trace visualizer (v15.2 Hybrid Logic).\nPrioritizes real-time JSONL stream, falls back to InterpretationAnalytics DB for persistence.","operationId":"get_pipeline_steps_admin_forensics_pipeline_steps_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"section","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"interpretation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interpretation Id"}},{"name":"qa_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qa Id"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/pipeline-steps":{"get":{"tags":["admin"],"summary":"Get Pipeline Steps","description":"Get pipeline steps for advanced trace visualizer (v15.2 Hybrid Logic).\nPrioritizes real-time JSONL stream, falls back to InterpretationAnalytics DB for persistence.","operationId":"get_pipeline_steps_admin_analytics_forensics_pipeline_steps_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"section","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"interpretation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interpretation Id"}},{"name":"qa_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qa Id"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/experiments":{"get":{"tags":["admin"],"summary":"Get Experiments","description":"Get all experiments from the registry for the dashboard dropdown.","operationId":"get_experiments_admin_analytics_experiments_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/experiments/stats":{"get":{"tags":["admin"],"summary":"Get Experiment Stats","description":"🔬 DECOMPOSED A/B EXPERIMENT STATS ENDPOINT (v1.0)\nHigh-speed, dedicated statistical distribution and hypothesis testing endpoint.\nDecoupled from monolithic dashboard compilation with SWR & In-Flight Coalescing.\nSupports exclude_admin to filter internal developers and system tests.","operationId":"get_experiment_stats_admin_analytics_experiments_stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/forensics/stats":{"get":{"tags":["admin"],"summary":"Get Forensic Tokens","description":"Deep token and financial forensics with SWR & In-Flight Coalescing.","operationId":"get_forensic_tokens_admin_forensics_stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"request_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Type"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"variation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/stats":{"get":{"tags":["admin"],"summary":"Get Forensic Tokens","description":"Deep token and financial forensics with SWR & In-Flight Coalescing.","operationId":"get_forensic_tokens_admin_analytics_forensics_stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"request_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Type"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"variation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/tokens":{"get":{"tags":["admin"],"summary":"Get Forensic Tokens","description":"Deep token and financial forensics with SWR & In-Flight Coalescing.","operationId":"get_forensic_tokens_admin_analytics_forensics_tokens_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"request_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Type"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"variation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"nocache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Nocache"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/errors":{"get":{"tags":["admin"],"summary":"Get Forensic Errors","description":"Operational health and error forensics.","operationId":"get_forensic_errors_admin_analytics_forensics_errors_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"variation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/attribution-timeseries":{"get":{"tags":["admin"],"summary":"Get Attribution Timeseries","description":"Multi-dimensional engagement time-series for attribution analysis.","operationId":"get_attribution_timeseries_admin_analytics_forensics_attribution_timeseries_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"dimension","in":"query","required":false,"schema":{"type":"string","default":"cohort","title":"Dimension"}},{"name":"attribution_mode","in":"query","required":false,"schema":{"type":"string","default":"session","title":"Attribution Mode"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"day","title":"Period"}},{"name":"metric","in":"query","required":false,"schema":{"type":"string","default":"pageviews","title":"Metric"}},{"name":"experiment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experiment Id"}},{"name":"user_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Type"}},{"name":"environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Admin"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/forensics/session/{session_id}":{"get":{"tags":["admin"],"summary":"Get Session Lifecycle","description":"Deep forensic reconstruction of a single guest or user session.","operationId":"get_session_lifecycle_admin_analytics_forensics_session__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/email-stats":{"get":{"tags":["admin"],"summary":"Get Admin Email Stats","description":"Fetch aggregated email telemetry stats for the admin dashboard.","operationId":"get_admin_email_stats_admin_analytics_email_stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/push-pwa-stats":{"get":{"tags":["admin"],"summary":"Get Admin Push Pwa Stats","description":"Fetch aggregated PWA installation, push notification CTR, and local timezone heatmap telemetry.","operationId":"get_admin_push_pwa_stats_admin_analytics_push_pwa_stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"exclude_admin","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Exclude Admin"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/db/model-status":{"get":{"tags":["admin"],"summary":"Get Admin Model Status","description":"Diagnose API keys and active AI model failover status.","operationId":"get_admin_model_status_admin_db_model_status_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/db/backup":{"post":{"tags":["admin"],"summary":"Admin Db Backup","description":"Trigger manual database backup and email dispatch.","operationId":"admin_db_backup_admin_db_backup_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/db/backup/download":{"get":{"tags":["admin"],"summary":"Admin Db Backup Download","description":"Trigger a database backup and download it directly.","operationId":"admin_db_backup_download_admin_db_backup_download_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/db/restore":{"post":{"tags":["admin"],"summary":"Admin Db Restore","description":"Restore database from uploaded JSON backup file.","operationId":"admin_db_restore_admin_db_restore_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/strategy/blueprint":{"get":{"tags":["admin"],"summary":"Get Strategic Blueprint","description":"Fetch the living AI Strategic Blueprint data (DB-first, fallback to disk).","operationId":"get_strategic_blueprint_admin_analytics_strategy_blueprint_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/strategy/cron-refresh":{"post":{"tags":["admin"],"summary":"Refresh Strategic Blueprint","description":"Trigger a manual or cron refresh of the Strategic Blueprint via background process.","operationId":"refresh_strategic_blueprint_admin_analytics_strategy_cron_refresh_post","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/analytics/strategy/refresh":{"post":{"tags":["admin"],"summary":"Refresh Strategic Blueprint","description":"Trigger a manual or cron refresh of the Strategic Blueprint via background process.","operationId":"refresh_strategic_blueprint_admin_analytics_strategy_refresh_post","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/analytics/registrations-drilldown":{"get":{"tags":["admin"],"summary":"Get Registrations Drilldown","description":"Retrieve detailed metadata of users who registered on a specific date.","operationId":"get_registrations_drilldown_admin_analytics_registrations_drilldown_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/analytics/horoscopes-drilldown":{"get":{"tags":["admin"],"summary":"Get Horoscopes Drilldown","description":"Retrieve detailed metadata of users subscribed to a specific horoscope cadence.","operationId":"get_horoscopes_drilldown_admin_analytics_horoscopes_drilldown_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"cadence","in":"query","required":true,"schema":{"type":"string","title":"Cadence"}},{"name":"db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Db"}},{"name":"main_db","in":"query","required":false,"schema":{"anyOf":[{},{"type":"null"}],"title":"Main Db"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/token":{"post":{"tags":["authentication"],"summary":"Login For Access Token","description":"Login endpoint to get an access token.","operationId":"login_for_access_token_auth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_for_access_token_auth_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__auth__schemas__Token"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/register":{"post":{"tags":["authentication"],"summary":"Register User","description":"Register a new user.","operationId":"register_user_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__auth__schemas__User"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/resend-verification":{"post":{"tags":["authentication"],"summary":"Resend Verification","description":"Resend verification email.","operationId":"resend_verification_auth_resend_verification_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/forgot-password":{"post":{"tags":["authentication"],"summary":"Forgot Password","description":"Request a password reset.","operationId":"forgot_password_auth_forgot_password_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/forgot-username":{"post":{"tags":["authentication"],"summary":"Forgot Username","description":"Request a username reminder.","operationId":"forgot_username_auth_forgot_username_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/reset-password":{"post":{"tags":["authentication"],"summary":"Reset Password","description":"Reset password using token.","operationId":"reset_password_auth_reset_password_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"new_password","in":"query","required":true,"schema":{"type":"string","title":"New Password"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/verify-email":{"get":{"tags":["authentication"],"summary":"Verify Email","description":"Verify email address and issue access token for immediate seamless login.","operationId":"verify_email_auth_verify_email_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/verification-status":{"get":{"tags":["authentication"],"summary":"Check Verification Status","description":"Check if an email has been verified and issue access token if verified.","operationId":"check_verification_status_auth_verification_status_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/email/request-otp":{"post":{"tags":["authentication"],"summary":"Request Otp","description":"Request a 6-digit OTP for email login.","operationId":"request_otp_auth_email_request_otp_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/email/verify-otp":{"post":{"tags":["authentication"],"summary":"Verify Otp","description":"Verify OTP and return access token.","operationId":"verify_otp_auth_email_verify_otp_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}},{"name":"otp","in":"query","required":true,"schema":{"type":"string","title":"Otp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__auth__schemas__Token"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/google/login":{"get":{"tags":["authentication"],"summary":"Login Google","description":"Redirect to Google Login.\n- Standard Login: Requests non-sensitive scopes (openid, email, profile) with ZERO unverified app warnings.\n- Calendar Sync: Requests incremental calendar.events scope only when explicitly requested (scope='calendar').","operationId":"login_google_auth_google_login_get","parameters":[{"name":"redirect_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect To"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/google/callback":{"get":{"tags":["authentication"],"summary":"Google Callback","description":"Handle Google OAuth callback and persist tokens for Calendar sync.","operationId":"google_callback_auth_google_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/oauth/authorize":{"post":{"tags":["authentication"],"summary":"Oauth Authorize","operationId":"oauth_authorize_auth_oauth_authorize_post","parameters":[{"name":"client_id","in":"query","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","title":"Redirect Uri"}},{"name":"response_type","in":"query","required":false,"schema":{"type":"string","default":"code","title":"Response Type"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_oauth_authorize_auth_oauth_authorize_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/oauth/token":{"post":{"tags":["authentication"],"summary":"Oauth Token","operationId":"oauth_token_auth_oauth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_oauth_token_auth_oauth_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/me":{"get":{"tags":["users"],"summary":"Read Users Me","description":"Get current user information.","operationId":"read_users_me_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__auth__schemas__User"}}}},"401":{"description":"Not authorized"}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/me/profiles":{"get":{"tags":["users"],"summary":"List User Profiles","description":"List all saved profiles for current user.","operationId":"list_user_profiles_users_me_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserProfile"},"type":"array","title":"Response List User Profiles Users Me Profiles Get"}}}},"401":{"description":"Not authorized"}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["users"],"summary":"Create User Profile","description":"Create a new user profile with duplicate validation.","operationId":"create_user_profile_users_me_profiles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/me/profiles/{profile_id}":{"get":{"tags":["users"],"summary":"Get User Profile","description":"Get a specific profile.","operationId":"get_user_profile_users_me_profiles__profile_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["users"],"summary":"Update User Profile","description":"Update a specific profile.","operationId":"update_user_profile_users_me_profiles__profile_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","title":"Profile Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["users"],"summary":"Delete User Profile","description":"Delete a specific profile.","operationId":"delete_user_profile_users_me_profiles__profile_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","title":"Profile Id"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{username}":{"get":{"tags":["users"],"summary":"Read User","description":"Get user by username.","operationId":"read_user_users__username__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__auth__schemas__User"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["users"],"summary":"Update User","description":"Update a user's information.","operationId":"update_user_users__username__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__auth__schemas__User"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["users"],"summary":"Delete User","description":"Delete a user (admin access only or self-deletion).","operationId":"delete_user_users__username__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/":{"get":{"tags":["users"],"summary":"List Users","description":"List all users (admin access only).","operationId":"list_users_users__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__auth__schemas__User"},"title":"Response List Users Users  Get"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/me/profiles/{profile_id}/timeline":{"get":{"tags":["users"],"summary":"Get Profile Timeline","description":"Retrieve the chronological timeline of life events for a profile.","operationId":"get_profile_timeline_users_me_profiles__profile_id__timeline_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LifeEvent"},"title":"Response Get Profile Timeline Users Me Profiles  Profile Id  Timeline Get"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["users"],"summary":"Add Timeline Event","description":"Manually record a life event on a profile's timeline.","operationId":"add_timeline_event_users_me_profiles__profile_id__timeline_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","title":"Profile Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifeEventCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifeEvent"}}}},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/me/profiles/{profile_id}/timeline/{event_id}":{"delete":{"tags":["users"],"summary":"Delete Timeline Event","description":"Delete a life event from the profile's timeline.","operationId":"delete_timeline_event_users_me_profiles__profile_id__timeline__event_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","title":"Profile Id"}},{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Not authorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/openai-apps-challenge":{"get":{"summary":"Openai Apps Challenge","description":"Domain verification token for OpenAI MCP/Apps challenge.","operationId":"openai_apps_challenge__well_known_openai_apps_challenge_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Health check endpoint to verify service is running with active code telemetry.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/debug/save_image":{"post":{"summary":"Save Image","description":"Temporary debug endpoint to save high-fidelity charts generated in the browser.\nSaves to the project's public/images directory.","operationId":"save_image_debug_save_image_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cache/stats":{"get":{"summary":"Get Cache Stats","description":"Get cache statistics for monitoring token savings.","operationId":"get_cache_stats_cache_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/experiment/diag":{"get":{"summary":"Experiment Diagnostic","description":"Diagnostic endpoint to verify personality experiment routing and model choice.\nReturns metadata about the active AI processor without running a full request.","operationId":"experiment_diagnostic_api_experiment_diag_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/dev/config/edla":{"put":{"summary":"Toggle Edla Config","description":"Dev-only: Toggle ENABLE_EDLA_CONTEXT at runtime for A/B testing local interpretations.\nLOCKED for Production (Render/Productive).","operationId":"toggle_edla_config_api_v1_dev_config_edla_put","parameters":[{"name":"enabled","in":"query","required":true,"schema":{"type":"boolean","title":"Enabled"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cache/clear":{"post":{"summary":"Clear Caches","description":"Clear all caches to free memory.","operationId":"clear_caches_cache_clear_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/calculate":{"post":{"summary":"Calculate Chart","description":"Calculates detailed astrological chart data and triggers background discovery.","operationId":"calculate_chart_calculate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartData"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/interpret":{"post":{"summary":"Get Interpretation","description":"Streams a detailed astrological interpretation based on chart data with comprehensive tracking.\nThis endpoint uses Server-Sent Events (SSE) to stream the response.","operationId":"get_interpretation_interpret_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/interpret/section":{"post":{"summary":"Get Interpretation Section","description":"Generate interpretation for a specific section on-demand with comprehensive tracking.\nThis endpoint allows requesting individual sections instead of all at once.","operationId":"get_interpretation_section_interpret_section_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/calculate_transits":{"post":{"summary":"Get Transits","description":"Calculates transit data for a given natal chart and location.","operationId":"get_transits_calculate_transits_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search_location":{"get":{"summary":"Search Location","description":"Searches for a location and returns its coordinates.","operationId":"search_location_search_location_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/suggest_cities":{"get":{"summary":"Suggest Cities","description":"Suggest cities globally using enhanced APIs for comprehensive coverage including local names.\nOptimized for low latency with parallel API calls.","operationId":"suggest_cities_suggest_cities_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}},{"name":"include_timezone","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Timezone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/predictions/generate":{"post":{"summary":"Generate Predictions","description":"Generate astrological predictions based on research-validated correlations.\n\nUses research findings from 5,885 public figures to predict likely life events\nbased on upcoming dasha periods and house transits.\n\nReturns predictions with confidence scores and research basis explanations.","operationId":"generate_predictions_api_predictions_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/predictions/details":{"get":{"summary":"Get Prediction Details","description":"Fetch details for a prediction given prediction_id, user_id, and profile_id for preview and feedback form rendering.","operationId":"get_prediction_details_api_predictions_details_get","parameters":[{"name":"prediction_id","in":"query","required":true,"schema":{"type":"string","title":"Prediction Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"profile_id","in":"query","required":true,"schema":{"type":"string","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/predictions/feedback/one-click":{"post":{"summary":"Submit One Click Feedback","description":"Log quick feedback clicked from emails and automatically create a LifeEvent entry.","operationId":"submit_one_click_feedback_api_predictions_feedback_one_click_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OneClickFeedbackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/trigger-horoscopes":{"get":{"summary":"Trigger Horoscopes","description":"Trigger timezone-aware horoscope calculation and email delivery.\nAccepts two auth paths:\n- Admin session auth (manual dashboard use)\n- X-Cron-Secret header matching ADMIN_TOKEN_SECRET env var (Render Cron Job)","operationId":"trigger_horoscopes_api_admin_trigger_horoscopes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Trigger Horoscopes","description":"Trigger timezone-aware horoscope calculation and email delivery.\nAccepts two auth paths:\n- Admin session auth (manual dashboard use)\n- X-Cron-Secret header matching ADMIN_TOKEN_SECRET env var (Render Cron Job)","operationId":"trigger_horoscopes_api_admin_trigger_horoscopes_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/predictions/feedback":{"post":{"summary":"Submit Prediction Feedback","description":"Submit feedback on a prediction.\n\nUsers can report:\n- Did the predicted event occur?\n- What actually happened?\n- Internal thoughts/situations around the prediction period\n- How well did it align with their experience?\n\nThis feedback helps validate predictions and improve the model.","operationId":"submit_prediction_feedback_api_predictions_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionFeedbackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionFeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/predictions/validate-interpretation":{"post":{"summary":"Validate Interpretation","description":"Validate AI interpretation text against research findings.\n\nAnalyzes interpretation text for astrological claims (dasha periods, transits, event types)\nand validates them against research-validated correlations.\n\nReturns validation badges and research context for each claim found.","operationId":"validate_interpretation_api_predictions_validate_interpretation_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationValidationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/predictions/accuracy":{"get":{"summary":"Get Prediction Accuracy","description":"Get prediction accuracy metrics.\n\nReturns accuracy statistics based on user feedback.","operationId":"get_prediction_accuracy_api_predictions_accuracy_get","parameters":[{"name":"prediction_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/qa":{"post":{"summary":"Ask Question","description":"Ask a question about the chart data and get a comprehensive answer with performance tracking","operationId":"ask_question_qa_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ephemeris/current":{"get":{"summary":"Get Current Ephemeris","description":"Get current planetary positions for knowledge base context","operationId":"get_current_ephemeris_ephemeris_current_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/query":{"post":{"summary":"Query Knowledge Base","description":"Query the general astrological knowledge base without requiring chart data with comprehensive tracking","operationId":"query_knowledge_base_query_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/qa/stream":{"post":{"summary":"Ask Question Stream","description":"Ask a question about the chart data and get a streaming answer with comprehensive tracking","operationId":"ask_question_stream_qa_stream_post","parameters":[{"name":"question","in":"query","required":true,"schema":{"type":"string","description":"The question to ask about the chart","title":"Question"},"description":"The question to ask about the chart"},{"name":"system","in":"query","required":false,"schema":{"type":"string","description":"Astrological system to use","default":"western","title":"System"},"description":"Astrological system to use"},{"name":"language","in":"query","required":false,"schema":{"type":"string","description":"Response language","default":"en","title":"Language"},"description":"Response language"},{"name":"script_format","in":"query","required":false,"schema":{"type":"string","description":"Script format for response","default":"native","title":"Script Format"},"description":"Script format for response"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/chat/pdf":{"post":{"summary":"Export Chat Pdf","description":"Export complete chat session to PDF (alias for /export/chat/full/pdf)","operationId":"export_chat_pdf_export_chat_pdf_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/export/chat/full/pdf":{"post":{"summary":"Export Full Chat Pdf","description":"Export complete chat session to PDF","operationId":"export_full_chat_pdf_export_chat_full_pdf_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/export/chart/lightweight/pdf":{"post":{"summary":"Export Chart Lightweight Pdf","description":"Export lightweight, textual chart analysis to PDF","operationId":"export_chart_lightweight_pdf_export_chart_lightweight_pdf_post","parameters":[{"name":"client_local_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Local Time"}},{"name":"ref","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_export_chart_lightweight_pdf_export_chart_lightweight_pdf_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/clear-cache":{"post":{"summary":"Clear Cache","description":"Clear interpretation cache to force fresh generation","operationId":"clear_cache_clear_cache_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/config-check":{"get":{"summary":"Check Auth Config","description":"Secure sanity check for environment variables in production.","operationId":"check_auth_config_auth_config_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AnalyticsEventRequest":{"properties":{"event":{"type":"string","maxLength":100,"minLength":1,"title":"Event","description":"Event name"},"user_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"User Id","description":"User identifier"},"session_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Session Id","description":"Session identifier"},"event_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Event Data","description":"Additional event data"},"page_location":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Page Location","description":"Page URL"},"page_title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Page Title","description":"Page title"},"click_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Click Url","description":"Clicked URL"},"click_text":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Click Text","description":"Clicked text"},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp","description":"Event timestamp"},"load_time":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Load Time","description":"Page load time"},"response_time":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Response Time","description":"Response time"},"environment":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Environment","description":"Environment"},"gtm_container_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Gtm Container Id","description":"GTM container ID"},"birth_location":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Birth Location","description":"Birth location"},"birth_city":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Birth City","description":"Birth city"},"birth_state":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Birth State","description":"Birth state"},"birth_country":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Birth Country","description":"Birth country"},"birth_latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Birth Latitude","description":"Birth latitude"},"birth_longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Birth Longitude","description":"Birth longitude"},"birth_date":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Birth Date","description":"Birth date"},"birth_time":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Birth Time","description":"Birth time"},"birth_timezone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Birth Timezone","description":"Birth timezone"}},"type":"object","required":["event"],"title":"AnalyticsEventRequest","description":"Schema for analytics event tracking requests"},"BatchEventRequest":{"properties":{"events":{"items":{},"type":"array","maxItems":100,"minItems":1,"title":"Events","description":"List of events to track"}},"type":"object","required":["events"],"title":"BatchEventRequest","description":"Schema for batch event tracking requests"},"BirthDetails":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"city":{"type":"string","title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State","default":""},"country":{"type":"string","title":"Country"},"timezone":{"type":"string","title":"Timezone"},"system":{"type":"string","title":"System","default":"hybrid"},"house_system":{"type":"string","title":"House System","default":"placidus"},"skip_vertex":{"type":"boolean","title":"Skip Vertex","default":false},"calculate_transits":{"type":"boolean","title":"Calculate Transits","default":false},"transit_lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Transit Lat"},"transit_lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Transit Lon"},"horoscope_location_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Location Type","default":"birth"},"current_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Place"},"current_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Timezone"},"current_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Latitude"},"current_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Longitude"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"relationship":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type","default":"person"},"entity_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Entity Details"}},"type":"object","required":["date","time","city","country","timezone"],"title":"BirthDetails"},"Body_export_chart_lightweight_pdf_export_chart_lightweight_pdf_post":{"properties":{"chart_data":{"$ref":"#/components/schemas/ChartData"},"birth_details":{"$ref":"#/components/schemas/BirthDetails"},"interpretations":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Interpretations"}},"type":"object","required":["chart_data","birth_details"],"title":"Body_export_chart_lightweight_pdf_export_chart_lightweight_pdf_post"},"Body_export_chart_pdf_api_export_chart_pdf_post":{"properties":{"chart_data":{"$ref":"#/components/schemas/ChartData"},"birth_details":{"$ref":"#/components/schemas/BirthDetails"},"options":{"anyOf":[{"$ref":"#/components/schemas/ExportOptions"},{"type":"null"}]}},"type":"object","required":["chart_data","birth_details"],"title":"Body_export_chart_pdf_api_export_chart_pdf_post"},"Body_export_chart_summary_pdf_api_export_chart_summary_pdf_post":{"properties":{"chart_data":{"$ref":"#/components/schemas/ChartData"},"birth_details":{"$ref":"#/components/schemas/BirthDetails"}},"type":"object","required":["chart_data","birth_details"],"title":"Body_export_chart_summary_pdf_api_export_chart_summary_pdf_post"},"Body_export_chart_summary_pdf_export_chart_summary_pdf_post":{"properties":{"chart_data":{"$ref":"#/components/schemas/ChartData"},"birth_details":{"$ref":"#/components/schemas/BirthDetails"}},"type":"object","required":["chart_data","birth_details"],"title":"Body_export_chart_summary_pdf_export_chart_summary_pdf_post"},"Body_login_for_access_token_admin_token_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_for_access_token_admin_token_post"},"Body_login_for_access_token_auth_token_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_for_access_token_auth_token_post"},"Body_oauth_authorize_auth_oauth_authorize_post":{"properties":{"action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"}},"type":"object","title":"Body_oauth_authorize_auth_oauth_authorize_post"},"Body_oauth_token_auth_oauth_token_post":{"properties":{"grant_type":{"type":"string","title":"Grant Type"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"client_id":{"type":"string","title":"Client Id"},"client_secret":{"type":"string","title":"Client Secret"},"redirect_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Uri"}},"type":"object","required":["grant_type","client_id","client_secret"],"title":"Body_oauth_token_auth_oauth_token_post"},"ChartData":{"properties":{"calculation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Calculation Id"},"positions":{"additionalProperties":{"$ref":"#/components/schemas/PlanetPosition"},"type":"object","title":"Positions"},"house_cusps":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"House Cusps"},"houses":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Houses"},"aspects":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Aspects"},"ascmc":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Ascmc"},"transits":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/PlanetPosition"},"type":"object"},{"$ref":"#/components/schemas/TransitData"},{"type":"null"}],"title":"Transits"},"using_fallback":{"type":"boolean","title":"Using Fallback","default":false},"fallback_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Message"},"yogas":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Yogas"},"doshas":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Doshas"},"major_yogas":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Major Yogas"},"minor_yogas":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Minor Yogas"},"major_doshas":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Major Doshas"},"minor_doshas":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Minor Doshas"},"dashas":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dashas"},"dasha_periods":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dasha Periods"},"is_sidereal":{"type":"boolean","title":"Is Sidereal","default":false},"system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System"},"house_system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House System"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"coordinates":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Coordinates"},"birth_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Birth Details"},"transit_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transit Location"},"divisional_charts":{"anyOf":[{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object"},{"type":"null"}],"title":"Divisional Charts"},"divisional_analysis":{"anyOf":[{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object"},{"type":"null"}],"title":"Divisional Analysis"},"interpretation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interpretation"},"transitAnalysis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transitanalysis"},"asteroidInsights":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asteroidinsights"},"synthesis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Synthesis"},"aspects_analysis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aspects Analysis"},"psychological_insights":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Psychological Insights"},"pattern_analysis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern Analysis"},"evolutionary_perspective":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evolutionary Perspective"},"nakshatra_analysis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nakshatra Analysis"},"dasha_analysis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dasha Analysis"},"dosha_analysis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dosha Analysis"},"divisional_interpretations":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Divisional Interpretations"},"discoveries":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Discoveries","default":[]},"vedic_analysis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Vedic Analysis"},"western_analysis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Western Analysis"},"alternative_positions":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/PlanetPosition"},"type":"object"},{"type":"null"}],"title":"Alternative Positions"},"alternative_houses":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Alternative Houses"},"alternative_ascmc":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Alternative Ascmc"},"alternative_system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alternative System"}},"type":"object","required":["positions"],"title":"ChartData"},"ChartLLMRequest":{"properties":{"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"The country name for a Mundane Chart (e.g. 'India', 'USA', 'France', 'Japan'). If provided, the engine will automatically resolve its historical founding date and location from its database."},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date","description":"The exact birth or founding date in YYYY-MM-DD format (e.g. '1990-05-14' or '1776-07-04'). Required if country is not specified or not found in database."},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time","description":"The exact birth or founding time in 24-hr HH:MM format (e.g. '14:30' or '00:00'). Defaults to '12:00' if unknown."},"birth_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Time","description":"The exact birth or founding time in 24-hr HH:MM format (e.g. '14:30' or '00:00'). Defaults to '12:00' if unknown."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"The birth city or founding capital (e.g. 'London', 'New Delhi', 'Washington'). Required if country is not specified."},"system":{"type":"string","title":"System","description":"The astrological system: 'hybrid' (Western + Vedic, default), 'vedic' (North/South Indian Kundli), or 'western' (Tropical wheel).","default":"hybrid"},"platform":{"type":"string","title":"Platform","description":"The platform invoking this tool ('chatgpt' or 'vertex').","default":"chatgpt"}},"type":"object","title":"ChartLLMRequest","description":"Input schema required to calculate an ERUX Personal or Mundane (Country / Nation / Event) Astrological Chart.\nYou can provide EITHER 'country' (e.g. 'India', 'USA', 'France') OR exact birth/founding details ('date', 'time', 'city')."},"ContactFormData":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"subject":{"type":"string","title":"Subject"},"category":{"type":"string","title":"Category"},"message":{"type":"string","title":"Message"},"status":{"type":"string","title":"Status","default":"new"},"ip_address":{"type":"string","title":"Ip Address","default":"unknown"},"user_agent":{"type":"string","title":"User Agent","default":"unknown"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["name","email","subject","category","message"],"title":"ContactFormData"},"ExportFormat":{"type":"string","enum":["pdf"],"title":"ExportFormat","description":"Available export formats"},"ExportOptions":{"properties":{"include_interpretations":{"type":"boolean","title":"Include Interpretations","description":"Include AI-generated interpretations in the export","default":true},"include_divisional":{"type":"boolean","title":"Include Divisional","description":"Include divisional charts analysis","default":true},"include_transits":{"type":"boolean","title":"Include Transits","description":"Include current transits information","default":true},"include_aspects":{"type":"boolean","title":"Include Aspects","description":"Include aspects analysis","default":true},"include_houses":{"type":"boolean","title":"Include Houses","description":"Include house positions and analysis","default":true},"watermark_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Watermark Text","description":"Custom watermark text (uses default if not provided)"},"interpretations":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Interpretations","description":"Pre-computed interpretations to include"},"custom_sections":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Sections","description":"Custom sections to include"}},"type":"object","title":"ExportOptions","description":"Options for export customization"},"ExportRequest":{"properties":{"format":{"$ref":"#/components/schemas/ExportFormat","description":"Export format (PDF, HTML, etc.)"},"chart_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chart Data","description":"Chart calculation data"},"birth_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Birth Details","description":"Birth information"},"options":{"$ref":"#/components/schemas/ExportOptions","description":"Export customization options"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional metadata for the export"}},"type":"object","required":["format"],"title":"ExportRequest","description":"Request model for export operations"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HoroscopeLLMRequest":{"properties":{"birth_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Date","description":"The user's exact natal birth date in YYYY-MM-DD format (e.g. '1990-07-12'). NEVER pass today's date or transit date here."},"birth_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth City","description":"The user's natal birth city (e.g. 'London', 'Corpus Christi, Texas')."},"birth_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Time","description":"The user's exact birth time in 24-hr HH:MM format (e.g. '19:20'). If unknown or not provided, defaults to '12:00' (solar noon).","default":"12:00"},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time","description":"Legacy alias for birth_time. If unknown, defaults to '12:00'."},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date","description":"Legacy alias for birth_date or transit date."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"Legacy alias for birth_city."},"current_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current City","description":"The user's current city if relocated from birth location (e.g. 'Dallas, TX'). Used for high-precision local transit calculation."},"target_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target City","description":"Alias for current_city if user relocated (e.g. 'Dallas, TX')."},"target_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Date","description":"The transit/target date to forecast (YYYY-MM-DD). Defaults to today if omitted."},"user_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Prompt","description":"The raw user prompt if available."},"platform":{"type":"string","title":"Platform","description":"The platform invoking this tool ('chatgpt' or 'vertex').","default":"chatgpt"}},"type":"object","title":"HoroscopeLLMRequest","description":"Input schema required to generate a highly personalized astrological transit horoscope.\nThe user's historical natal birth date ('birth_date') and natal birth city ('birth_city') are strictly required.\nNEVER pass today's transit date or future dates as birth_date."},"InterpretationRequest":{"properties":{"chart_data":{"additionalProperties":true,"type":"object","title":"Chart Data"},"system":{"type":"string","title":"System","default":"western"},"include_transits":{"type":"boolean","title":"Include Transits","default":false},"language":{"type":"string","title":"Language","default":"en"},"entity_type":{"type":"string","title":"Entity Type","default":"person"},"erux_exp_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Erux Exp Id"},"erux_var_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Erux Var Id"}},"type":"object","required":["chart_data"],"title":"InterpretationRequest"},"InterpretationValidationRequest":{"properties":{"interpretation_text":{"type":"string","title":"Interpretation Text","description":"The AI-generated interpretation text to validate"},"chart_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chart Data","description":"Optional chart data for context"}},"type":"object","required":["interpretation_text"],"title":"InterpretationValidationRequest","description":"Request model for validating interpretation text"},"InterpretationValidationResponse":{"properties":{"validations":{"items":{"$ref":"#/components/schemas/ValidationFinding"},"type":"array","title":"Validations","description":"List of validation findings"},"validation_score":{"type":"number","title":"Validation Score","description":"Overall validation score (0-1)"},"total_claims":{"type":"integer","title":"Total Claims","description":"Total number of claims found"},"validated_claims":{"type":"integer","title":"Validated Claims","description":"Number of validated claims"},"partially_validated":{"type":"integer","title":"Partially Validated","description":"Number of partially validated claims"},"not_validated":{"type":"integer","title":"Not Validated","description":"Number of claims not validated by research"}},"type":"object","required":["validations","validation_score","total_claims","validated_claims","partially_validated","not_validated"],"title":"InterpretationValidationResponse","description":"Response model for interpretation validation"},"LifeEvent":{"properties":{"event_type":{"type":"string","title":"Event Type"},"event_date":{"type":"string","title":"Event Date"},"intensity":{"type":"integer","title":"Intensity","default":5},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_verified":{"type":"boolean","title":"Is Verified","default":false},"id":{"type":"string","title":"Id"},"profile_id":{"type":"string","title":"Profile Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["event_type","event_date","id","profile_id","created_at"],"title":"LifeEvent","description":"Life event schema."},"LifeEventCreate":{"properties":{"event_type":{"type":"string","title":"Event Type"},"event_date":{"type":"string","title":"Event Date"},"intensity":{"type":"integer","title":"Intensity","default":5},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_verified":{"type":"boolean","title":"Is Verified","default":false}},"type":"object","required":["event_type","event_date"],"title":"LifeEventCreate","description":"Life event creation schema."},"NotificationPreferencesRequest":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Master toggle for notifications","default":true},"preferred_routine_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Routine Time","description":"Preferred morning routine time (HH:MM local)","default":"08:00"},"notification_demeanor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notification Demeanor","description":"Tone: 'mindful', 'strategic', 'forensic'","default":"mindful"},"orb_sensitivity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Orb Sensitivity","description":"Sensitivity: 'tight' (<=0.5°), 'moderate' (<=1.0°), 'major_only'","default":"tight"},"quiet_hours_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Quiet Hours Enabled","description":"Quiet hours enforcement","default":true},"quiet_hours_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Hours Start","description":"Quiet hours start (HH:MM local)","default":"22:00"},"quiet_hours_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Hours End","description":"Quiet hours end (HH:MM local)","default":"07:30"},"daily_horoscope":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Daily Horoscope","description":"Daily morning alignment","default":true},"weekly_horoscope":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Weekly Horoscope","description":"Weekly Monday overview","default":true},"transit_exact_peaks":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Transit Exact Peaks","description":"Exact transit aspect peaks (<=0.25°)","default":true},"transit_dasha_impacts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Transit Dasha Impacts","description":"Transits aspecting active Dasha lords","default":true},"silent_badge_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Silent Badge Mode","description":"Silent lock-screen badge delivery","default":false}},"type":"object","title":"NotificationPreferencesRequest","description":"User preferences for celestial routine and alerts"},"OneClickFeedbackRequest":{"properties":{"prediction_id":{"type":"string","title":"Prediction Id"},"feedback_type":{"type":"string","title":"Feedback Type"},"user_id":{"type":"string","title":"User Id"},"profile_id":{"type":"string","title":"Profile Id"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis"},"actual_event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actual Event Type"},"actual_event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actual Event Date"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"pillar_notes":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Pillar Notes"},"chart_system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chart System","default":"hybrid"}},"type":"object","required":["prediction_id","feedback_type","user_id","profile_id"],"title":"OneClickFeedbackRequest"},"PlanetPosition":{"properties":{"planet":{"type":"string","title":"Planet"},"longitude":{"type":"number","title":"Longitude"},"latitude":{"type":"number","title":"Latitude"},"distance":{"type":"number","title":"Distance"},"speed":{"type":"number","title":"Speed"},"sign":{"type":"string","title":"Sign"},"house":{"type":"integer","title":"House"},"degree_in_sign":{"type":"number","title":"Degree In Sign"},"aspects":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Aspects"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"sign_num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sign Num"},"is_retrograde":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Retrograde"},"isTransit":{"type":"boolean","title":"Istransit","default":false},"isAsteroid":{"type":"boolean","title":"Isasteroid","default":false},"nakshatra":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nakshatra"},"pada":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pada"},"remaining_degrees":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Remaining Degrees"},"position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Position"},"entry_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry Date"},"exit_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exit Date"}},"type":"object","required":["planet","longitude","latitude","distance","speed","sign","house","degree_in_sign"],"title":"PlanetPosition"},"PredictionFeedbackRequest":{"properties":{"prediction_id":{"type":"string","title":"Prediction Id","description":"Unique identifier for the prediction"},"prediction_end_date":{"type":"string","title":"Prediction End Date","description":"End date of prediction period (YYYY-MM-DD)"},"event_occurred":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Event Occurred","description":"Did the predicted event occur?"},"feedback_type":{"type":"string","title":"Feedback Type","description":"Type: 'occurred', 'partial', 'internal', 'none'"},"actual_event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actual Event Type","description":"Actual event type if occurred"},"actual_event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actual Event Date","description":"Actual event date if occurred (may be after prediction period)"},"event_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Description","description":"Description of what happened"},"internal_experience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Experience","description":"Internal thoughts/situations around this time"},"alignment_score":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Alignment Score","description":"How well did it align? (1-5 scale)"},"current_dasha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Dasha","description":"Current dasha period"},"current_transits":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Transits","description":"Current transits (JSON string)"},"consent_for_research":{"type":"boolean","title":"Consent For Research","description":"Consent to use feedback for research","default":false},"is_delayed_effect":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Delayed Effect","description":"Did the effect manifest after the prediction period?"},"when_noticed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"When Noticed","description":"When did you first notice this? (if delayed)"},"chart_system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chart System","description":"Astrological chart system (e.g., 'western', 'vedic', 'hybrid')","default":"hybrid"}},"type":"object","required":["prediction_id","prediction_end_date","feedback_type"],"title":"PredictionFeedbackRequest","description":"Request model for submitting prediction feedback"},"PredictionFeedbackResponse":{"properties":{"id":{"type":"integer","title":"Id","description":"Feedback record ID"},"prediction_id":{"type":"string","title":"Prediction Id","description":"Prediction ID"},"feedback_date":{"type":"string","title":"Feedback Date","description":"When feedback was submitted"},"message":{"type":"string","title":"Message","description":"Thank you message"}},"type":"object","required":["id","prediction_id","feedback_date","message"],"title":"PredictionFeedbackResponse","description":"Response model for prediction feedback"},"PredictionRequest":{"properties":{"date":{"type":"string","title":"Date","description":"Birth date (YYYY-MM-DD)"},"time":{"type":"string","title":"Time","description":"Birth time (HH:MM)"},"city":{"type":"string","title":"City","description":"Birth city"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State","description":"Birth state/province"},"country":{"type":"string","title":"Country","description":"Birth country"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"Timezone (auto-detected if not provided)"},"relationship":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship","description":"Relationship to user (Self, Spouse, Child, etc.)"},"system":{"type":"string","title":"System","description":"Astrological system (vedic/western)","default":"vedic"},"house_system":{"type":"string","title":"House System","description":"House system","default":"whole_sign"},"prediction_window_days":{"type":"integer","title":"Prediction Window Days","description":"Number of days ahead to predict (default 90)","default":90},"include_event_types":{"type":"boolean","title":"Include Event Types","description":"Include event type predictions","default":true},"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id","description":"The ID of the profile used for this prediction"},"horoscope_location_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Location Type","description":"Location type ('birth' or 'current')","default":"birth"},"current_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Place","description":"Relocated current place"},"current_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Timezone","description":"Relocated current timezone"},"current_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Latitude","description":"Relocated current latitude"},"current_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Longitude","description":"Relocated current longitude"}},"type":"object","required":["date","time","city","country"],"title":"PredictionRequest","description":"Request model for generating predictions"},"PredictionResponse":{"properties":{"date_range":{"additionalProperties":{"type":"string"},"type":"object","title":"Date Range","description":"Start and end dates of prediction window"},"confidence":{"type":"number","title":"Confidence","description":"Confidence score (0-1)"},"confidence_percentage":{"type":"number","title":"Confidence Percentage","description":"Confidence as percentage"},"factors":{"additionalProperties":true,"type":"object","title":"Factors","description":"Factors contributing to prediction"},"dasha_periods":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Dasha Periods","description":"Dasha periods in this window"},"transits":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Transits","description":"Important transits"},"research_basis":{"type":"string","title":"Research Basis","description":"Research basis explanation"},"prediction_text":{"type":"string","title":"Prediction Text","description":"Human-readable prediction"},"classical_insights":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classical Insights","description":"Classical authority insights from RAG under the hood"},"real_world_guidance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Real World Guidance","description":"Strategic real-world guidance"},"astro_remedy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Astro Remedy","description":"Suggested astrological remedies"},"days_from_dasha_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days From Dasha Start","description":"Days from dasha period start (research: mean 2,747 days)"},"life_pillars":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Life Pillars","description":"Life-pillar organised horoscope findings"},"activity_guide":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Activity Guide","description":"Muhurta activity guide and verdicts"}},"type":"object","required":["date_range","confidence","confidence_percentage","factors","research_basis","prediction_text"],"title":"PredictionResponse","description":"Response model for a single prediction"},"PredictionsResponse":{"properties":{"predictions":{"items":{"$ref":"#/components/schemas/PredictionResponse"},"type":"array","title":"Predictions","description":"List of predictions"},"total_predictions":{"type":"integer","title":"Total Predictions","description":"Total number of predictions"},"prediction_window_days":{"type":"integer","title":"Prediction Window Days","description":"Days ahead predicted"},"generated_at":{"type":"string","title":"Generated At","description":"Timestamp when predictions were generated"}},"type":"object","required":["predictions","total_predictions","prediction_window_days","generated_at"],"title":"PredictionsResponse","description":"Response model for predictions endpoint"},"PushSubscriptionKeys":{"properties":{"p256dh":{"type":"string","title":"P256Dh","description":"Client P-256 public key"},"auth":{"type":"string","title":"Auth","description":"Client auth authentication secret"}},"type":"object","required":["p256dh","auth"],"title":"PushSubscriptionKeys","description":"Cryptographic client keys for Web Push (VAPID)"},"PushSubscriptionRequest":{"properties":{"endpoint":{"type":"string","title":"Endpoint","description":"W3C Web Push endpoint URL"},"keys":{"$ref":"#/components/schemas/PushSubscriptionKeys","description":"Cryptographic client keys"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform","description":"Platform: 'ios', 'android', 'desktop', 'safari_macos'","default":"desktop"},"is_standalone":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Standalone","description":"Whether app is running in standalone PWA mode","default":false},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent","description":"Client user agent string"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings","description":"Client routine preferences"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"User UUID if authenticated"}},"type":"object","required":["endpoint","keys"],"title":"PushSubscriptionRequest","description":"Payload sent by client when subscribing to PWA push notifications"},"PushUnsubscribeRequest":{"properties":{"endpoint":{"type":"string","title":"Endpoint","description":"W3C Web Push endpoint URL to deactivate"}},"type":"object","required":["endpoint"],"title":"PushUnsubscribeRequest","description":"Payload to unsubscribe a specific device endpoint"},"SaveImageRequest":{"properties":{"filename":{"type":"string","title":"Filename"},"base64_data":{"type":"string","title":"Base64 Data"}},"type":"object","required":["filename","base64_data"],"title":"SaveImageRequest"},"SessionRequest":{"properties":{"session_id":{"type":"string","maxLength":100,"minLength":1,"title":"Session Id","description":"Session identifier"},"user_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"User Id","description":"User identifier"},"session_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Session Data","description":"Session data"},"environment":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Environment","description":"Environment"},"utm_source":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Source"},"utm_medium":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Medium"},"utm_campaign":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Campaign"},"utm_content":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Content"},"utm_term":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Term"},"referrer":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Referrer"},"ref":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Ref"},"user_type":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"User Type"},"fingerprint":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Fingerprint"},"experiment_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Experiment Id"},"variation_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Variation Id"},"treatment_group":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Treatment Group"}},"type":"object","required":["session_id"],"title":"SessionRequest","description":"Schema for session tracking requests"},"SyncCalendarRequest":{"properties":{"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id","description":"Optional target profile ID. Defaults to Primary/Self profile."},"google_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Access Token","description":"Google OAuth access token (if not already stored in user profile)."},"months_ahead":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"Months Ahead","description":"How many months ahead to sync cosmic milestones (1-12).","default":6}},"type":"object","title":"SyncCalendarRequest"},"TestNotificationRequest":{"properties":{"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Specific W3C Web Push endpoint URL to target"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Target user ID"}},"type":"object","title":"TestNotificationRequest","description":"Payload to trigger a test notification to a specific device endpoint or user"},"TraceQueryRequest":{"properties":{"question":{"type":"string","title":"Question","description":"The astrological question to trace"},"system":{"type":"string","title":"System","description":"Astrological system: 'western' or 'vedic'","default":"western"},"chart_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chart Data","description":"Optional chart data. If not provided, uses a sample chart."}},"type":"object","required":["question"],"title":"TraceQueryRequest","description":"Request model for trace-query endpoint."},"TraceQueryResponse":{"properties":{"answer":{"type":"string","title":"Answer"},"trace":{"additionalProperties":true,"type":"object","title":"Trace"}},"type":"object","required":["answer","trace"],"title":"TraceQueryResponse","description":"Response model for trace-query endpoint."},"TransitData":{"properties":{"positions":{"additionalProperties":{"$ref":"#/components/schemas/PlanetPosition"},"type":"object","title":"Positions"},"transit_natal_aspects":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Transit Natal Aspects"},"transit_transit_aspects":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Transit Transit Aspects"}},"type":"object","required":["positions"],"title":"TransitData"},"TransitRequest":{"properties":{"transit_date":{"type":"string","title":"Transit Date"},"transit_time":{"type":"string","title":"Transit Time"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"city":{"type":"string","title":"City"},"country":{"type":"string","title":"Country"},"system":{"type":"string","title":"System","default":"vedic"}},"type":"object","required":["transit_date","transit_time","city","country"],"title":"TransitRequest"},"UnsyncCalendarRequest":{"properties":{"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id","description":"Target profile ID to de-sync"},"profile_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Name","description":"Target profile name to de-sync"}},"type":"object","title":"UnsyncCalendarRequest"},"UserCreate":{"properties":{"username":{"type":"string","title":"Username"},"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"}},"type":"object","required":["username","email","password"],"title":"UserCreate","description":"User creation schema."},"UserProfile":{"properties":{"name":{"type":"string","title":"Name"},"birth_date":{"type":"string","format":"date-time","title":"Birth Date"},"birth_place":{"type":"string","title":"Birth Place"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"timezone":{"type":"string","title":"Timezone"},"horoscope_location_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Location Type","default":"birth"},"current_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Latitude"},"current_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Longitude"},"current_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Timezone"},"current_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Place"},"is_primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Primary","default":false},"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"relationship":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship"}},"type":"object","required":["name","birth_date","birth_place","latitude","longitude","timezone","id","user_id","created_at"],"title":"UserProfile","description":"User profile dictionary schema."},"UserProfileCreate":{"properties":{"name":{"type":"string","title":"Name"},"birth_date":{"type":"string","format":"date-time","title":"Birth Date"},"birth_place":{"type":"string","title":"Birth Place"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"timezone":{"type":"string","title":"Timezone"},"horoscope_location_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Location Type","default":"birth"},"current_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Latitude"},"current_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Longitude"},"current_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Timezone"},"current_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Place"},"is_primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Primary"},"relationship":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship"}},"type":"object","required":["name","birth_date","birth_place","latitude","longitude","timezone"],"title":"UserProfileCreate","description":"User profile creation schema."},"UserProfileUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"relationship":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship"},"birth_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Birth Date"},"birth_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Place"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"horoscope_location_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Location Type"},"current_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Latitude"},"current_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Longitude"},"current_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Timezone"},"current_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Place"},"is_primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Primary"}},"type":"object","title":"UserProfileUpdate","description":"User profile update schema."},"UserQueryRequest":{"properties":{"query_type":{"type":"string","maxLength":50,"minLength":1,"title":"Query Type","description":"Type of query"},"query_text":{"type":"string","maxLength":1000,"minLength":1,"title":"Query Text","description":"Query text"},"user_id":{"type":"string","maxLength":100,"minLength":1,"title":"User Id","description":"User identifier"},"query_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Query Context","description":"Query context"},"response_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Response Success","description":"Whether response was successful","default":true},"response_time":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Response Time","description":"Response time"},"response_length":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Response Length","description":"Response length"},"astrological_system":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Astrological System","description":"Astrological system"},"chart_type":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Chart Type","description":"Chart type"},"has_transits":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Transits","description":"Whether chart has transits","default":false},"birth_date":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Birth Date","description":"Birth date"},"birth_time":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Birth Time","description":"Birth time"},"birth_location":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Birth Location","description":"Birth location"},"timezone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Timezone","description":"Timezone"},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp","description":"Query timestamp"}},"type":"object","required":["query_type","query_text","user_id"],"title":"UserQueryRequest","description":"Schema for user query tracking requests"},"UserUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Admin"},"horoscope_cadence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Cadence"},"horoscope_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Profile Id"},"current_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Timezone"},"consent_for_research":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Consent For Research"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"}},"type":"object","title":"UserUpdate","description":"User update schema."},"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"},"ValidationFinding":{"properties":{"type":{"type":"string","title":"Type","description":"Type: dasha, transit, or event_type"},"claim":{"type":"string","title":"Claim","description":"The astrological claim being validated"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context","description":"Context where claim appears"},"status":{"type":"string","title":"Status","description":"Status: validated, partial, or not_validated"},"research_finding":{"additionalProperties":true,"type":"object","title":"Research Finding","description":"Research findings for this claim"}},"type":"object","required":["type","claim","status","research_finding"],"title":"ValidationFinding","description":"Individual validation finding"},"app__admin__Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"}},"type":"object","required":["access_token","token_type"],"title":"Token"},"app__admin__User":{"properties":{"username":{"type":"string","title":"Username"},"disabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disabled"}},"type":"object","required":["username"],"title":"User"},"app__auth__schemas__Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"}},"type":"object","required":["access_token","token_type"],"title":"Token","description":"Token schema."},"app__auth__schemas__User":{"properties":{"username":{"type":"string","title":"Username"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"id":{"type":"string","title":"Id"},"is_active":{"type":"boolean","title":"Is Active","default":true},"is_admin":{"type":"boolean","title":"Is Admin","default":false},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"is_verified":{"type":"boolean","title":"Is Verified","default":false},"provider":{"type":"string","title":"Provider","default":"local"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"profiles":{"items":{"$ref":"#/components/schemas/UserProfile"},"type":"array","title":"Profiles","default":[]},"horoscope_cadence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Cadence","default":"none"},"horoscope_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Horoscope Profile Id"},"current_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Timezone"},"horoscope_profile":{"anyOf":[{"$ref":"#/components/schemas/UserProfile"},{"type":"null"}]},"consent_for_research":{"type":"boolean","title":"Consent For Research","default":true},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"}},"type":"object","required":["username","id"],"title":"User","description":"User dictionary schema."},"fastapi___compat__v2__Body_export_chart_pdf_export_chart_pdf_post__1":{"properties":{"chart_data":{"$ref":"#/components/schemas/ChartData"},"birth_details":{"$ref":"#/components/schemas/BirthDetails"},"options":{"anyOf":[{"$ref":"#/components/schemas/ExportOptions"},{"type":"null"}]}},"type":"object","required":["chart_data","birth_details"],"title":"Body_export_chart_pdf_export_chart_pdf_post"},"fastapi___compat__v2__Body_export_chart_pdf_export_chart_pdf_post__2":{"properties":{"chart_data":{"$ref":"#/components/schemas/ChartData"},"birth_details":{"$ref":"#/components/schemas/BirthDetails"}},"type":"object","required":["chart_data","birth_details"],"title":"Body_export_chart_pdf_export_chart_pdf_post"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"token"}}}}}}