{"openapi":"3.1.0","info":{"title":"VedicSpace Engine API","version":"3.0.0"},"paths":{"/api/v2/auth/register":{"post":{"tags":["auth-vault"],"summary":"Register","operationId":"register_api_v2_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/auth/login":{"post":{"tags":["auth-vault"],"summary":"Login","operationId":"login_api_v2_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/auth/request-otp":{"post":{"tags":["auth-vault"],"summary":"Request Otp","operationId":"request_otp_api_v2_auth_request_otp_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestOtpReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/auth/verify-otp":{"post":{"tags":["auth-vault"],"summary":"Verify Otp","operationId":"verify_otp_api_v2_auth_verify_otp_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyOtpReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/auth/me":{"get":{"tags":["auth-vault"],"summary":"Auth Me","operationId":"auth_me_api_v2_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/auth/profile":{"post":{"tags":["auth-vault"],"summary":"Auth Save Profile","operationId":"auth_save_profile_api_v2_auth_profile_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/auth/export":{"get":{"tags":["auth-vault"],"summary":"Auth Export","description":"/legal §2: \"Export everything as JSON any time.\" This is that sentence, made true.","operationId":"auth_export_api_v2_auth_export_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/auth/delete":{"post":{"tags":["auth-vault"],"summary":"Auth Delete","description":"/legal §2: immediate-soft, erased after the grace window. Confirmed by typing DELETE.","operationId":"auth_delete_api_v2_auth_delete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/auth/erase-sweep":{"post":{"tags":["auth-vault"],"summary":"Auth Erase Sweep","description":"Run the 30-day erasure sweep on demand (for a timer). Gated by CRON_SECRET, fail-closed.","operationId":"auth_erase_sweep_api_v2_auth_erase_sweep_post","parameters":[{"name":"X-Cron-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Cron-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/vault/charts":{"get":{"tags":["auth-vault"],"summary":"Vault List Charts","operationId":"vault_list_charts_api_v2_vault_charts_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["auth-vault"],"summary":"Vault Save Chart","operationId":"vault_save_chart_api_v2_vault_charts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartSaveReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/vault/charts/{chart_id}":{"delete":{"tags":["auth-vault"],"summary":"Vault Delete Chart","operationId":"vault_delete_chart_api_v2_vault_charts__chart_id__delete","parameters":[{"name":"chart_id","in":"path","required":true,"schema":{"type":"string","title":"Chart Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/memory/events":{"get":{"tags":["auth-vault"],"summary":"Memory List Events","operationId":"memory_list_events_api_v2_memory_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["auth-vault"],"summary":"Memory Create Event","operationId":"memory_create_event_api_v2_memory_events_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryEventReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/memory/events/{event_id}":{"get":{"tags":["auth-vault"],"summary":"Memory Get Event","operationId":"memory_get_event_api_v2_memory_events__event_id__get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["auth-vault"],"summary":"Memory Update Event","operationId":"memory_update_event_api_v2_memory_events__event_id__put","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryEventPatchReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["auth-vault"],"summary":"Memory Delete Event","operationId":"memory_delete_event_api_v2_memory_events__event_id__delete","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/notifications/prefs":{"get":{"tags":["notifications"],"summary":"Notifications Get Prefs","operationId":"notifications_get_prefs_api_v2_notifications_prefs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["notifications"],"summary":"Notifications Save Prefs","operationId":"notifications_save_prefs_api_v2_notifications_prefs_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPrefsReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/notifications/daily-gates/send":{"post":{"tags":["notifications"],"summary":"Notifications Send Daily Gates","description":"Batch-send daily gates digest. Optional X-Cron-Secret when CRON_SECRET is set.","operationId":"notifications_send_daily_gates_api_v2_notifications_daily_gates_send_post","parameters":[{"name":"X-Cron-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Cron-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dasha/meanings":{"get":{"summary":"Dasha Meanings","description":"Return static text describing what each dasha planet represents.\nFrontend caches this on first call. Used to enrich Current Periods page.\nPASS 7a addition.","operationId":"dasha_meanings_api_dasha_meanings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/catalog":{"get":{"summary":"Api Catalog","description":"Machine-readable API catalog — OpenAPI routes grouped by category.","operationId":"api_catalog_api_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/reference/remedy-corpus":{"get":{"summary":"Api Remedy Corpus","description":"Gemstone · Rudraksha · Vastu reference tables with prove_refs (REFERENCE tier).","operationId":"api_remedy_corpus_api_v2_reference_remedy_corpus_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/smoke-test":{"get":{"summary":"Api V2 Smoke Test","description":"Quick live check — runs core engines in-process (no external HTTP).","operationId":"api_v2_smoke_test_api_v2_smoke_test_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health","description":"Health check that NEVER 500s. Reports per-component status.\n\nEach piece (swisseph version probe, MySQL connection) is in its own try/except\nso a failure in one component is visible without crashing the whole endpoint.\nCritical for uptime pingers and Render's auto-restart behavior.\n\nFIX 2026-08-12 (stability audit): this was `@app.get`, so a HEAD request fell\nthrough to the SPA catch-all and returned **404**. UptimeRobot sends HEAD — the\nmonitor had logged 3,678 such 404s and could not have told a dead site from a\nlive one. Same class as §9.8 rule 7 (verify these routes with GET, not curl -I);\nhere the consequence was an alarm that looked like coverage and was not.","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Health","description":"Health check that NEVER 500s. Reports per-component status.\n\nEach piece (swisseph version probe, MySQL connection) is in its own try/except\nso a failure in one component is visible without crashing the whole endpoint.\nCritical for uptime pingers and Render's auto-restart behavior.\n\nFIX 2026-08-12 (stability audit): this was `@app.get`, so a HEAD request fell\nthrough to the SPA catch-all and returned **404**. UptimeRobot sends HEAD — the\nmonitor had logged 3,678 such 404s and could not have told a dead site from a\nlive one. Same class as §9.8 rule 7 (verify these routes with GET, not curl -I);\nhere the consequence was an alarm that looked like coverage and was not.","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/geocode":{"get":{"summary":"Geocode","description":"Geocode a place name to lat/lon.\n\nPASS 7a FIX: Local Indian cities database (cities_india.json) is now checked\nFIRST. It contains ~270 verified Indian places with Google-matching centroids,\nso users searching for Indian cities get instant 1ms lookups with coordinates\nthat exactly match what they'd see on Google.\n\nPASS 6 FIX: Open-Meteo (GeoNames-based, city CENTROIDS) is the primary\nnetwork provider, since its coordinates match Google Maps and what users see\nelsewhere. Nominatim (OpenStreetMap) is used as a final fallback for obscure\nvillages not in GeoNames — Nominatim returns OSM node coordinates which\ncan be off-center for major cities (e.g. Vidisha was 1km off vs Google).\n\nProvider chain:\n  0. Local cities_india.json   — 1ms, 100% Google-match for major Indian cities\n  1. Open-Meteo (GeoNames)     — ~200ms, global coverage, near-Google match\n  2. Nominatim (OSM)           — ~400ms, last resort for tiny villages\n\nReturns: list of {name, country, admin1, latitude, longitude, timezone}","operationId":"geocode_geocode_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"summary":"Geocode","description":"Geocode a place name to lat/lon.\n\nPASS 7a FIX: Local Indian cities database (cities_india.json) is now checked\nFIRST. It contains ~270 verified Indian places with Google-matching centroids,\nso users searching for Indian cities get instant 1ms lookups with coordinates\nthat exactly match what they'd see on Google.\n\nPASS 6 FIX: Open-Meteo (GeoNames-based, city CENTROIDS) is the primary\nnetwork provider, since its coordinates match Google Maps and what users see\nelsewhere. Nominatim (OpenStreetMap) is used as a final fallback for obscure\nvillages not in GeoNames — Nominatim returns OSM node coordinates which\ncan be off-center for major cities (e.g. Vidisha was 1km off vs Google).\n\nProvider chain:\n  0. Local cities_india.json   — 1ms, 100% Google-match for major Indian cities\n  1. Open-Meteo (GeoNames)     — ~200ms, global coverage, near-Google match\n  2. Nominatim (OSM)           — ~400ms, last resort for tiny villages\n\nReturns: list of {name, country, admin1, latitude, longitude, timezone}","operationId":"geocode_geocode_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cities":{"get":{"summary":"Api Cities","description":"Fast local-only city search for autocomplete.\nSearches the cities_india.json database (302 Indian cities).\nReturns up to 8 matches instantly with no network calls.","operationId":"api_cities_api_cities_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match":{"post":{"summary":"Api Match","description":"Compute Ashtakoot Guna Milan for two partners.\nReturns 36-point match analysis + Manglik + doshas + verdict + remedies.","operationId":"api_match_api_match_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kundli":{"post":{"summary":"Api Kundli","operationId":"api_kundli_api_kundli_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/kundli":{"post":{"summary":"Api V2 Kundli","description":"V2 kundli endpoint — uses the clean astromata_core engine\n(backend/v2/astromata_core.py) and the canonical CHART JSON contract\ndefined in contracts/sample_chart.json.\n\nReturns:\n  - chart   the full canonical CHART dict (meta, lagna, planets, houses,\n            navamsa, panchanga, dashas; each planet carries dignity,\n            vargottama, combust, retrograde, varga signs D1..D12)\n  - reports interpretation text from the Phaladeepika and Dosha engines\n\nv1 /api/kundli is untouched; this endpoint runs side-by-side.","operationId":"api_v2_kundli_api_v2_kundli_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/kundli/phaladeepika-narrative":{"post":{"summary":"Api V2 Kundli Phaladeepika Narrative","description":"Phaladeepika Ojha-sourced 13-section chart narrative (promoted interpret v2).","operationId":"api_v2_kundli_phaladeepika_narrative_api_v2_kundli_phaladeepika_narrative_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/jyotishi":{"post":{"summary":"Api V2 Jyotishi","description":"AI Jyotiṣī — a classical astrologer chat grounded in the native's REAL\ncomputed chart. Requires ANTHROPIC_API_KEY in the environment (never\nhard-coded). When birth details are supplied (or auth vault via use_vault),\nthe chart is recomputed server-side so every answer reasons from our authentic positions.","operationId":"api_v2_jyotishi_api_v2_jyotishi_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JyotishiReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/jyotishi/chat":{"post":{"summary":"Api V2 Jyotishi Chat","description":"Cited Jyotishi chat — Anthropic + optional RAG prove_refs from classical library.","operationId":"api_v2_jyotishi_chat_api_v2_jyotishi_chat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_JyotishiChatReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/eclipses":{"get":{"summary":"Api V2 Eclipses","description":"Upcoming eclipses (Grahaṇa) — real Swiss Ephemeris, sidereal Lahiri.\nReturns the next `count` solar and lunar eclipses, each with date, type, and\nthe eclipsed luminary's sidereal longitude / sign / nakshatra.\nOptional latitude/longitude (default Delhi) attach Savana-prahar Sutak times.","operationId":"api_v2_eclipses_api_v2_eclipses_get","parameters":[{"name":"count","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Count"}},{"name":"latitude","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"default":28.6139,"title":"Latitude"}},{"name":"longitude","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"default":77.209,"title":"Longitude"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/rashifal":{"get":{"summary":"Api V2 Rashifal","description":"Rāśiphala by CHANDRA GOCHAR — daily single-day or aggregated week/month/year windows.\n\nDaily: Moon-transit house from each janma rāśi at noon on the anchor date.\nWeekly/monthly/yearly: scan consecutive days from the anchor (7 days · rest of month · rest of year)\nand aggregate classical śubha/challenging house counts per sign.","operationId":"api_v2_rashifal_api_v2_rashifal_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(daily|weekly|monthly|yearly)$","default":"daily","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/family-muhurta":{"post":{"summary":"Api V2 Family Muhurta","description":"Family / collective muhūrta. See the section banner above.","operationId":"api_v2_family_muhurta_api_v2_family_muhurta_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_FamilyMuhurtaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/muhurta-finder":{"post":{"summary":"Api V2 Muhurta Finder","description":"Find next good muhurta dates for an activity.\n\nkarma ∈ {vivah | yatra | griha_pravesh | upanayana | general}\nScans `days_ahead` days starting from `start_date` (default today UTC),\nscores each day via muhurta_module.score_day (Muhurta Chintamani),\nreturns the auspicious dates.","operationId":"api_v2_muhurta_finder_api_v2_muhurta_finder_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2MuhurtaFinderReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/tarabala":{"post":{"summary":"Api V2 Tarabala","description":"Tarabala — personal nakshatra strength relative to birth star.\nSource: Nakshatra Prakarana, Muhurta Chintamani shloka 12–13.","operationId":"api_v2_tarabala_api_v2_tarabala_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2TarabalaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/namkaran/syllables":{"get":{"summary":"Api V2 Namkaran Syllables","description":"Namkaran Naamākṣara — by birth moment (date/time/lat/lon) or nakṣatra name/index.","operationId":"api_v2_namkaran_syllables_api_v2_namkaran_syllables_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}},{"name":"time","in":"query","required":false,"schema":{"type":"string","default":"06:00","title":"Time"}},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90,"minimum":-90},{"type":"null"}],"title":"Lat"}},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180,"minimum":-180},{"type":"null"}],"title":"Lon"}},{"name":"nakshatra","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nakshatra"}},{"name":"nakshatra_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nakshatra Name"}},{"name":"pada","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pada"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/life-context":{"get":{"summary":"Api V2 Life Context","description":"NFHS/SRS life-stage cultural calibration — bands only, never percentages.\n\nChart and classical Jyotiṣa always override. Not astrology; context for copy and intent routing.","operationId":"api_v2_life_context_api_v2_life_context_get","parameters":[{"name":"age","in":"query","required":true,"schema":{"type":"number","maximum":120,"minimum":0,"description":"Native age in years","title":"Age"},"description":"Native age in years"},{"name":"gender","in":"query","required":false,"schema":{"type":"string","description":"Male or Female — adjusts marriage pressure curve","default":"Female","title":"Gender"},"description":"Male or Female — adjusts marriage pressure curve"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Indian state id or name (e.g. bihar, delhi)","title":"State"},"description":"Indian state id or name (e.g. bihar, delhi)"},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Latitude — used with lon when state omitted","title":"Lat"},"description":"Latitude — used with lon when state omitted"},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Longitude — used with lat when state omitted","title":"Lon"},"description":"Longitude — used with lat when state omitted"},{"name":"area_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Life area id for question emphasis (e.g. marriage)","title":"Area Id"},"description":"Life area id for question emphasis (e.g. marriage)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/oracle/answer":{"post":{"summary":"Api V2 Oracle Answer","description":"Common-question oracle — conditional classical phala for 100 FAQs.\n\n**Status: LIVE** (Top 10 wired to marriage/career/progeny/yoga/mangal engines).\nRemaining questions return honest PARTIAL stubs with Phase 2 engine pointers.\nq73 child gender is **REFUSED** (PCPNDT). q38 soft-redirects nazar/black magic.\n\nBody: ``question_id`` (q01–q100) or ``question_text`` (English/Hindi alias).\nBirth fields required when ``chart_required`` is true in registry.","operationId":"api_v2_oracle_answer_api_v2_oracle_answer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OracleAnswerReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/chart-rectification":{"post":{"summary":"Api V2 Chart Rectification","description":"Birth-time rectification intake — Phase 1 heuristic + Nine Astrology Panel handoff.\n\nAccepts approximate birth (date, time, ±uncertainty window, place) and life_events[].\nReturns ``panel_required`` without events, or ``candidates`` with scored lagna shifts.","operationId":"api_v2_chart_rectification_api_v2_chart_rectification_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ChartRectificationReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/activation-config":{"get":{"summary":"Activation Hub Config","description":"Serve the locked activation hub config (twelve_levels, ✦ rating,\nlevel_build_contract, life_areas). The ActivationUniverse frontend reads\nthis to drive timing / fallbacks / per-area astrology without code changes.","operationId":"activation_hub_config_api_v2_activation_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/marriage-timing-matrix":{"post":{"summary":"Api V2 Marriage Timing Matrix","description":"MAR-01/02/03 + GOCHARA-01 — promised age range, daśā gate, Jupiter trigger.","operationId":"api_v2_marriage_timing_matrix_api_v2_marriage_timing_matrix_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MarriageTimingMatrixReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/marriage-timing-matrix-ui":{"post":{"summary":"Api V2 Marriage Timing Matrix Ui","description":"EXPAND 1 — couple Marriage Timing Matrix JSON for UI Gantt / sync score.","operationId":"api_v2_marriage_timing_matrix_ui_api_v2_marriage_timing_matrix_ui_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MarriageTimingMatrixUIReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/koota-extended":{"post":{"summary":"Api Koota Extended","description":"EXPAND 3 — Mahendra, Stree-Deergha, Rajju, Varna, Vedha + bhakoot exceptions.","operationId":"api_koota_extended_api_v2_koota_extended_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_KootaExtendedReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/match/koota_extended":{"post":{"summary":"Api Koota Extended","description":"EXPAND 3 — Mahendra, Stree-Deergha, Rajju, Varna, Vedha + bhakoot exceptions.","operationId":"api_koota_extended_api_match_koota_extended_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_KootaExtendedReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dashakoot":{"post":{"summary":"Api Dashakoot","description":"South-Indian ten-porutham (Dashakoot) matching — same engine, the South labels.","operationId":"api_dashakoot_api_v2_dashakoot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_KootaExtendedReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/match/batch":{"post":{"summary":"Api Match Batch","description":"One profile vs many (matrimony screening) — capped at 50 per call, free.","operationId":"api_match_batch_api_v2_match_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MatchBatchReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/keys/register":{"post":{"summary":"Api Keys Register","description":"Instant free API key — no card, no billing, everything stays free.","operationId":"api_keys_register_api_v2_keys_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_KeyRegisterReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/limits":{"get":{"summary":"Api Limits","description":"The operational envelope, published honestly.","operationId":"api_limits_api_v2_limits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/study/marriage":{"post":{"summary":"Api V2 Study Marriage","description":"Accept one outcome row for the marriage study. Validated, never coerced.","operationId":"api_v2_study_marriage_api_v2_study_marriage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MarriageStudyReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/study/marriage/count":{"get":{"summary":"Api V2 Study Marriage Count","description":"Progress only — counts, never rows.","operationId":"api_v2_study_marriage_count_api_v2_study_marriage_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/prasna-marriage":{"post":{"summary":"Api Prasna Marriage","description":"EXPAND PRASNA-01 — horary marriage viability at query time.","operationId":"api_prasna_marriage_api_v2_prasna_marriage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_PrasnaMarriageReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/prasna/marriage":{"post":{"summary":"Api Prasna Marriage","description":"EXPAND PRASNA-01 — horary marriage viability at query time.","operationId":"api_prasna_marriage_api_prasna_marriage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_PrasnaMarriageReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/travel-muhurta":{"post":{"summary":"Api V2 Travel Muhurta","description":"Minimal travel muhurta scan — direction, Disha Shool tier B, pañcāṅga strip.","operationId":"api_v2_travel_muhurta_api_v2_travel_muhurta_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_TravelMuhurtaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/muhurta/travel":{"post":{"summary":"Api V2 Muhurta Travel Alias","description":"Alias for POST /api/v2/travel-muhurta.","operationId":"api_v2_muhurta_travel_alias_api_v2_muhurta_travel_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_TravelMuhurtaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/muhurta/marriage":{"post":{"summary":"Api V2 Muhurta Marriage","description":"Marriage muhurta day scan — lagna shuddhi + MC vivah dagdhatithi hooks.","operationId":"api_v2_muhurta_marriage_api_v2_muhurta_marriage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MarriageMuhurtaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/conception-muhurta":{"post":{"summary":"Api V2 Conception Muhurta","description":"Conception muhurta — beeja/kṣetra + ranked timing windows + garbhādhāna pañcāṅga gate.","operationId":"api_v2_conception_muhurta_api_v2_conception_muhurta_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ConceptionMuhurtaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prasna-lost-object":{"post":{"summary":"Api V2 Prasna Lost Object","description":"Nashta-prasna Tier B stub — theft vs misplaced hints from prashna chart.","operationId":"api_v2_prasna_lost_object_api_v2_prasna_lost_object_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_PrasnaLostObjectReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/body-marks":{"post":{"summary":"Api V2 Body Marks","description":"Body marks stub — drekkana region mapping from natal lagna.","operationId":"api_v2_body_marks_api_v2_body_marks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_BodyMarksReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/past-reading":{"post":{"summary":"Api V2 Past Reading","description":"Statements about the reader's past and body that they can check today.","operationId":"api_v2_past_reading_api_v2_past_reading_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_PastReadingReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/marks-mirror":{"post":{"summary":"Api V2 Marks Mirror","description":"BPHS Adhyāya 82 read in its own direction — a lookup, not a prediction.\n\nThe chapter computes nothing from a chart (15 entries, 0 computable rules, 0 mentions\nof any graha). It reads a mark that is already on the body. So this takes the mark the\nreader says they have and returns the śloka that speaks to it, with the mūla. It has\nno chart parameter at all, which is the point.","operationId":"api_v2_marks_mirror_api_v2_marks_mirror_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MarksMirrorReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/anga-mirror":{"post":{"summary":"Api V2 Anga Mirror","description":"BPHS Adhyāya 81 read in its own direction — the larger sibling of /marks-mirror.\n\n82 ślokas from the sole of the foot to the hair of the head. Like Adhyāya 82 it\ncomputes nothing from a chart, so this has no chart parameter: the reader says which\nfeatures they have and we return the ślokas that speak to them, with the mūla. 77 of\nthe entries are served; 24 are withheld under a stated rule and named in the response\nrather than silently dropped.","operationId":"api_v2_anga_mirror_api_v2_anga_mirror_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_AngaMirrorReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/past-reading/check":{"post":{"summary":"Api V2 Past Reading Check","description":"One reader marking one statement right or wrong. Always 204 — a scorecard must never\ninterrupt the reading, and a duplicate is silently ignored rather than argued with.","operationId":"api_v2_past_reading_check_api_v2_past_reading_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_PastCheckReq"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/past-reading/accuracy":{"get":{"summary":"Api V2 Past Reading Accuracy","description":"Public, ungated, and it includes the rules that are failing.\n\nGating this would defeat it. The reason to keep a score is that other people can see it;\na hit rate only we can read is a marketing asset, not evidence.","operationId":"api_v2_past_reading_accuracy_api_v2_past_reading_accuracy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/sbc-phonetic-grid":{"get":{"summary":"Api V2 Sbc Phonetic Grid","description":"Partial 9×9 Sarvatobhadra phonetic grid + vedha offset metadata.","operationId":"api_v2_sbc_phonetic_grid_api_v2_sbc_phonetic_grid_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/marriage-classical-audit":{"post":{"summary":"Api V2 Marriage Classical Audit","description":"360° classical vivāha checklist for one muhūrta moment (both partners).","operationId":"api_v2_marriage_classical_audit_api_v2_marriage_classical_audit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MarriageClassicalAuditReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/muhurta-intelligence":{"post":{"summary":"Api V2 Muhurta Intelligence","description":"Muhūrta Intelligence Engine — reject bad dates, rank survivors, return top 3.\nLayers: Pañcāṅga (1), natal promise (2), Tārā bala (5), Candra bala (6), audit (10).","operationId":"api_v2_muhurta_intelligence_api_v2_muhurta_intelligence_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MuhurtaIntelligenceReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/shadbala":{"post":{"summary":"Api V2 Shadbala","description":"Shadbala — the six-fold strength of each planet, per Phaladeepika\nCh.4. Computed for all 7 planets (Sun..Saturn) using their longitude,\nhouse placement, birth hour, and retrograde state. Each component\n(Sthana, Dik, Cheshta, Kala, Naisargika, Drig) returns 0..60 rupas;\nthe totals tell which planets are FORTIFIED and which NEED SUPPORT.\n\nPowers Opus's Shadbala Temple visualization with live data.","operationId":"api_v2_shadbala_api_v2_shadbala_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bhavabala":{"post":{"summary":"Api V2 Bhavabala","description":"Bhavabala — per-house strength (Bhavadhipati + Dig + Drishti).","operationId":"api_v2_bhavabala_api_v2_bhavabala_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/fortune-direction":{"post":{"summary":"Api V2 Fortune Direction","description":"Lucky compass direction — digbala, SAV wealth quadrant, swadeśa/videśa, lagna lord.","operationId":"api_v2_fortune_direction_api_v2_fortune_direction_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ashtakavarga":{"post":{"summary":"Api V2 Ashtakavarga","description":"Ashtakavarga — Bhinna + Sarva bindus per Phaladeepika Ch.23.\nPowers Observatory KAshtaka heat-map from the vault chart.","operationId":"api_v2_ashtakavarga_api_v2_ashtakavarga_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ayurdaya":{"post":{"summary":"Api V2 Ayurdaya","description":"Ayurdaya — longevity classification per Phaladeepika Ch.13-14.\nReturns Alpayu / Madhyayu / Dirghayu category + supporting factors:\n8th house lord condition, Saturn placement, Lagna lord strength.","operationId":"api_v2_ayurdaya_api_v2_ayurdaya_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/pindayu":{"post":{"summary":"Api V2 Pindayu","description":"Pinḍāyu v1 — Phaladeepika Ch.13 proportional longevity from exaltation distance.\nReturns per-graha year contributions, total, and Alpa/Madhya/Dirgha band.","operationId":"api_v2_pindayu_api_v2_pindayu_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/doshas":{"post":{"summary":"Api V2 Doshas","description":"Standalone dosha analysis — VedicDoshaEngine from\nbackend/v2/vedic_dosha_engine_master.py (52-dosha detection across\nBrihat Parashara, Brihat Jataka, Garga Hora, Phaladeepika, etc.).\n\nNote: this engine currently includes some Lal Kitab / Pitri Rina\nrules that the project's own research files flag as un-sourced.\nUse as advisory output for paid astrologers, not as ground truth\nuntil each rule is independently verified.","operationId":"api_v2_doshas_api_v2_doshas_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/stri-jataka":{"post":{"summary":"Api V2 Stri Jataka","description":"Strī Jātaka — Phaladīpikā Ch.11, presented with our editorial position stated.\n\nCh.11 as written predicts widowhood and the husband's short life, judges the\nwoman's character, and frames her chart through her husband. We keep the\nscholarship and refuse the harm: each rule returns the COMPUTED placement, what\nthe text ACTUALLY says (attributed, so nothing is misrepresented), and how we\nread it — an indication, never an outcome asserted about a real person. What we\ndecline to compute is declared in `omitted_by_policy`, not quietly dropped.\nSee analyze_stri_jataka() for the full reasoning.","operationId":"api_v2_stri_jataka_api_v2_stri_jataka_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/putra-bhava":{"post":{"summary":"Api V2 Putra Bhava","description":"Putra Bhāva — children analysis from Phaladeepika Ch.12: 5th\nhouse, 5th lord, Jupiter condition, putrakaraka, timing indicators,\nclassical curses (rare). Returns rule-by-rule findings with citations.","operationId":"api_v2_putra_bhava_api_v2_putra_bhava_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/progeny-report":{"post":{"summary":"Api V2 Progeny Report","description":"Progeny (Putra) report — the unified Children life-area engine.\n\nComputes the male (and optional female) charts server-side, then calls\n`backend/progeny/progeny_core.progeny_report` to assemble the canonical\nactivation response: ✦ rating, activation_chain, fertility (beeja/kṣetra),\ncapacity_stars, obstructions (śāpa screens), Jupiter aspects, 5th-house\nassessment, timing_windows, karma_chain, story_beats, and cited sources.\nClassical sources: Phaladeepika Ch.12, BPHS Ch.32, Jataka Parijata.","operationId":"api_v2_progeny_report_api_v2_progeny_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ProgenyReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/marriage-activation":{"post":{"summary":"Api V2 Marriage Report","description":"Marriage (Vivāha) report — unified activation engine for the 7th / Venus / D9 spine.\n\nComputes native (and optional partner) charts server-side, then calls\n``backend/marriage/marriage_activation_core.marriage_report`` for the canonical\nactivation response: ✦ rating, activation_chain, union_strength gateway,\nobstructions (Maṅglik, Nāḍī, Saturn delay), Venus aspects, 7th-house\nassessment, timing_windows, karma_chain, story_beats, and cited sources.","operationId":"api_v2_marriage_report_api_v2_marriage_activation_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MarriageReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/marriage-report":{"post":{"summary":"Api V2 Marriage Report","description":"Marriage (Vivāha) report — unified activation engine for the 7th / Venus / D9 spine.\n\nComputes native (and optional partner) charts server-side, then calls\n``backend/marriage/marriage_activation_core.marriage_report`` for the canonical\nactivation response: ✦ rating, activation_chain, union_strength gateway,\nobstructions (Maṅglik, Nāḍī, Saturn delay), Venus aspects, 7th-house\nassessment, timing_windows, karma_chain, story_beats, and cited sources.","operationId":"api_v2_marriage_report_api_v2_marriage_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MarriageReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/area/career":{"post":{"summary":"Api V2 Career Report","description":"Career (Karma) activation report — 10th house, Amatyakaraka, D10 bridge.","operationId":"api_v2_career_report_api_v2_area_career_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/career-activation":{"post":{"summary":"Api V2 Career Report","description":"Career (Karma) activation report — 10th house, Amatyakaraka, D10 bridge.","operationId":"api_v2_career_report_api_v2_career_activation_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/career-report":{"post":{"summary":"Api V2 Career Report","description":"Career (Karma) activation report — 10th house, Amatyakaraka, D10 bridge.","operationId":"api_v2_career_report_api_v2_career_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/area/wealth":{"post":{"summary":"Api V2 Wealth Report","description":"Wealth (Dhana) activation report — 2nd/11th, dhana yogas, Hora bridge.","operationId":"api_v2_wealth_report_api_v2_area_wealth_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/wealth-report":{"post":{"summary":"Api V2 Wealth Report","description":"Wealth (Dhana) activation report — 2nd/11th, dhana yogas, Hora bridge.","operationId":"api_v2_wealth_report_api_v2_wealth_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/area/health":{"post":{"summary":"Api V2 Health Report","description":"Health (Āyuṣ) activation report — 1st/6th/8th, Saturn stress bands.","operationId":"api_v2_health_report_api_v2_area_health_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/health-report":{"post":{"summary":"Api V2 Health Report","description":"Health (Āyuṣ) activation report — 1st/6th/8th, Saturn stress bands.","operationId":"api_v2_health_report_api_v2_health_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/area/education":{"post":{"summary":"Api V2 Education Report","description":"Education (Vidyā) activation report — 4th/5th, Mercury/Jupiter, D24 hint.","operationId":"api_v2_education_report_api_v2_area_education_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/education-report":{"post":{"summary":"Api V2 Education Report","description":"Education (Vidyā) activation report — 4th/5th, Mercury/Jupiter, D24 hint.","operationId":"api_v2_education_report_api_v2_education_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/area/property":{"post":{"summary":"Api V2 Property Report","description":"Property (Bhūmi) activation report — 4th house, Mars, griha pravesh link.","operationId":"api_v2_property_report_api_v2_area_property_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/property-report":{"post":{"summary":"Api V2 Property Report","description":"Property (Bhūmi) activation report — 4th house, Mars, griha pravesh link.","operationId":"api_v2_property_report_api_v2_property_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/area/dharma_moksha":{"post":{"summary":"Api V2 Dharma Report","description":"Dharma & Mokṣa activation report — 9th/12th, Jupiter/Ketu spiritual vocation.","operationId":"api_v2_dharma_report_api_v2_area_dharma_moksha_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dharma-report":{"post":{"summary":"Api V2 Dharma Report","description":"Dharma & Mokṣa activation report — 9th/12th, Jupiter/Ketu spiritual vocation.","operationId":"api_v2_dharma_report_api_v2_dharma_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LifeAreaReportReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/report/generate":{"post":{"summary":"Api V2 Report Generate","description":"Assemble printable HTML/PDF report — full natal or Ashtakūṭa compatibility.","operationId":"api_v2_report_generate_api_v2_report_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ReportGenerateReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/library/snippet":{"get":{"summary":"Api V2 Library Snippet","description":"RAG snippet search over the classical TXT corpus.\n\nGated by CHROMA_ENABLED env. Returns an honest disabled state when the\nvector index or chromadb is unavailable (no crash, no fabrication).","operationId":"api_v2_library_snippet_api_v2_library_snippet_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/billing/checkout":{"post":{"summary":"Api V2 Billing Checkout","description":"Stripe checkout — honest 501 when billing not configured.\n\nSee docs/STRIPE.md. Creates a real Checkout Session only when BILLING_ENABLED=true,\nSTRIPE_SECRET_KEY is set, and the stripe package is installed.","operationId":"api_v2_billing_checkout_api_v2_billing_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_BillingCheckoutReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/billing/webhook":{"post":{"summary":"Api V2 Billing Webhook","description":"Stripe webhook — persists subscription tier to entitlements + users.subscription_tier.","operationId":"api_v2_billing_webhook_api_v2_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/pravrajya":{"post":{"summary":"Api V2 Pravrajya","description":"Pravrajya yoga — sannyāsa/renunciation indicators per Phaladeepika\nCh.27 (Sh.1-8): 4+ planets in one house, 10th lord influence,\nSaturn-Moon connections, and the spiritual path it indicates\n(Shaiva, Vaishnava, Buddhist, etc).","operationId":"api_v2_pravrajya_api_v2_pravrajya_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/rashi-phala":{"post":{"summary":"Api V2 Rashi Phala","description":"Rāśi Phala — lagna personality description from Phaladeepika\nCh.9 (Sh.1-12). The classical \"who you are\" reading based purely\non rising sign: physical body, temperament, instincts, marks.","operationId":"api_v2_rashi_phala_api_v2_rashi_phala_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bhava-phala":{"post":{"summary":"Api V2 Bhava Phala","description":"Bhāva Phala — all 9 planet-in-house interpretations for THIS\nchart, sourced from Phaladeepika Ch.8 (108 entries: 9 planets ×\n12 houses, this endpoint returns the 9 entries that apply).","operationId":"api_v2_bhava_phala_api_v2_bhava_phala_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/karmajeeva":{"post":{"summary":"Api V2 Karmajeeva","description":"Karmajīva — career & livelihood per Phaladeepika Ch.5. Maps the\nlord of the navamsha sign occupied by the 10th-house lord to its\nclassical career indicators (government, trade, arts, service, etc.).","operationId":"api_v2_karmajeeva_api_v2_karmajeeva_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gulika":{"post":{"summary":"Api V2 Gulika","description":"Gulika (Māndi) — son of Saturn, classical upagraha per Muhurta\nChintamani Ch.25 (Sh.1-4). The day is divided into 8 segments from\nsunrise; Gulika rules a specific segment per weekday. Returns\nGulika's longitude at birth — used in advanced muhurta avoidance.","operationId":"api_v2_gulika_api_v2_gulika_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/muhurta-complete":{"post":{"summary":"Api V2 Muhurta Complete","description":"THE COMPLETE Muhurta Chintamani report — every section of the\ntext (Shubhashubha, Nakshatra, Hora, Gochar, Vivah-doshas, Ashta-\nKoot, Samskara, Yatra) computed for one date+place.\n\nSource: mc_engine_complete.py, Daivagya Ram's Muhurta Chintamani\npp.10-207 (full scan). Returns 11 top-level sections, ready for\nthe design/mc-display-spec.html UI to consume verbatim.","operationId":"api_v2_muhurta_complete_api_v2_muhurta_complete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2MuhurtaCompleteReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/vrat-festivals":{"post":{"summary":"Api V2 Vrat Festivals","description":"Vrats + annual festivals active on the given date.\n\nReturns Ekadashi, Purnima, Amavasya, Pradosham, Chaturthi, Durgashtami,\nShivaratri, Sankashti + annual festivals (Diwali, Holi, Janmashtami,\nNavratri, Ganesh Chaturthi, Ram Navami, Hanuman Jayanti, etc.) + Akshaya\nTritiya override + Chaturmas warning.","operationId":"api_v2_vrat_festivals_api_v2_vrat_festivals_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2DateReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/vedic-clock":{"post":{"summary":"Api V2 Vedic Clock","description":"Convert current time to Vedic units — Ghaṭi : Pal : Vipal,\ncounted from sunrise. 60 Ghaṭi = 1 day, 60 Pal = 1 Ghaṭi,\n60 Vipal = 1 Pal.","operationId":"api_v2_vedic_clock_api_v2_vedic_clock_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2DateReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/do-ghati":{"post":{"summary":"Api V2 Do Ghati","description":"Do Ghaṭi Muhurta — the 96-minute window centred on midday,\nextending Abhijit by 2 Ghaṭi on each side. One of DrikPanchang's\nauspicious-time listings.","operationId":"api_v2_do_ghati_api_v2_do_ghati_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2DateReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mangal-dosha":{"post":{"summary":"Api V2 Mangal Dosha","description":"Mangal Dosha (Manglik) check from a birth chart — checked from\nLagna, Moon, AND Venus. Returns severity + all classical cancellations\n(same-sign, lagna-specific, mutual Mangalik).","operationId":"api_v2_mangal_dosha_api_v2_mangal_dosha_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/sadesati":{"post":{"summary":"Api V2 Sadesati","description":"Śani Sāḍesāti — the 7.5-year Saturn transit phase relative to\njanma rāśi. Saturn in 12th = Rising, 1st = Peak, 2nd = Setting.\nAlso detects Kantaka Śani (transit in 4th/7th/10th).","operationId":"api_v2_sadesati_api_v2_sadesati_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2SadeSatiReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/kalasarpa":{"post":{"summary":"Api V2 Kalasarpa","description":"Kālasarpa Yoga — when all 7 classical planets lie between Rāhu\nand Ketu (same hemisphere). Returns one of the 12 named types\n(Ananta, Kulika, Vāsuki, Śaṅkhapāla, Padma, Mahāpadma, Takṣaka,\nKarkoṭaka, Śaṅkhanāda, Pātāla, Vimśottara/Vimśheśa, Śeṣanāga) OR\npartial / absent + parihaar.","operationId":"api_v2_kalasarpa_api_v2_kalasarpa_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/special-muhurta":{"post":{"summary":"Api V2 Special Muhurta","description":"Special-purchase muhurta quality: vehicle / property / business start.\nReturns shubha / madhyam / ashubha plus reasons for the given date.","operationId":"api_v2_special_muhurta_api_v2_special_muhurta_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2SpecialMuhurtaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/panchaka":{"post":{"summary":"Api V2 Panchaka","description":"Panchaka Rahita check — is today free of Panchaka for the given\nkarma type? Panchaka = Moon in last 5 nakshatras (Dhaniṣṭhā 2nd half +\nŚatabhiṣā + Pūrva Bhadrapadā + Uttara Bhadrapadā + Revatī).","operationId":"api_v2_panchaka_api_v2_panchaka_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2PanchakaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/pancha-pakshi":{"post":{"summary":"Api V2 Pancha Pakshi","description":"Pancha Pakshi day-period bird activity — PARTIAL classical stub.","operationId":"api_v2_pancha_pakshi_api_v2_pancha_pakshi_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2PanchaPakshiReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gochar":{"post":{"summary":"Api V2 Gochar","description":"Gochara — current transit quality relative to your birth Moon\nsign (Janma Rāśi). For each transit planet, returns whether it's\nfavorable or unfavorable from janma rashi per classical houses.","operationId":"api_v2_gochar_api_v2_gochar_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2GocharReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gun-milan":{"post":{"summary":"Api V2 Gun Milan","description":"Ashtakoot 8-kuta matchmaking — the classical Vedic compatibility\nscore for marriage. Computes each partner's Moon nakshatra + Moon\nsign from birth data, then scores the 8 kutas (Varna, Vashya, Tara,\nYoni, Graha Maitri, Gana, Bhakuta, Nadi) per Phaladeepika Ch.10 +\nMuhurta Chintamani. Returns per-kuta scores and total /36.\n\nSource: phaladeepika_maha_engine.compute_gun_milan.","operationId":"api_v2_gun_milan_api_v2_gun_milan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2GunMilanReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/jaimini":{"post":{"summary":"Api V2 Jaimini","description":"Jaimini layer — chara karakas, karakamsha, arudha padas, chara dasha.\nKept separate from Parashari Phaladeepika paths.","operationId":"api_v2_jaimini_api_v2_jaimini_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/varshaphal":{"post":{"summary":"Api V2 Varshaphal","description":"Varshaphal (Tajika) — solar return, muntha, year lord, basic sahams.","operationId":"api_v2_varshaphal_api_v2_varshaphal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2VarshaphalReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/matchmaking":{"post":{"summary":"Api V2 Matchmaking","description":"Full Ashtakoota 36-guna matchmaking with dosha flags and mangal cross-check.\nReturns compatibility bands (not percentages).","operationId":"api_v2_matchmaking_api_v2_matchmaking_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2GunMilanReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/panchang/day":{"post":{"summary":"Api V2 Panchang Day","description":"Unified day panchanga — sunrise/sunset, tithi/karana end-times, prove_refs.","operationId":"api_v2_panchang_day_api_v2_panchang_day_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2PanchangDayReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/panchang/glance":{"get":{"summary":"Api V2 Panchang Glance","description":"Today two-limb pañcāṅga glance — tithi + nakṣatra only (display principle #12).\n\nFull five-limb drill, interpretation, and prove_refs live on POST /api/v2/panchanga\nand the Observatory Panchang tab.","operationId":"api_v2_panchang_glance_api_v2_panchang_glance_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":28.6139,"title":"Lat"}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","default":77.209,"title":"Lon"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/panchanga":{"post":{"summary":"Api V2 Panchanga","description":"Daily Panchang (Drik Ganita / Swiss Ephemeris, Lahiri) — the five limbs\nWITH end-times. For each anga we compute the exact instant it ends (the\n'upto' timestamp) by Newton iteration on live Sun/Moon speeds — the same\nmethod DrikPanchang uses, and the feature whose absence made us 'less than\na panchang'. Returns tithi/nakshatra/yoga/karana/vara + each one's end-time\n+ the next unit it becomes, plus Sun & Moon sidereal positions.\n\nNo birth data needed — this is the daily-panchang page, free.","operationId":"api_v2_panchanga_api_v2_panchanga_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2PanchangaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/vrata/ekadashi":{"post":{"summary":"Api V2 Vrata Ekadashi","description":"Ekadashi nirnaya with predicate trace — Smarta default, Vaishnava opt-in.","operationId":"api_v2_vrata_ekadashi_api_v2_vrata_ekadashi_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2VrataEkadashiReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/vrata/calendar/{year}/{month}":{"post":{"summary":"Api V2 Vrata Calendar Month","description":"Ekadashi nirnaya for all instances in a civil month.","operationId":"api_v2_vrata_calendar_month_api_v2_vrata_calendar__year___month__post","parameters":[{"name":"year","in":"path","required":true,"schema":{"type":"integer","title":"Year"}},{"name":"month","in":"path","required":true,"schema":{"type":"integer","title":"Month"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2VrataCalendarReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/calendar/festivals":{"post":{"summary":"Api V2 Calendar Festivals","description":"Full-month festival + vrata calendar extending ekadashi nirnaya engine.","operationId":"api_v2_calendar_festivals_api_v2_calendar_festivals_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_FestivalCalendarReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ss-panchang":{"post":{"summary":"Api V2 Ss Panchang","description":"Pure Surya Siddhanta panchang — every value computed from the\noriginal ~1500-year-old verses (Burgess translation): ahargana from\nKali Yuga epoch, mean longitudes via the master revolution table,\nmanda + sighra equations, 4-step process for star-planets, Hindu\nsine table interpolation, trepidation ayanamsa, declination, day\nlength by ascensional difference. NO Swiss Ephemeris.\n\nPair with /api/v2/kundli's Swiss positions to reveal the ~24°\naccumulated drift between the classical canon and modern\ncomputation — and to give devotees the authentic SS values their\nsampradāya may prefer.","operationId":"api_v2_ss_panchang_api_v2_ss_panchang_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2SSPanchangReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/personal-calendar":{"post":{"summary":"Api V2 Personal Calendar","description":"Personalised N-day calendar — every day scored shubha / madhyam /\nashubha for the user, combining muhurta_module.score_day (activity\nquality) with get_tarabala (personal nakshatra strength relative to\nbirth). Powers a colour-coded calendar UI.","operationId":"api_v2_personal_calendar_api_v2_personal_calendar_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_V2PersonalCalendarReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/horoscope":{"get":{"summary":"Api Horoscope","operationId":"api_horoscope_api_horoscope_get","parameters":[{"name":"sign","in":"query","required":true,"schema":{"type":"string","title":"Sign"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(daily|weekly|monthly|yearly)$","default":"daily","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/panchang-full":{"get":{"summary":"Api Panchang Full","operationId":"api_panchang_full_api_panchang_full_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"janma_nak","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Janma Nak"}},{"name":"janma_rashi","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Janma Rashi"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/today-panchang":{"get":{"summary":"Api Today Panchang","operationId":"api_today_panchang_api_today_panchang_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":28.6139,"title":"Lat"}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","default":77.209,"title":"Lon"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hora":{"get":{"summary":"Api Hora","operationId":"api_hora_api_hora_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/yearbook/shubh-dates":{"get":{"summary":"Api Yearbook Shubh Dates","description":"Nightly-precomputed 5-year shubh-date lists — written by yearbook_precompute.py\n(hora-yearbook.timer, 03:00 IST). Identical data to /api/v2/muhurta-finder, batched\nahead of time so the year pages answer instantly. Unknown city => pending:true and\nthe frontend falls back to the live finder.","operationId":"api_yearbook_shubh_dates_api_yearbook_shubh_dates_get","parameters":[{"name":"karma","in":"query","required":false,"schema":{"type":"string","default":"vivah","title":"Karma"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","default":"delhi","title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/yearbook/manifest":{"get":{"summary":"Api Yearbook Manifest","description":"When the Nightly Pandit last ran, and what it wrote.","operationId":"api_yearbook_manifest_api_yearbook_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/transit-calendar":{"get":{"summary":"Api Transit Calendar","description":"Dated sidereal sign-ingress windows for the slow grahas (Jupiter, Saturn, Rahu/Ketu)\nover the next N months — including retrograde re-entries, each refined to the day by\nbisection. Sign ingresses are global instants (no lat/lon); the client pairs each\nwindow with the native's own Ashtakavarga bindus. Pure Swiss-Ephemeris scanning.","operationId":"api_transit_calendar_api_transit_calendar_get","parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Months"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/nakshatra-reference":{"get":{"summary":"Api Nakshatra Reference","description":"The 27-nakshatra registry — every attribute from the engine's own tables:\nVimshottari lords, guna-milan gana/nadi/varna/yoni, Naamakshara pada syllables\n(Muhurta Chintamani Samskara Prakarana), the MC Nakshatra Prakarana 7-fold\nactivity classification, and the visha/amrita (tyajya) ghati spans that drive\nthe daily Varjyam. Static classical reference — nothing invented here.","operationId":"api_nakshatra_reference_api_nakshatra_reference_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/choghadiya":{"get":{"summary":"Api Choghadiya","operationId":"api_choghadiya_api_choghadiya_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hindu-calendar":{"get":{"summary":"Api Hindu Calendar","operationId":"api_hindu_calendar_api_hindu_calendar_get","parameters":[{"name":"month","in":"query","required":true,"schema":{"type":"integer","maximum":12,"minimum":1,"title":"Month"}},{"name":"year","in":"query","required":true,"schema":{"type":"integer","maximum":2100,"minimum":1900,"title":"Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/festival-calendar":{"get":{"summary":"Api Festival Calendar","operationId":"api_festival_calendar_api_festival_calendar_get","parameters":[{"name":"month","in":"query","required":true,"schema":{"type":"integer","maximum":12,"minimum":1,"title":"Month"}},{"name":"year","in":"query","required":true,"schema":{"type":"integer","maximum":2100,"minimum":1900,"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":28.6139,"title":"Lat"}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","default":77.209,"title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/moon-calendar":{"get":{"summary":"Api Moon Calendar","operationId":"api_moon_calendar_api_moon_calendar_get","parameters":[{"name":"month","in":"query","required":true,"schema":{"type":"integer","maximum":12,"minimum":1,"title":"Month"}},{"name":"year","in":"query","required":true,"schema":{"type":"integer","maximum":2100,"minimum":1900,"title":"Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rahukaal":{"get":{"summary":"Api Rahukaal","operationId":"api_rahukaal_api_rahukaal_get","parameters":[{"name":"month","in":"query","required":true,"schema":{"type":"integer","title":"Month"}},{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"}},{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bhadra-kaal":{"get":{"summary":"Api Bhadra Kaal","operationId":"api_bhadra_kaal_api_bhadra_kaal_get","parameters":[{"name":"month","in":"query","required":true,"schema":{"type":"integer","title":"Month"}},{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/numerology":{"post":{"summary":"Api Numerology","operationId":"api_numerology_api_numerology_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NumerologyReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kp-chart":{"post":{"summary":"Api Kp Chart","operationId":"api_kp_chart_api_kp_chart_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lal-kitab":{"post":{"summary":"Api Lal Kitab","operationId":"api_lal_kitab_api_lal_kitab_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dosh/mangal":{"post":{"summary":"Api Dosh Mangal","operationId":"api_dosh_mangal_api_dosh_mangal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dosh/kaalsarp":{"post":{"summary":"Api Dosh Kaalsarp","operationId":"api_dosh_kaalsarp_api_dosh_kaalsarp_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/pitra-dosha":{"post":{"summary":"Api V2 Pitra Dosha","description":"360° Pitra Rina/Shapa audit — backend/pitra_dosha_engine.py (LIVE).\n\nFeeds the Janma Kundali Pitra pane and Dosha summary card from one engine.","operationId":"api_v2_pitra_dosha_api_v2_pitra_dosha_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dosh/pitra":{"post":{"summary":"Api Dosh Pitra","operationId":"api_dosh_pitra_api_dosh_pitra_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/yog":{"post":{"summary":"Api Yog","description":"Yoga panel — YogaEngine catalog with strength bands (YOGA_UI_CONTRACT v2).","operationId":"api_yog_api_yog_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dasha/current":{"post":{"summary":"Api Dasha Current","operationId":"api_dasha_current_api_dasha_current_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_DashaCurrentReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dasha/prana":{"post":{"summary":"Api Dasha Prana","operationId":"api_dasha_prana_api_dasha_prana_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_DashaPranaReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dasha/yogini":{"post":{"summary":"Api Dasha Yogini","description":"Yoginī Daśā — the 8-yoginī, 36-year karmic cycle.\n\nStarting yoginī and balance-at-birth are BOTH derived from the Moon's nakṣatra\n(Devī Bhāgavata method, per BPHS), exactly as Vimśottarī derives its balance:\n  • starting yoginī = ((nakṣatra-number + 3) mod 8), counting Aśvinī as 1\n    (remainder 1→Mangalā … 7→Siddhā, 0→Saṅkaṭā);\n  • the first period's balance = its full years × the UN-elapsed fraction of the nakṣatra.\nAntardaśās nest the same 8 yoginīs from the mahā-yoginī, proportional to (mahā×antar)/36.\n(The prior version hard-started every chart at Mangalā and ignored the Moon — so every\nnative got an identical, astrologically-wrong sequence.)","operationId":"api_dasha_yogini_api_dasha_yogini_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dasha/tree":{"post":{"summary":"Api Dasha Tree","description":"Return the full nested Vimshottari dasha tree.\nUsed by the frontend cascade drill-down UI.","operationId":"api_dasha_tree_api_dasha_tree_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/divisional-charts":{"post":{"summary":"Api Divisional Charts","description":"Return all 16 Parashari divisional charts (Shodashvarga) in one response.","operationId":"api_divisional_charts_api_divisional_charts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/divisional/{div_code}":{"post":{"summary":"Api Single Divisional","description":"Return a single divisional chart by code.","operationId":"api_single_divisional_api_divisional__div_code__post","parameters":[{"name":"div_code","in":"path","required":true,"schema":{"type":"string","title":"Div Code"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hit":{"post":{"summary":"Record Visit","description":"Count one page view. ALWAYS 204 — a counter must never surface an error to a reader,\nand a bot, a malformed body or a storage fault are all dropped silently.","operationId":"record_visit_api_hit_post","responses":{"204":{"description":"Successful Response"}}}},"/api/stats":{"get":{"summary":"Visit Stats","description":"Page views and unique visitors per IST day, top pages and referrers, over the window.\nEvery figure carries its window and its n; there is no rate here to inflate.","operationId":"visit_stats_api_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ledger/record":{"post":{"summary":"Api Ledger Record","description":"Record one dated, falsifiable claim at the moment it is published.","operationId":"api_ledger_record_api_v2_ledger_record_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LedgerPredictionReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ledger/outcome":{"post":{"summary":"Api Ledger Outcome","description":"Grade one prediction. A re-grade appends; it never edits the earlier judgement.","operationId":"api_ledger_outcome_api_v2_ledger_outcome_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LedgerOutcomeReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ledger/scan":{"post":{"summary":"Api Ledger Scan","description":"Note the span a native was scanned over — the denominator a hit rate needs.","operationId":"api_ledger_scan_api_v2_ledger_scan_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_LedgerScanReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ledger/pending":{"get":{"summary":"Api Ledger Pending","description":"Windows that have CLOSED and carry no grade — the work list, oldest first.\n\n`limit` was capped at 1000 and the ledger passed that within a day of being seeded;\na caller asking for more got a 422 whose body has no `pending` key, so a tool reading\nit saw an empty list and silently refused every import. Filters were the real fix —\na grading run wants the ~1,300 ranked claims, not the 5,000 flags — and the cap is\nraised so honest pagination is never needed to see one claim type whole.","operationId":"api_ledger_pending_api_v2_ledger_pending_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":100,"title":"Limit"}},{"name":"claim_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Key"}},{"name":"area","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ledger/stats":{"get":{"summary":"Api Ledger Stats","description":"The published figures. Every one carries its n; a thin sample publishes no rate.\n\n`claim_key` matters: a peak-year claim covering 5% of a span and a window flag\ncovering 81% have different base rates and must not share a denominator.","operationId":"api_ledger_stats_api_v2_ledger_stats_get","parameters":[{"name":"area","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"}},{"name":"claim_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/health":{"get":{"summary":"Api History Health","description":"Quick check: is MySQL reachable? Useful for debugging.","operationId":"api_history_health_api_history_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/history/save":{"post":{"summary":"Api History Save","description":"Save a kundli generation to MySQL. Returns the new record id.","operationId":"api_history_save_api_history_save_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistorySaveReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/by-email":{"get":{"summary":"Api History By Email","description":"Fetch saved kundlis for an email (and optional phone). Newest first.","operationId":"api_history_by_email_api_history_by_email_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","minLength":3,"title":"Email"}},{"name":"phone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/{record_id}":{"delete":{"summary":"Api History Delete","description":"Delete a single history record. Requires the email that owns it (light auth).","operationId":"api_history_delete_api_history__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"email","in":"query","required":true,"schema":{"type":"string","minLength":3,"title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/status":{"get":{"tags":["bphs"],"summary":"Status","operationId":"status_api_v2_bphs_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status Api V2 Bphs Status Get"}}}}}}},"/api/v2/bphs/chapters":{"get":{"tags":["bphs"],"summary":"Chapters","operationId":"chapters_api_v2_bphs_chapters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Chapters Api V2 Bphs Chapters Get"}}}}}}},"/api/v2/bphs/chapter/{num}":{"get":{"tags":["bphs"],"summary":"Chapter","operationId":"chapter_api_v2_bphs_chapter__num__get","parameters":[{"name":"num","in":"path","required":true,"schema":{"type":"integer","title":"Num"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chapter Api V2 Bphs Chapter  Num  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/verse/{num}/{label}":{"get":{"tags":["bphs"],"summary":"Verse","operationId":"verse_api_v2_bphs_verse__num___label__get","parameters":[{"name":"num","in":"path","required":true,"schema":{"type":"integer","title":"Num"}},{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verse Api V2 Bphs Verse  Num   Label  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/search":{"get":{"tags":["bphs"],"summary":"Search","operationId":"search_api_v2_bphs_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Api V2 Bphs Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/dasha-phala":{"get":{"tags":["bphs"],"summary":"Dasha Phala","description":"Parāśara's own phala verses for a daśā period combination.\n\nlevel=antar: maha=mahādaśā lord, antar=antardaśā lord (BPHS chapters 53-61).\nDeeper levels key on (parent period lord, inner period lord) — chapters 62-64.","operationId":"dasha_phala_api_v2_bphs_dasha_phala_get","parameters":[{"name":"maha","in":"query","required":true,"schema":{"type":"string","description":"mahādaśā lord (for level=antar this is the outer period)","title":"Maha"},"description":"mahādaśā lord (for level=antar this is the outer period)"},{"name":"antar","in":"query","required":true,"schema":{"type":"string","description":"the inner period lord","title":"Antar"},"description":"the inner period lord"},{"name":"level","in":"query","required":false,"schema":{"type":"string","pattern":"^(antar|pratyantar|sukshma|prana)$","default":"antar","title":"Level"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dasha Phala Api V2 Bphs Dasha Phala Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/bhava-phala":{"get":{"tags":["bphs"],"summary":"Bhava Phala","description":"BPHS ch25: Parāśara's ruling for 'lord of house X placed in house Y' — all 144 combos.","operationId":"bhava_phala_api_v2_bphs_bhava_phala_get","parameters":[{"name":"lord_of","in":"query","required":true,"schema":{"type":"integer","maximum":12,"minimum":1,"description":"the house whose lord","title":"Lord Of"},"description":"the house whose lord"},{"name":"in_house","in":"query","required":true,"schema":{"type":"integer","maximum":12,"minimum":1,"description":"the house that lord occupies","title":"In House"},"description":"the house that lord occupies"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bhava Phala Api V2 Bphs Bhava Phala Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/bhava-phala/all":{"get":{"tags":["bphs"],"summary":"Bhava Phala All","description":"The whole 12×12 grid in one call, verses only — the client joins per chart.","operationId":"bhava_phala_all_api_v2_bphs_bhava_phala_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Bhava Phala All Api V2 Bphs Bhava Phala All Get"}}}}}}},"/api/v2/bphs/bhava-chapters":{"get":{"tags":["bphs"],"summary":"Bhava Chapters","description":"BPHS 12-24 — significations (12) plus the results of each bhāva (13-24).","operationId":"bhava_chapters_api_v2_bphs_bhava_chapters_get","parameters":[{"name":"houses","in":"query","required":false,"schema":{"type":"string","description":"optional CSV of houses 1-12 to limit the payload","default":"","title":"Houses"},"description":"optional CSV of houses 1-12 to limit the payload"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bhava Chapters Api V2 Bphs Bhava Chapters Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/chapters-full":{"get":{"tags":["bphs"],"summary":"Chapters Full","description":"Several whole adhyāyas in one call — for the report's closing apparatus.\n\n§19 prints, in full, every chapter the reader's own report actually cites. That set is\nSELF-SELECTING — it comes from the citations the engines emitted for this chart — which\nis what keeps it from being padding: nothing is included because it would add pages,\nonly because the report already leaned on it. The result is a closed document: every\ncitation it makes can be checked inside its own covers, without leaving the page.","operationId":"chapters_full_api_v2_bphs_chapters_full_get","parameters":[{"name":"nums","in":"query","required":true,"schema":{"type":"string","description":"CSV of adhyāya numbers, e.g. 7,26,30,33","title":"Nums"},"description":"CSV of adhyāya numbers, e.g. 7,26,30,33"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":40,"minimum":1,"default":24,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chapters Full Api V2 Bphs Chapters Full Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/mahapurusha":{"get":{"tags":["bphs"],"summary":"Mahapurusha","description":"BPHS ch75: the pañca-mahāpuruṣa formation rule and each yoga's lakṣaṇa/phala verses.","operationId":"mahapurusha_api_v2_bphs_mahapurusha_get","parameters":[{"name":"yoga","in":"query","required":false,"schema":{"type":"string","description":"Ruchaka/Bhadra/Hamsa/Malavya/Sasa, empty = formation rule","default":"","title":"Yoga"},"description":"Ruchaka/Bhadra/Hamsa/Malavya/Sasa, empty = formation rule"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mahapurusha Api V2 Bphs Mahapurusha Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/janma-dosha":{"get":{"tags":["bphs"],"summary":"Janma Dosha","description":"Evaluate the BPHS janma-doṣa conditions (chapters 86-97) against the birth pañcāṅga.\n\nConditions the caller's data cannot decide are returned status \"context\" (eclipse,\nsaṁkrānti, sibling-order) or \"possible\" (abhukta-mūla, which turns on the exact\nghaṭīs) — never silently asserted. The śānti verses ride along either way.","operationId":"janma_dosha_api_v2_bphs_janma_dosha_get","parameters":[{"name":"tithi","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tithi"}},{"name":"karana","in":"query","required":false,"schema":{"type":"string","default":"","title":"Karana"}},{"name":"nakshatra","in":"query","required":false,"schema":{"type":"string","default":"","title":"Nakshatra"}},{"name":"pada","in":"query","required":false,"schema":{"type":"integer","maximum":4,"minimum":0,"default":0,"title":"Pada"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Janma Dosha Api V2 Bphs Janma Dosha Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bphs/karakamsha":{"get":{"tags":["bphs"],"summary":"Karakamsha","description":"BPHS ch34: the ruling for the ātmakāraka in each navāṃśa sign (kārakāṃśa).","operationId":"karakamsha_api_v2_bphs_karakamsha_get","parameters":[{"name":"sign","in":"query","required":true,"schema":{"type":"string","description":"the ātmakāraka's navāṃśa sign, e.g. Libra","title":"Sign"},"description":"the ātmakāraka's navāṃśa sign, e.g. Libra"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Karakamsha Api V2 Bphs Karakamsha Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ChartSaveReq":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"type":"string","title":"Name","default":""},"birth":{"additionalProperties":true,"type":"object","title":"Birth"},"chart":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chart"},"set_active":{"type":"boolean","title":"Set Active","default":false}},"type":"object","required":["birth"],"title":"ChartSaveReq"},"DeleteReq":{"properties":{"confirm":{"type":"string","title":"Confirm","default":""}},"type":"object","title":"DeleteReq"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HistorySaveReq":{"properties":{"email":{"type":"string","title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"name":{"type":"string","title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender","default":"Male"},"birth_date":{"type":"string","title":"Birth Date"},"birth_time":{"type":"string","title":"Birth Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"place_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place Name"},"birth_data_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Data Json"}},"type":"object","required":["email","name","birth_date","birth_time","latitude","longitude"],"title":"HistorySaveReq"},"JyotishiReq":{"properties":{"question":{"type":"string","title":"Question"},"history":{"items":{"$ref":"#/components/schemas/_JyotishiTurn"},"type":"array","title":"History","default":[]},"use_vault":{"type":"boolean","title":"Use Vault","default":false},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"}},"type":"object","required":["question"],"title":"JyotishiReq"},"KundliReq":{"properties":{"name":{"type":"string","title":"Name","default":"Astromata User"},"gender":{"type":"string","title":"Gender","default":"Male"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},"type":"object","required":["date","time","latitude","longitude"],"title":"KundliReq"},"LoginReq":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginReq"},"MatchPartner":{"properties":{"name":{"type":"string","title":"Name","default":""},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"place":{"type":"string","title":"Place","default":""},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"}},"type":"object","required":["date","time","latitude","longitude"],"title":"MatchPartner"},"MatchReq":{"properties":{"boy":{"$ref":"#/components/schemas/MatchPartner"},"girl":{"$ref":"#/components/schemas/MatchPartner"}},"type":"object","required":["boy","girl"],"title":"MatchReq"},"MemoryEventPatchReq":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"dasha_snapshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dasha Snapshot"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","title":"MemoryEventPatchReq"},"MemoryEventReq":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"event_date":{"type":"string","title":"Event Date"},"category":{"type":"string","title":"Category","default":"general"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"dasha_snapshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dasha Snapshot"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["title","event_date"],"title":"MemoryEventReq"},"NotificationPrefsReq":{"properties":{"daily_gates_email":{"type":"boolean","title":"Daily Gates Email"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"place_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place Label"}},"type":"object","required":["daily_gates_email"],"title":"NotificationPrefsReq"},"NumerologyReq":{"properties":{"first_name":{"type":"string","title":"First Name"},"middle_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Middle Name","default":""},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","default":""},"day":{"type":"integer","title":"Day"},"month":{"type":"integer","title":"Month"},"year":{"type":"integer","title":"Year"},"hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hour","default":12},"minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Minute","default":0}},"type":"object","required":["first_name","day","month","year"],"title":"NumerologyReq"},"ProfileReq":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"dob":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dob"},"birth_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Time"},"birth_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Place"},"birth_lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Birth Lat"},"birth_lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Birth Lon"},"marital_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Marital Status"},"whatsapp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp"},"birth_time_known":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Birth Time Known"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"theme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme"},"place_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place Label"},"place_lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Place Lat"},"place_lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Place Lon"},"place_tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place Tz"}},"type":"object","title":"ProfileReq"},"RegisterReq":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","minLength":8,"title":"Password"}},"type":"object","required":["email","password"],"title":"RegisterReq"},"RequestOtpReq":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"RequestOtpReq"},"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"},"VerifyOtpReq":{"properties":{"email":{"type":"string","title":"Email"},"code":{"type":"string","maxLength":6,"minLength":6,"title":"Code"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"dob":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dob"},"birth_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Time"},"birth_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Place"},"birth_lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Birth Lat"},"birth_lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Birth Lon"},"marital_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Marital Status"},"whatsapp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp"},"birth_time_known":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Birth Time Known"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"theme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme"},"consent":{"type":"boolean","title":"Consent","default":false},"consent_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consent Version"}},"type":"object","required":["email","code"],"title":"VerifyOtpReq"},"_AngaMirrorReq":{"properties":{"marks":{"items":{"type":"string"},"type":"array","title":"Marks","default":[]},"gender":{"type":"string","title":"Gender","default":""}},"type":"object","title":"_AngaMirrorReq"},"_BillingCheckoutReq":{"properties":{"plan":{"type":"string","title":"Plan","default":"monthly"},"success_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Url"},"cancel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Url"},"customer_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Email"}},"type":"object","title":"_BillingCheckoutReq","description":"Body for POST /api/v2/billing/checkout — Stripe checkout stub."},"_BodyMarksReq":{"properties":{"name":{"type":"string","title":"Name","default":"Native"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"}},"type":"object","required":["date","time","latitude","longitude"],"title":"_BodyMarksReq"},"_ChartRectificationReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"12:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"time_uncertainty_minutes":{"type":"integer","title":"Time Uncertainty Minutes","default":30},"life_events":{"items":{"$ref":"#/components/schemas/_LifeEventReq"},"type":"array","title":"Life Events","default":[]},"name":{"type":"string","title":"Name","default":"Native"}},"type":"object","required":["date","latitude","longitude"],"title":"_ChartRectificationReq"},"_ConceptionMuhurtaReq":{"properties":{"male_name":{"type":"string","title":"Male Name","default":"Male"},"male_date":{"type":"string","title":"Male Date"},"male_time":{"type":"string","title":"Male Time"},"male_latitude":{"type":"number","title":"Male Latitude"},"male_longitude":{"type":"number","title":"Male Longitude"},"female_name":{"type":"string","title":"Female Name","default":"Female"},"female_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Female Date"},"female_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Female Time"},"female_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Female Latitude"},"female_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Female Longitude"},"scan_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scan Date"},"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"}},"type":"object","required":["male_date","male_time","male_latitude","male_longitude"],"title":"_ConceptionMuhurtaReq"},"_DashaCurrentReq":{"properties":{"name":{"type":"string","title":"Name","default":"Astromata User"},"gender":{"type":"string","title":"Gender","default":"Male"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"as_of_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of Date"}},"type":"object","required":["date","time","latitude","longitude"],"title":"_DashaCurrentReq"},"_DashaPranaReq":{"properties":{"name":{"type":"string","title":"Name","default":"Astromata User"},"gender":{"type":"string","title":"Gender","default":"Male"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"as_of_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of Date"}},"type":"object","required":["date","time","latitude","longitude"],"title":"_DashaPranaReq"},"_FamilyMember":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":"Member"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","default":"member"}},"type":"object","required":["date","time","latitude","longitude"],"title":"_FamilyMember"},"_FamilyMuhurtaReq":{"properties":{"members":{"items":{"$ref":"#/components/schemas/_FamilyMember"},"type":"array","title":"Members"},"activity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity","default":"general"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days","default":30}},"type":"object","required":["members"],"title":"_FamilyMuhurtaReq"},"_FestivalCalendarReq":{"properties":{"year":{"type":"integer","title":"Year"},"month":{"type":"integer","title":"Month"},"latitude":{"type":"number","title":"Latitude","default":28.6139},"longitude":{"type":"number","title":"Longitude","default":77.209},"tradition":{"type":"string","title":"Tradition","default":"smarta"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"}},"type":"object","required":["year","month"],"title":"_FestivalCalendarReq"},"_JyotishiChatReq":{"properties":{"question":{"type":"string","title":"Question"},"history":{"items":{"$ref":"#/components/schemas/_JyotishiTurn"},"type":"array","title":"History","default":[]},"use_vault":{"type":"boolean","title":"Use Vault","default":false},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"cite_library":{"type":"boolean","title":"Cite Library","default":true},"rag_limit":{"type":"integer","title":"Rag Limit","default":3}},"type":"object","required":["question"],"title":"_JyotishiChatReq","description":"Extended chat body — same as JyotishiReq; cite RAG prove_refs when enabled."},"_JyotishiTurn":{"properties":{"role":{"type":"string","title":"Role","default":"user"},"content":{"type":"string","title":"Content","default":""}},"type":"object","title":"_JyotishiTurn"},"_KeyRegisterReq":{"properties":{"email":{"type":"string","title":"Email"},"app_name":{"type":"string","title":"App Name","default":""}},"type":"object","required":["email"],"title":"_KeyRegisterReq"},"_KootaExtendedReq":{"properties":{"bride":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"groom":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"love_marriage":{"type":"boolean","title":"Love Marriage","default":false}},"type":"object","required":["bride","groom"],"title":"_KootaExtendedReq"},"_LedgerOutcomeReq":{"properties":{"prediction_id":{"type":"string","title":"Prediction Id"},"verdict":{"type":"string","title":"Verdict"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"graded_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Graded By"}},"type":"object","required":["prediction_id","verdict"],"title":"_LedgerOutcomeReq"},"_LedgerPredictionReq":{"properties":{"subject_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Ref"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"area":{"type":"string","title":"Area"},"claim":{"type":"string","title":"Claim"},"claim_key":{"type":"string","title":"Claim Key"},"window_start":{"type":"string","title":"Window Start"},"window_end":{"type":"string","title":"Window End"},"basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis"},"engine":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Engine"}},"type":"object","required":["date","time","latitude","longitude","area","claim","claim_key","window_start","window_end"],"title":"_LedgerPredictionReq"},"_LedgerScanReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"area":{"type":"string","title":"Area"},"year_from":{"type":"integer","title":"Year From"},"year_to":{"type":"integer","title":"Year To"}},"type":"object","required":["date","time","latitude","longitude","area","year_from","year_to"],"title":"_LedgerScanReq"},"_LifeAreaReportReq":{"properties":{"native":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"male":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"chart":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chart"},"mode":{"type":"string","title":"Mode","default":"single"},"phase":{"type":"string","title":"Phase","default":"1"},"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"},"include_timing_scan":{"type":"boolean","title":"Include Timing Scan","default":true}},"type":"object","title":"_LifeAreaReportReq","description":"Body for POST /api/v2/career-report and POST /api/v2/area/{id}."},"_LifeEventReq":{"properties":{"year":{"type":"integer","title":"Year"},"month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"},"event_type":{"type":"string","title":"Event Type","default":"other"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"event":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event"}},"type":"object","required":["year"],"title":"_LifeEventReq"},"_MarksMirrorReq":{"properties":{"marks":{"items":{"type":"string"},"type":"array","title":"Marks","default":[]},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender","default":""}},"type":"object","title":"_MarksMirrorReq","description":"No birth data. Deliberately — this endpoint takes only what the reader tells us."},"_MarriageClassicalAuditReq":{"properties":{"bride":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"groom":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"muhurta_date":{"type":"string","title":"Muhurta Date"},"muhurta_time":{"type":"string","title":"Muhurta Time","default":"06:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"love_marriage":{"type":"boolean","title":"Love Marriage","default":false}},"type":"object","required":["bride","groom","muhurta_date","latitude","longitude"],"title":"_MarriageClassicalAuditReq"},"_MarriageMuhurtaReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"06:00"},"latitude":{"type":"number","title":"Latitude","default":28.6139},"longitude":{"type":"number","title":"Longitude","default":77.209},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"}},"type":"object","required":["date"],"title":"_MarriageMuhurtaReq"},"_MarriagePartnerReq":{"properties":{"name":{"type":"string","title":"Name","default":"partner"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"10:20"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"}},"type":"object","required":["date","latitude","longitude"],"title":"_MarriagePartnerReq"},"_MarriageReportReq":{"properties":{"native":{"$ref":"#/components/schemas/_ProgenyPersonReq"},"partner":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"male":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"female":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"},"mode":{"type":"string","title":"Mode","default":"single"},"evaluation":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyEvaluationReq"},{"type":"null"}]}},"type":"object","required":["native"],"title":"_MarriageReportReq","description":"Body for POST /api/v2/marriage-report (Activation Hub marriage shape)."},"_MarriageStudyReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place"},"timezone":{"type":"string","title":"Timezone","default":"Asia/Kolkata"},"time_source":{"type":"string","title":"Time Source"},"married":{"type":"string","title":"Married"},"marriage_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Marriage Year"},"sex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sex"},"consent":{"type":"boolean","title":"Consent","default":false}},"type":"object","required":["date","time","latitude","longitude","time_source","married"],"title":"_MarriageStudyReq"},"_MarriageTimingMatrixReq":{"properties":{"person":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"transit_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transit Date"}},"type":"object","required":["person"],"title":"_MarriageTimingMatrixReq"},"_MarriageTimingMatrixUIReq":{"properties":{"bride":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"groom":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"evaluation_window_years":{"type":"integer","title":"Evaluation Window Years","default":5}},"type":"object","required":["bride","groom"],"title":"_MarriageTimingMatrixUIReq"},"_MatchBatchReq":{"properties":{"proband":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"proband_role":{"type":"string","title":"Proband Role","default":"groom"},"candidates":{"items":{"$ref":"#/components/schemas/_MarriagePartnerReq"},"type":"array","title":"Candidates"},"system":{"type":"string","title":"System","default":"ashtakoota"}},"type":"object","required":["proband","candidates"],"title":"_MatchBatchReq"},"_MuhurtaIntelligenceReq":{"properties":{"event_type":{"type":"string","title":"Event Type"},"users":{"items":{"$ref":"#/components/schemas/_MuhurtaIntelligenceUser"},"type":"array","title":"Users"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"max_results":{"type":"integer","title":"Max Results","default":3}},"type":"object","required":["event_type","users","latitude","longitude","start_date","end_date"],"title":"_MuhurtaIntelligenceReq"},"_MuhurtaIntelligenceUser":{"properties":{"name":{"type":"string","title":"Name","default":"user"},"birth_date":{"type":"string","title":"Birth Date"},"birth_time":{"type":"string","title":"Birth Time","default":"06:00"},"birth_latitude":{"type":"number","title":"Birth Latitude"},"birth_longitude":{"type":"number","title":"Birth Longitude"}},"type":"object","required":["birth_date","birth_latitude","birth_longitude"],"title":"_MuhurtaIntelligenceUser"},"_OracleAnswerReq":{"properties":{"question_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Id"},"question_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Text"},"name":{"type":"string","title":"Name","default":"Native"},"gender":{"type":"string","title":"Gender","default":"Male"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"time":{"type":"string","title":"Time","default":"10:00"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"age":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Age"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"locale":{"type":"string","title":"Locale","default":"en"},"time_uncertainty_minutes":{"type":"integer","title":"Time Uncertainty Minutes","default":30},"life_events":{"anyOf":[{"items":{"$ref":"#/components/schemas/_LifeEventReq"},"type":"array"},{"type":"null"}],"title":"Life Events"},"partner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner Name"},"partner_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner Date"},"partner_time":{"type":"string","title":"Partner Time","default":"12:00"},"partner_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Partner Latitude"},"partner_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Partner Longitude"}},"type":"object","title":"_OracleAnswerReq","description":"Body for POST /api/v2/oracle/answer — common-question oracle (IntentHandler increment)."},"_PastCheckReq":{"properties":{"rule_id":{"type":"string","title":"Rule Id"},"verdict":{"type":"string","title":"Verdict"},"family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family","default":""}},"type":"object","required":["rule_id","verdict"],"title":"_PastCheckReq"},"_PastReadingReq":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":""},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"},"include_private":{"type":"boolean","title":"Include Private","default":false}},"type":"object","required":["date","time","latitude","longitude"],"title":"_PastReadingReq"},"_PrasnaLostObjectReq":{"properties":{"query_time":{"type":"string","title":"Query Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"object_class":{"type":"string","title":"Object Class","default":"movable"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"}},"type":"object","required":["query_time","latitude","longitude"],"title":"_PrasnaLostObjectReq"},"_PrasnaMarriageReq":{"properties":{"query_time":{"type":"string","title":"Query Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"moon_phase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Moon Phase"},"querist_omen_touch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Querist Omen Touch"}},"type":"object","required":["query_time","latitude","longitude"],"title":"_PrasnaMarriageReq"},"_ProgenyEvaluationReq":{"properties":{"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"},"transit_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transit Date"},"include_timing_scan":{"type":"boolean","title":"Include Timing Scan","default":true}},"type":"object","title":"_ProgenyEvaluationReq"},"_ProgenyPersonReq":{"properties":{"name":{"type":"string","title":"Name","default":"native"},"gender":{"type":"string","title":"Gender","default":"Male"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"10:20"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"}},"type":"object","required":["date","latitude","longitude"],"title":"_ProgenyPersonReq"},"_ProgenyReportReq":{"properties":{"male":{"$ref":"#/components/schemas/_ProgenyPersonReq"},"female":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"},"mode":{"type":"string","title":"Mode","default":"single"},"evaluation":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyEvaluationReq"},{"type":"null"}]}},"type":"object","required":["male"],"title":"_ProgenyReportReq","description":"Body for POST /api/v2/progeny-report (Draft-A shape).\n`male` (required) + `female` (optional) carry KundliReq-style birth fields."},"_ReportGenerateReq":{"properties":{"native":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"male":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"female":{"anyOf":[{"$ref":"#/components/schemas/_ProgenyPersonReq"},{"type":"null"}]},"chart":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chart"},"format":{"type":"string","title":"Format","default":"html"},"report_type":{"type":"string","title":"Report Type","default":"full"},"depth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Depth"},"consult_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consult Note"},"subject_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Ref"},"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"},"brand_footer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Footer"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"}},"type":"object","title":"_ReportGenerateReq","description":"Body for POST /api/v2/report/generate — printable HTML / PDF reports."},"_TravelMuhurtaReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"06:00"},"latitude":{"type":"number","title":"Latitude","default":28.6139},"longitude":{"type":"number","title":"Longitude","default":77.209},"direction":{"type":"string","title":"Direction","default":"North"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"}},"type":"object","required":["date"],"title":"_TravelMuhurtaReq"},"_V2DateReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"12:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"}},"type":"object","required":["date","latitude","longitude"],"title":"_V2DateReq"},"_V2GocharReq":{"properties":{"birth_date":{"type":"string","title":"Birth Date"},"birth_time":{"type":"string","title":"Birth Time"},"birth_latitude":{"type":"number","title":"Birth Latitude"},"birth_longitude":{"type":"number","title":"Birth Longitude"},"transit_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transit Date"},"transit_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transit Time"},"transit_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Transit Latitude"},"transit_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Transit Longitude"}},"type":"object","required":["birth_date","birth_time","birth_latitude","birth_longitude"],"title":"_V2GocharReq"},"_V2GunMilanReq":{"properties":{"boy_name":{"type":"string","title":"Boy Name","default":"Boy"},"boy_date":{"type":"string","title":"Boy Date"},"boy_time":{"type":"string","title":"Boy Time"},"boy_latitude":{"type":"number","title":"Boy Latitude"},"boy_longitude":{"type":"number","title":"Boy Longitude"},"girl_name":{"type":"string","title":"Girl Name","default":"Girl"},"girl_date":{"type":"string","title":"Girl Date"},"girl_time":{"type":"string","title":"Girl Time"},"girl_latitude":{"type":"number","title":"Girl Latitude"},"girl_longitude":{"type":"number","title":"Girl Longitude"}},"type":"object","required":["boy_date","boy_time","boy_latitude","boy_longitude","girl_date","girl_time","girl_latitude","girl_longitude"],"title":"_V2GunMilanReq"},"_V2MuhurtaCompleteReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"12:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"lunar_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lunar Month"},"activity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity"},"karma":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Karma"}},"type":"object","required":["date","latitude","longitude"],"title":"_V2MuhurtaCompleteReq"},"_V2MuhurtaFinderReq":{"properties":{"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"karma":{"type":"string","title":"Karma","default":"general"},"days_ahead":{"type":"integer","title":"Days Ahead","default":30},"only_shubha":{"type":"boolean","title":"Only Shubha","default":true},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},"type":"object","required":["latitude","longitude"],"title":"_V2MuhurtaFinderReq"},"_V2PanchaPakshiReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"12:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"birth_nakshatra_idx":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Birth Nakshatra Idx"},"birth_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Date"},"birth_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Time"},"birth_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Birth Latitude"},"birth_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Birth Longitude"}},"type":"object","required":["date","latitude","longitude"],"title":"_V2PanchaPakshiReq"},"_V2PanchakaReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"12:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"karma":{"type":"string","title":"Karma","default":"general"}},"type":"object","required":["date","latitude","longitude"],"title":"_V2PanchakaReq"},"_V2PanchangDayReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"06:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"}},"type":"object","required":["date","latitude","longitude"],"title":"_V2PanchangDayReq","description":"KundliReq-style body for unified day panchanga."},"_V2PanchangaReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"06:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"}},"type":"object","required":["date","latitude","longitude"],"title":"_V2PanchangaReq"},"_V2PersonalCalendarReq":{"properties":{"birth_date":{"type":"string","title":"Birth Date"},"birth_time":{"type":"string","title":"Birth Time"},"birth_latitude":{"type":"number","title":"Birth Latitude"},"birth_longitude":{"type":"number","title":"Birth Longitude"},"current_latitude":{"type":"number","title":"Current Latitude"},"current_longitude":{"type":"number","title":"Current Longitude"},"karma":{"type":"string","title":"Karma","default":"general"},"days_ahead":{"type":"integer","title":"Days Ahead","default":30},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},"type":"object","required":["birth_date","birth_time","birth_latitude","birth_longitude","current_latitude","current_longitude"],"title":"_V2PersonalCalendarReq"},"_V2SSPanchangReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"06:00"},"latitude":{"type":"number","title":"Latitude","default":23.18},"longitude":{"type":"number","title":"Longitude","default":75.77}},"type":"object","required":["date"],"title":"_V2SSPanchangReq"},"_V2SadeSatiReq":{"properties":{"birth_date":{"type":"string","title":"Birth Date"},"birth_time":{"type":"string","title":"Birth Time"},"birth_latitude":{"type":"number","title":"Birth Latitude"},"birth_longitude":{"type":"number","title":"Birth Longitude"},"transit_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transit Date"},"transit_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transit Time","default":"12:00"}},"type":"object","required":["birth_date","birth_time","birth_latitude","birth_longitude"],"title":"_V2SadeSatiReq"},"_V2SpecialMuhurtaReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"12:00"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"type":{"type":"string","title":"Type","default":"vehicle"}},"type":"object","required":["date","latitude","longitude"],"title":"_V2SpecialMuhurtaReq"},"_V2TarabalaReq":{"properties":{"birth_nakshatra_idx":{"type":"integer","title":"Birth Nakshatra Idx"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"target_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Date"}},"type":"object","required":["birth_nakshatra_idx","latitude","longitude"],"title":"_V2TarabalaReq"},"_V2VarshaphalReq":{"properties":{"name":{"type":"string","title":"Name","default":"Astromata User"},"gender":{"type":"string","title":"Gender","default":"Male"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"varsha_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Varsha Year"}},"type":"object","required":["date","time","latitude","longitude"],"title":"_V2VarshaphalReq"},"_V2VrataCalendarReq":{"properties":{"latitude":{"type":"number","title":"Latitude","default":28.6139},"longitude":{"type":"number","title":"Longitude","default":77.209},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"},"tradition":{"type":"string","title":"Tradition","default":"smarta"},"region":{"type":"string","title":"Region","default":"north"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},"type":"object","title":"_V2VrataCalendarReq"},"_V2VrataEkadashiReq":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time","default":"06:00"},"latitude":{"type":"number","title":"Latitude","default":28.6139},"longitude":{"type":"number","title":"Longitude","default":77.209},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"},"tradition":{"type":"string","title":"Tradition","default":"smarta"},"region":{"type":"string","title":"Region","default":"north"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},"type":"object","required":["date"],"title":"_V2VrataEkadashiReq","description":"KundliReq-style body for Ekadashi nirnaya (single date or range)."}}}}