{"openapi":"3.1.0","info":{"title":"BDA Jyotish + Panchang Service — panchang domain","description":"Swiss-Ephemeris-backed Panchang and Jyotish computation. Every response carries a methodology fingerprint. Public unauthenticated access is for low-volume evaluation; commercial, high-volume, and reseller API access requires a written agreement. Response-level license and provenance metadata remain authoritative. Source: Bharat Dharma Academy (https://www.bda.ai).","contact":{"name":"Bharat Dharma Academy API enquiries","url":"https://www.bda.ai/contact-us"},"license":{"name":"CC-BY-SA-4.0 where identified in response metadata","url":"https://creativecommons.org/licenses/by-sa/4.0/"},"version":"0.1.0"},"paths":{"/panchang":{"get":{"summary":"Panchang Root","description":"Alias for /shell — same UI, easier URL.","operationId":"panchang_root_panchang_get","parameters":[{"name":"variant","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variant"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang-prototype":{"get":{"summary":"Panchang Prototype","description":"Dark Panchang candidate built from the approved prototypes.","operationId":"panchang_prototype_panchang_prototype_get","parameters":[{"name":"variant","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variant"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/daily":{"get":{"summary":"Panchang Daily","description":"Full daily Panchang for a city × date × profile.\n\nReturns sunrise/sunset/moonrise/moonset, tithi, nakshatra, yoga, karana,\npaksha, lunar month, samvats, moonsign/sunsign, auspicious +\ninauspicious windows, Choghadiya, and methodology fingerprint.\n\nThe response is gzip-negotiated via the audited\n``_json_response_maybe_gzip`` helper (compressed only when the client sends\n``Accept-Encoding: gzip`` and the body clears the size threshold);\ndecompressed it is byte-identical to the plain JSON dict. The compute lives\nin ``_panchang_daily_dict`` so the internal ``/panchang/choghadiya`` caller\ngets the plain dict, unaffected by the route's transport encoding.","operationId":"panchang_daily_panchang_daily_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude in decimal degrees","title":"Lat"},"description":"Latitude in decimal degrees"},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude in decimal degrees","title":"Lng"},"description":"Longitude in decimal degrees"},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date for the Panchang day (YYYY-MM-DD)","title":"Date"},"description":"Local date for the Panchang day (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone (auto-resolved from lat/lng if omitted)","title":"Tz"},"description":"IANA timezone (auto-resolved from lat/lng if omitted)"},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","description":"Observer elevation in meters","default":0.0,"title":"Elevation M"},"description":"Observer elevation in meters"},{"name":"profile","in":"query","required":false,"schema":{"type":"string","description":"Regional profile","default":"north_india_purnimanta","title":"Profile"},"description":"Regional profile"},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","description":"Sidereal ayanamsa: lahiri|raman|krishnamurti|true_chitra","default":"lahiri","title":"Ayanamsa"},"description":"Sidereal ayanamsa: lahiri|raman|krishnamurti|true_chitra"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/tithis":{"get":{"summary":"Panchang Tithi Catalog","description":"Canonical 30-Tithi catalog for API, SEO and external-agent reuse.","operationId":"panchang_tithi_catalog_panchang_tithis_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/panchang/tithi/{tithi_slug}":{"get":{"summary":"Panchang Tithi Calendar","description":"Annual astronomical start/end spans for one Tithi.\n\nCoordinates are mandatory so this public contract never silently assumes a\nuser's location. The result is factual Moon-Sun elongation timing only; it\ndoes not select a festival, Vrat, Parana or Muhurta observance date.","operationId":"panchang_tithi_calendar_panchang_tithi__tithi_slug__get","parameters":[{"name":"tithi_slug","in":"path","required":true,"schema":{"type":"string","title":"Tithi Slug"}},{"name":"year","in":"query","required":true,"schema":{"type":"integer","maximum":2100,"minimum":1900,"title":"Year"}},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude in decimal degrees","title":"Lat"},"description":"Latitude in decimal degrees"},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude in decimal degrees","title":"Lng"},"description":"Longitude in decimal degrees"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone hint; coordinates remain authoritative","title":"Tz"},"description":"Timezone hint; coordinates remain authoritative"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/details":{"get":{"summary":"Panchang Details","description":"Lazy deep-detail projection of the canonical daily Panchang packet.","operationId":"panchang_details_panchang_details_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude in decimal degrees","title":"Lat"},"description":"Latitude in decimal degrees"},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude in decimal degrees","title":"Lng"},"description":"Longitude in decimal degrees"},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local Panchang date (YYYY-MM-DD)","title":"Date"},"description":"Local Panchang date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone hint; coordinates remain authoritative","title":"Tz"},"description":"Timezone hint; coordinates remain authoritative"},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Elevation M"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/comments":{"get":{"summary":"Panchang Comments","description":"Public read contract: approved positive comments only.","operationId":"panchang_comments_panchang_comments_get","parameters":[{"name":"page_key","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":180,"title":"Page Key"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Panchang Comment Submit","description":"AI-moderate first; publish only high-confidence positive feedback.","operationId":"panchang_comment_submit_panchang_comments_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PanchangCommentRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/utility":{"get":{"summary":"Panchang Utility","description":"Daily utility pack exposing already-implemented Panchang/Jyotish lanes.\n\nThis is the endpoint-strategy v1 contract from the research report: no new\nmath, no Supabase/Qdrant reads, one stable API shape for dashboard, Ask Maa\nKali, emails, MCP/AI consumption, and future atomized endpoints. Heavy scans\nstay opt-in so the default remains safe for public and crawler traffic.","operationId":"panchang_utility_panchang_utility_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude in decimal degrees","title":"Lat"},"description":"Latitude in decimal degrees"},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude in decimal degrees","title":"Lng"},"description":"Longitude in decimal degrees"},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date for the utility pack (YYYY-MM-DD)","title":"Date"},"description":"Local date for the utility pack (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone (auto-resolved from lat/lng if omitted)","title":"Tz"},"description":"IANA timezone (auto-resolved from lat/lng if omitted)"},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","description":"Observer elevation in meters","default":0.0,"title":"Elevation M"},"description":"Observer elevation in meters"},{"name":"profile","in":"query","required":false,"schema":{"type":"string","description":"Regional Panchang profile","default":"north_india_purnimanta","title":"Profile"},"description":"Regional Panchang profile"},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","description":"Sidereal ayanamsa: lahiri|raman|krishnamurti|true_chitra","default":"lahiri","title":"Ayanamsa"},"description":"Sidereal ayanamsa: lahiri|raman|krishnamurti|true_chitra"},{"name":"natal_moon_rashi_idx","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":11,"minimum":0},{"type":"null"}],"description":"0-based natal Moon rashi index for personal Chandrabalam","title":"Natal Moon Rashi Idx"},"description":"0-based natal Moon rashi index for personal Chandrabalam"},{"name":"natal_lagna","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Natal lagna rashi name for gemstone lookup","title":"Natal Lagna"},"description":"Natal lagna rashi name for gemstone lookup"},{"name":"natal_nakshatra_idx","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":26,"minimum":0},{"type":"null"}],"description":"0-based natal nakshatra index for Tara Bala and birthstar utilities","title":"Natal Nakshatra Idx"},"description":"0-based natal nakshatra index for Tara Bala and birthstar utilities"},{"name":"include_windows","in":"query","required":false,"schema":{"type":"boolean","description":"Include Hora and Gowri daily windows","default":true,"title":"Include Windows"},"description":"Include Hora and Gowri daily windows"},{"name":"include_ephemeris_scans","in":"query","required":false,"schema":{"type":"boolean","description":"Include retrograde, combustion, ingress, eclipse, and seasonal scans","default":false,"title":"Include Ephemeris Scans"},"description":"Include retrograde, combustion, ingress, eclipse, and seasonal scans"},{"name":"include_lagna_table","in":"query","required":false,"schema":{"type":"boolean","description":"Include the 12-lagna transition table","default":false,"title":"Include Lagna Table"},"description":"Include the 12-lagna transition table"},{"name":"compact","in":"query","required":false,"schema":{"type":"boolean","description":"Return compact window sections suitable for dashboards and feeds","default":true,"title":"Compact"},"description":"Return compact window sections suitable for dashboards and feeds"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calendar/traditions":{"get":{"summary":"Calendar Traditions","operationId":"calendar_traditions_calendar_traditions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/inauspicious-windows":{"get":{"summary":"Inauspicious Windows","operationId":"inauspicious_windows_inauspicious_windows_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","description":"Observer elevation in meters","default":0.0,"title":"Elevation M"},"description":"Observer elevation in meters"},{"name":"profile","in":"query","required":false,"schema":{"type":"string","description":"Regional Panchang profile","default":"north_india_purnimanta","title":"Profile"},"description":"Regional Panchang profile"},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","description":"Sidereal ayanamsa","default":"lahiri","title":"Ayanamsa"},"description":"Sidereal ayanamsa"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sankranti/all":{"get":{"summary":"Sankranti All","operationId":"sankranti_all_sankranti_all_get","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","maximum":2100,"minimum":1900,"title":"Year"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","description":"IANA timezone for local display","default":"Asia/Kolkata","title":"Tz"},"description":"IANA timezone for local display"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/hora":{"get":{"summary":"Panchang Hora","operationId":"panchang_hora_panchang_hora_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/chandrabalam":{"get":{"summary":"Panchang Chandrabalam","operationId":"panchang_chandrabalam_panchang_chandrabalam_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"},{"name":"natal_moon_rashi_idx","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":11,"minimum":0},{"type":"null"}],"title":"Natal Moon Rashi Idx"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/tarabalam":{"get":{"summary":"Panchang Tarabalam","description":"Public birth-star matrix; personal projection stays in authenticated flows.","operationId":"panchang_tarabalam_panchang_tarabalam_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","description":"Observer elevation in meters","default":0.0,"title":"Elevation M"},"description":"Observer elevation in meters"},{"name":"profile","in":"query","required":false,"schema":{"type":"string","description":"Regional Panchang profile","default":"north_india_purnimanta","title":"Profile"},"description":"Regional Panchang profile"},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","description":"Sidereal ayanamsa","default":"lahiri","title":"Ayanamsa"},"description":"Sidereal ayanamsa"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/retrogrades":{"get":{"summary":"Panchang Retrogrades","operationId":"panchang_retrogrades_panchang_retrogrades_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"UTC date for the noon ephemeris snapshot","title":"Date"},"description":"UTC date for the noon ephemeris snapshot"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/combustions":{"get":{"summary":"Panchang Combustions","operationId":"panchang_combustions_panchang_combustions_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"UTC date for the noon ephemeris snapshot","title":"Date"},"description":"UTC date for the noon ephemeris snapshot"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/next-transits":{"get":{"summary":"Panchang Next Transits","operationId":"panchang_next_transits_panchang_next_transits_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Start date for ingress scan","title":"Date"},"description":"Start date for ingress scan"},{"name":"planet","in":"query","required":false,"schema":{"type":"string","description":"Planet key, e.g. saturn|jupiter|mars","default":"saturn","title":"Planet"},"description":"Planet key, e.g. saturn|jupiter|mars"},{"name":"horizon_days","in":"query","required":false,"schema":{"type":"integer","maximum":3660,"minimum":1,"default":365,"title":"Horizon Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/eclipses":{"get":{"summary":"Panchang Eclipses","operationId":"panchang_eclipses_panchang_eclipses_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Start date for eclipse scan","title":"Date"},"description":"Start date for eclipse scan"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":0.0,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":0.0,"title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/ritu":{"get":{"summary":"Panchang Ritu","operationId":"panchang_ritu_panchang_ritu_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Elevation M"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/solstice-equinox":{"get":{"summary":"Panchang Solstice Equinox","operationId":"panchang_solstice_equinox_panchang_solstice_equinox_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Start date for the seasonal scan","title":"Date"},"description":"Start date for the seasonal scan"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/panchaka":{"get":{"summary":"Panchang Panchaka","operationId":"panchang_panchaka_panchang_panchaka_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Elevation M"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/pradosham":{"get":{"summary":"Panchang Pradosham","operationId":"panchang_pradosham_panchang_pradosham_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Elevation M"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/gowri":{"get":{"summary":"Panchang Gowri","operationId":"panchang_gowri_panchang_gowri_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/muhurat/vehicle":{"get":{"summary":"Muhurat Vehicle","operationId":"muhurat_vehicle_muhurat_vehicle_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Elevation M"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lagna/table":{"get":{"summary":"Lagna Table","operationId":"lagna_table_lagna_table_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthstar/deity":{"get":{"summary":"Birthstar Deity","operationId":"birthstar_deity_birthstar_deity_get","parameters":[{"name":"nakshatra_idx","in":"query","required":true,"schema":{"type":"integer","maximum":26,"minimum":0,"description":"0-based nakshatra index","title":"Nakshatra Idx"},"description":"0-based nakshatra index"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/baby-name/syllables":{"get":{"summary":"Baby Name Syllables","operationId":"baby_name_syllables_baby_name_syllables_get","parameters":[{"name":"nakshatra_idx","in":"query","required":true,"schema":{"type":"integer","maximum":26,"minimum":0,"description":"0-based nakshatra index","title":"Nakshatra Idx"},"description":"0-based nakshatra index"},{"name":"pada","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":4,"minimum":1},{"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"}}}}}}},"/panchang/rashifal":{"get":{"summary":"Panchang Rashifal","description":"Daily Chandra-rashi gochar guidance for all 12 signs.\n\nDeterministic only: real ephemeris + fixed bhava significations. This is\ngeneral sign-level guidance, not a personal birth-chart prediction.\n\nThe response (~53 KB, the largest still-uncompressed client-critical Panchang\npayload) is gzip-negotiated via the audited ``_json_response_maybe_gzip``\nhelper (compressed only when the client sends ``Accept-Encoding: gzip`` and\nthe body clears the size threshold); decompressed it is byte-identical to the\nplain JSON dict. This route has no internal callers, so it wraps its returns\ndirectly — no compute/route split is needed.","operationId":"panchang_rashifal_panchang_rashifal_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude in decimal degrees","title":"Lat"},"description":"Latitude in decimal degrees"},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude in decimal degrees","title":"Lng"},"description":"Longitude in decimal degrees"},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date for the Rashifal day (YYYY-MM-DD)","title":"Date"},"description":"Local date for the Rashifal day (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone (auto-resolved from lat/lng if omitted)","title":"Tz"},"description":"IANA timezone (auto-resolved from lat/lng if omitted)"},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","description":"Observer elevation in meters","default":0.0,"title":"Elevation M"},"description":"Observer elevation in meters"},{"name":"profile","in":"query","required":false,"schema":{"type":"string","description":"Regional Panchang profile","default":"north_india_purnimanta","title":"Profile"},"description":"Regional Panchang profile"},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","description":"Sidereal ayanamsa: lahiri|raman|krishnamurti|true_chitra","default":"lahiri","title":"Ayanamsa"},"description":"Sidereal ayanamsa: lahiri|raman|krishnamurti|true_chitra"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/transits":{"get":{"summary":"Panchang Transits","description":"Stateless slow-graha Gochar scan for public SEO pages.\n\nThe response is gzip-negotiated via the audited ``_json_response_maybe_gzip``\nhelper (compressed only when the client advertises ``Accept-Encoding: gzip``);\nthe decompressed body is byte-identical to the prior plain-dict return, so the\npublic SEO contract is unchanged.","operationId":"panchang_transits_panchang_transits_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"UTC start date for the gochar scan (YYYY-MM-DD)","title":"From Date"},"description":"UTC start date for the gochar scan (YYYY-MM-DD)"},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":1100,"minimum":1,"description":"Forward scan window in days","default":370,"title":"Window Days"},"description":"Forward scan window in days"},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","description":"Sidereal ayanamsa: lahiri|raman|krishnamurti|true_chitra","default":"lahiri","title":"Ayanamsa"},"description":"Sidereal ayanamsa: lahiri|raman|krishnamurti|true_chitra"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/month":{"get":{"summary":"Panchang Month","description":"Real per-day Panchang for every day of a month — powers the calendar\ngrid. Per day: tithi (number + name), nakshatra, paksha, sunrise.\nIn-process cached per (month, city) since it never changes.\n\nThe full-month grid is the heaviest public Panchang JSON payload (28-31\ndays x tithi/nakshatra/paksha/lunar-month + festival/vrat markers), so the\nresponse is gzip-negotiated via the audited `_json_response_maybe_gzip`\nhelper: the DECOMPRESSED body is byte-identical to the old `return out`\npath (no contract/field/value change), and clients that do not advertise\n`Accept-Encoding: gzip` (or tiny payloads) get the unchanged JSON body.\nThe in-process `_MONTH_CACHE` still stores the plain dict; the wrapper runs\nper request on both the cache-hit and freshly-built return paths. Each day\nalso uses the canonical exact-key daily memo, so the Today request and this\nmonth packet share the selected day's ephemeris result instead of computing\nit twice.","operationId":"panchang_month_panchang_month_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"ym","in":"query","required":true,"schema":{"type":"string","description":"Month as YYYY-MM","title":"Ym"},"description":"Month as YYYY-MM"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/choghadiya":{"get":{"summary":"Choghadiya Endpoint","description":"16-period Choghadiya for a city × date.\n\nThe 16-period Choghadiya block is a real multi-KB API payload (~2.7 KB), so\nthe response is gzip-negotiated via the audited ``_json_response_maybe_gzip``\nhelper: the DECOMPRESSED body is byte-identical to the old\n``return _attribution_envelope(...)`` path (no contract/field/value change),\nand clients that do not advertise ``Accept-Encoding: gzip`` (or tiny\npayloads) get the unchanged JSON body.","operationId":"choghadiya_endpoint_panchang_choghadiya_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/vedic-time":{"get":{"summary":"Vedic Time Endpoint","description":"Return the location-specific 60-ghati Vedic clock for one instant.","operationId":"vedic_time_endpoint_panchang_vedic_time_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date"}},{"name":"time","in":"query","required":true,"schema":{"type":"string","description":"HH:MM or HH:MM:SS local time","title":"Time"},"description":"HH:MM or HH:MM:SS local time"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/muhurta/search":{"get":{"summary":"Muhurta Search","operationId":"muhurta_search_muhurta_search_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"First local date to scan (YYYY-MM-DD)","title":"Start Date"},"description":"First local date to scan (YYYY-MM-DD)"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":31,"minimum":1,"default":7,"title":"Days"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"},{"name":"activity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Echoed only; activity rules are pandit-pending","title":"Activity"},"description":"Echoed only; activity rules are pandit-pending"},{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Top N"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/muhurta/explain":{"get":{"summary":"Muhurta Explain","operationId":"muhurta_explain_muhurta_explain_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"First local date to scan (YYYY-MM-DD)","title":"Start Date"},"description":"First local date to scan (YYYY-MM-DD)"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":31,"minimum":1,"default":7,"title":"Days"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"},{"name":"activity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Echoed only; activity rules are pandit-pending","title":"Activity"},"description":"Echoed only; activity rules are pandit-pending"},{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Top N"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/muhurta/activity-certification":{"get":{"summary":"Muhurta Activity Certification","description":"Read-only activity-Muhurta certification registry.\n\nMetadata only: this endpoint does not compute or assert new activity-specific\nMuhurta. Pending activities remain pending until their formula, provenance,\ngolden-case, and reference-parity gates pass.","operationId":"muhurta_activity_certification_muhurta_activity_certification_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/muhurat/electional":{"post":{"summary":"Muhurat Electional Endpoint","description":"Electional Muhurat — rank auspicious time windows across a date range from\nthe universal classical Panchang signals (Choghadiya class + Abhijit, minus\nthe Rahu/Yamaganda/Gulika malefic windows). Deterministic: per-day Swiss-\nEphemeris Panchang in, ranked windows out; the LLM only narrates.\n\nActivity-specific muhurat selection is pandit-gated and NOT asserted here — an\n`activity` is echoed back flagged `pending_pandit_ratification` (§8.3).","operationId":"muhurat_electional_endpoint_muhurat_electional_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionalMuhuratRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/muhurat/electional/report":{"post":{"summary":"Muhurat Electional Report Endpoint","description":"Electional Muhurat as a structured, bilingual, source-cited REPORT.\n\nComputes the SAME deterministic electional result as the public\n`/muhurat/electional` endpoint (no new entitlement surface — identical data,\nalready ungated), then renders it as a multi-channel report asset (§7):\nbest-window summary, ranked top windows, per-day avoid windows, the engine's\nactivity-pending disclosure surfaced verbatim (§8.3, no fabricated activity\nruling), and a §12 guidance-not-fatalism note. The LLM only narrates; this\nlayer is pure templating.","operationId":"muhurat_electional_report_endpoint_muhurat_electional_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionalMuhuratRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/festivals":{"get":{"summary":"Panchang Festivals","description":"List Sanatan Dharma festivals computed for any city/range.\n\nEach festival is returned with:\n  - Gregorian date (local timezone)\n  - Bilingual name (en + hi)\n  - Deity, description, lane classification\n  - Muhurat windows (Pradosh, Nishita, Abhijit, Bhadra-avoid)\n  - Rule explanation (which tithi/nakshatra/sankranti instant drives the date)\n\nMath: tithi = (Moon longitude - Sun longitude) / 12° · sidereal Lahiri ayanamsa.\nSee app/festivals.py for the full algorithm.\n\nTransport: the response is gzip-compressed when the client advertises\n`Accept-Encoding: gzip` and the body clears the size threshold; the\ndecompressed body is byte-identical to the plain JSON, and identity clients\nare unchanged. The payload is computed by `_panchang_festivals_dict`, which\n`/panchang/month` also calls internally (consuming the dict directly, so it\nis unaffected by the route's transport encoding).","operationId":"panchang_festivals_panchang_festivals_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":365,"title":"Days"}},{"name":"anchor_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anchor Date"}},{"name":"only","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Only"}},{"name":"include_aliases","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Aliases"}},{"name":"include_popular","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Popular"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/vrats":{"get":{"summary":"Panchang Vrats","description":"Recurring vrat scan for a city/range.\n\nUses the ratified panchanga scan rulesets, not the broad festival registry:\nEkadashi, Purnima, Amavasya, Pradosha, Sankashti, and Masik Shivaratri.\n\nTransport: the response is gzip-compressed when the client advertises\n`Accept-Encoding: gzip` and the body clears the size threshold; the\ndecompressed body is byte-identical to the plain JSON, and identity clients\nare unchanged. The payload is computed by `_panchang_vrats_dict`, which\n`/panchang/month` also calls internally (consuming the dict directly, so it\nis unaffected by the route's transport encoding).","operationId":"panchang_vrats_panchang_vrats_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":60,"title":"Days"}},{"name":"max_per_rule","in":"query","required":false,"schema":{"type":"integer","maximum":6,"minimum":1,"default":2,"title":"Max Per Rule"}},{"name":"include_top","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Top"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calendar/convert":{"get":{"summary":"Calendar Convert","operationId":"calendar_convert_calendar_convert_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Gregorian local date to convert (YYYY-MM-DD)","title":"Date"},"description":"Gregorian local date to convert (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA timezone; auto-resolved if omitted","title":"Tz"},"description":"IANA timezone; auto-resolved if omitted"},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Elevation M"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival/observance/explain":{"get":{"summary":"Festival Observance Explain","operationId":"festival_observance_explain_festival_observance_explain_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","description":"Festival rule key or supported regional alias","title":"Slug"},"description":"Festival rule key or supported regional alias"},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival/observance/compare":{"get":{"summary":"Festival Observance Compare","operationId":"festival_observance_compare_festival_observance_compare_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}},{"name":"compare_lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Compare Lat"}},{"name":"compare_lng","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Compare Lng"}},{"name":"compare_tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compare Tz"}},{"name":"tradition","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Tradition"}},{"name":"compare_tradition","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compare Tradition"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival/provenance/{slug}":{"get":{"summary":"Festival Provenance","operationId":"festival_provenance_festival_provenance__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival/debate/{slug}":{"get":{"summary":"Festival Debate","operationId":"festival_debate_festival_debate__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival/why-not/{slug}":{"get":{"summary":"Festival Why Not","operationId":"festival_why_not_festival_why_not__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"target_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional civil date to compare against the computed observance","title":"Target Date"},"description":"Optional civil date to compare against the computed observance"},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival/locality-shift/{slug}":{"get":{"summary":"Festival Locality Shift","operationId":"festival_locality_shift_festival_locality_shift__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}},{"name":"compare_lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":28.6139,"title":"Compare Lat"}},{"name":"compare_lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":77.209,"title":"Compare Lng"}},{"name":"compare_tz","in":"query","required":false,"schema":{"type":"string","default":"Asia/Kolkata","title":"Compare Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/new-year/regional":{"get":{"summary":"Regional New Years","operationId":"regional_new_years_new_year_regional_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/temple-observance/{festival}":{"get":{"summary":"Temple Observance","operationId":"temple_observance_temple_observance__festival__get","parameters":[{"name":"festival","in":"path","required":true,"schema":{"type":"string","title":"Festival"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vrat/parana":{"get":{"summary":"Vrat Parana","operationId":"vrat_parana_vrat_parana_get","parameters":[{"name":"vrat","in":"query","required":false,"schema":{"type":"string","default":"ekadashi","title":"Vrat"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/eclipse/visibility":{"get":{"summary":"Eclipse Visibility","operationId":"eclipse_visibility_eclipse_visibility_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Start date for eclipse scan","title":"Date"},"description":"Start date for eclipse scan"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":0.0,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":0.0,"title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/eclipse/sutak":{"get":{"summary":"Eclipse Sutak","operationId":"eclipse_sutak_eclipse_sutak_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Start date for eclipse scan","title":"Date"},"description":"Start date for eclipse scan"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":0.0,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":0.0,"title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/feeds/festivals.json":{"get":{"summary":"Festivals Json Feed","operationId":"festivals_json_feed_feeds_festivals_json_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3660,"minimum":1,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/feeds/vrats.json":{"get":{"summary":"Vrats Json Feed","operationId":"vrats_json_feed_feeds_vrats_json_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":366,"minimum":1,"default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/feeds/gochar.json":{"get":{"summary":"Gochar Json Feed","operationId":"gochar_json_feed_feeds_gochar_json_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"UTC start date for the gochar scan (YYYY-MM-DD)","title":"From Date"},"description":"UTC start date for the gochar scan (YYYY-MM-DD)"},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":1100,"minimum":1,"default":370,"title":"Window Days"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calendar/festivals.ics":{"get":{"summary":"Festivals Ics","operationId":"festivals_ics_calendar_festivals_ics_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3660,"minimum":1,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival/ics":{"get":{"summary":"Festival Ics Alias","operationId":"festival_ics_alias_festival_ics_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3660,"minimum":1,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calendar/vrats.ics":{"get":{"summary":"Vrats Ics","operationId":"vrats_ics_calendar_vrats_ics_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":366,"minimum":1,"default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calendar/muhurta.ifb":{"get":{"summary":"Muhurta Freebusy","operationId":"muhurta_freebusy_calendar_muhurta_ifb_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Local date (YYYY-MM-DD)","title":"Date"},"description":"Local date (YYYY-MM-DD)"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}},{"name":"elevation_m","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Elevation M"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"north_india_purnimanta","title":"Profile"}},{"name":"ayanamsa","in":"query","required":false,"schema":{"type":"string","default":"lahiri","title":"Ayanamsa"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/schema/festival/{slug}":{"get":{"summary":"Festival Schema Jsonld","operationId":"festival_schema_jsonld_schema_festival__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Australia/Sydney","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/schema/temple/{temple_id}":{"get":{"summary":"Temple Schema Jsonld","operationId":"temple_schema_jsonld_schema_temple__temple_id__get","parameters":[{"name":"temple_id","in":"path","required":true,"schema":{"type":"string","title":"Temple Id"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name; defaults to the slug title","title":"Name"},"description":"Display name; defaults to the slug title"},{"name":"url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical public URL; defaults to bda.ai/teerth/{id}","title":"Url"},"description":"Canonical public URL; defaults to bda.ai/teerth/{id}"},{"name":"locality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locality"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"IN","title":"Country"}},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/diwali":{"get":{"summary":"Panchang Diwali","description":"Gold-standard Diwali Lakshmi Puja muhurat for any location + year.\n\nThis is the FIRST gold-standard rule per the architecture brief.\nReturns local civil date + exact Pradosh × Amavasya intersection\nwindow + methodology fingerprint (diwali_lakshmi_puja_v1).\n\nThe 200 muhurat payload (window + methodology fingerprint + meta) is the\nheaviest single-festival read-only SEO/AEO surface, so it is gzip-negotiated\nvia the audited `_json_response_maybe_gzip` helper: the DECOMPRESSED body is\nbyte-identical to the old `return _with_meta(result)` path (no\ncontract/field/value change), and the 404 (un-resolvable year) path is\nunchanged. No PII; no reflected request input.\n\nExample:\n    GET /panchang/diwali?year=2025&lat=-33.8688&lng=151.2093&tz=Australia/Sydney","operationId":"panchang_diwali_panchang_diwali_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":28.6139,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","default":77.209,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Asia/Kolkata","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/panchang/festival/{rule_key}":{"get":{"summary":"Panchang Festival Single","description":"Compute a single festival in a given year for a given city.\nUseful for 'When is Diwali 2026 in Sydney?' style questions.\n\nThe 200 occurrence payload is read-only and deterministic and is fetched by\nanswer-engine/SEO crawlers for 'when is <festival> <year>' queries, so it is\ngzip-negotiated via the audited `_json_response_maybe_gzip` helper: the\nDECOMPRESSED body is byte-identical to the old `return _with_meta({...})`\npath (no contract/field/value change), and both 404 paths (unknown rule key,\nun-resolvable occurrence) are unchanged. No PII; no reflected request input.","operationId":"panchang_festival_single_panchang_festival__rule_key__get","parameters":[{"name":"rule_key","in":"path","required":true,"schema":{"type":"string","title":"Rule Key"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":-33.8688,"title":"Lat"}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","default":151.2093,"title":"Lng"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"Australia/Sydney","title":"Tz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AshtakavargaReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"AshtakavargaReportRequest"},"AskPolicyRequest":{"properties":{"question":{"type":"string","maxLength":2000,"minLength":1,"title":"Question"},"surface":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surface","default":"panchang"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"},"logged_in":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logged In","default":false},"has_birth_details":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Birth Details","default":false}},"type":"object","required":["question"],"title":"AskPolicyRequest"},"AskStartRequest":{"properties":{"question":{"type":"string","maxLength":2000,"minLength":1,"title":"Question"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"},"has_birth_details":{"type":"boolean","title":"Has Birth Details","default":false},"has_prashna_seed":{"type":"boolean","title":"Has Prashna Seed","default":false},"has_memory_consent":{"type":"boolean","title":"Has Memory Consent","default":false},"profile":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Profile"},"canonical_context":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Canonical Context"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"pair_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pair Key"}},"type":"object","required":["question"],"title":"AskStartRequest"},"BhavChalitReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"BhavChalitReportRequest"},"BundleRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"transits":{"type":"boolean","title":"Transits","default":true},"domains":{"type":"boolean","title":"Domains","default":true}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"BundleRequest"},"ChartRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"elevation_m":{"type":"number","title":"Elevation M","default":0.0},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"ChartRequest"},"ComprehensiveReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"ComprehensiveReportRequest"},"ConsentFlags":{"properties":{"data_processing_consent":{"type":"boolean","title":"Data Processing Consent","default":false},"service_email_consent":{"type":"boolean","title":"Service Email Consent","default":false},"marketing_consent":{"type":"boolean","title":"Marketing Consent","default":false},"whatsapp_consent":{"type":"boolean","title":"Whatsapp Consent","default":false}},"type":"object","title":"ConsentFlags","description":"Codex rule: marketing/fundraising consent and WhatsApp consent\nare SEPARATE from birth-data processing consent. They are NEVER\nbundled. The rule engine reads them; the UI presents them as\nSEPARATE checkboxes (never one combined checkbox)."},"ContextResolveRequest":{"properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time"},"date_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Source"},"time_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Source"},"source":{"type":"string","title":"Source","default":"explicit"}},"type":"object","title":"ContextResolveRequest"},"DashaAlertsRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"},"window_days":{"type":"integer","maximum":366.0,"minimum":1.0,"title":"Window Days","description":"Look-ahead window in days to scan for upcoming dasha changes","default":90}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"DashaAlertsRequest"},"DashaTimelineRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"DashaTimelineRequest"},"DashboardBundleRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time"},"date_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Source"},"time_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Source"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","title":"DashboardBundleRequest"},"DashboardTodayRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},"type":"object","title":"DashboardTodayRequest"},"DivisionalReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"DivisionalReportRequest"},"DomainReportRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"career|marriage|education|finance|health|travel|spiritual"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["domain","date_of_birth","time_of_birth","lat","lng"],"title":"DomainReportRequest"},"DonationAuditRequest":{"properties":{"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"},"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"DonationAuditRequest"},"DonationConfigRequest":{"properties":{"surface":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surface","default":"modal_after_value"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context","default":"any"},"donor":{"type":"boolean","title":"Donor","default":false},"item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Id"},"item_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Label"},"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"DonationConfigRequest"},"DonationDecideRequest":{"properties":{"state":{"$ref":"#/components/schemas/DonationPromptState"},"signals":{"$ref":"#/components/schemas/DonationSignals"},"consent":{"$ref":"#/components/schemas/ConsentFlags"}},"type":"object","required":["state","signals","consent"],"title":"DonationDecideRequest","description":"Inputs for the donation prompt rule engine. Client owns the state\nenvelope (persisted in localStorage in pass 1 — no server DB writes).\n\nThe endpoint runs deterministic rules and returns a decision plus a\n`state_updates` patch the client should merge back into its state.\n\nAudit trail (in `decision.audit_trail`) lists every rule that fired,\nso Codex can trace why a prompt did / did not show."},"DonationOpsStatusRequest":{"properties":{"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"},"smoke_rpc":{"type":"boolean","title":"Smoke Rpc","default":false}},"type":"object","title":"DonationOpsStatusRequest"},"DonationPaymentRecordRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"firebase_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Uid"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"},"provider":{"type":"string","title":"Provider","default":"stripe"},"provider_payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Payment Id"},"provider_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Session Id"},"provider_order_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Order Id"},"payment_status":{"type":"string","title":"Payment Status","default":"pending"},"amount":{"type":"number","title":"Amount","default":0},"amount_aud":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Aud"},"currency":{"type":"string","title":"Currency","default":"AUD"},"frequency":{"type":"string","title":"Frequency","default":"one_time"},"campaign_id":{"type":"string","title":"Campaign Id","default":"maa_adya_kali_temple"},"item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Id"},"item_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Label"},"metadata":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metadata"},"raw_event":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Raw Event"}},"type":"object","title":"DonationPaymentRecordRequest"},"DonationPromptState":{"properties":{"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Id"},"impression_count":{"type":"integer","title":"Impression Count","default":0},"dismiss_count":{"type":"integer","title":"Dismiss Count","default":0},"donate_click_count":{"type":"integer","title":"Donate Click Count","default":0},"last_prompt_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Prompt At"},"last_prompt_surface":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Prompt Surface"},"last_prompt_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Prompt Reason"},"last_prompt_copy_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Prompt Copy Key"},"questions_since_last_prompt":{"type":"integer","title":"Questions Since Last Prompt","default":0},"questions_since_donation":{"type":"integer","title":"Questions Since Donation","default":0},"donation_cooldown_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Donation Cooldown Until"},"last_donation_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Donation At"},"donated_total":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Donated Total"},"donated_recently":{"type":"boolean","title":"Donated Recently","default":false},"marketing_consent":{"type":"boolean","title":"Marketing Consent","default":false},"whatsapp_consent":{"type":"boolean","title":"Whatsapp Consent","default":false},"sensitive_suppression_count":{"type":"integer","title":"Sensitive Suppression Count","default":0},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"lifetime_dwell_seconds":{"type":"integer","title":"Lifetime Dwell Seconds","default":0}},"type":"object","title":"DonationPromptState","description":"Per-user/session counters + cooldowns. All fields are optional\non the wire so a fresh visitor can post `{}` and the rule engine\ntreats them as zeros/Nones."},"DonationSignals":{"properties":{"surface":{"type":"string","enum":["soft_inline","modal_after_value","report_support_prompt","recurring_support_prompt","donor_thank_you","passive_dwell","email_footer","whatsapp"],"title":"Surface"},"value_event":{"type":"boolean","title":"Value Event","default":false},"dwell_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dwell Seconds"},"questions_total":{"type":"integer","title":"Questions Total","default":0},"intent_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent Domain"},"question_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Text"},"report_generated":{"type":"boolean","title":"Report Generated","default":false},"report_downloaded":{"type":"boolean","title":"Report Downloaded","default":false},"mobile_fullscreen":{"type":"boolean","title":"Mobile Fullscreen","default":false}},"type":"object","required":["surface"],"title":"DonationSignals","description":"The dynamic inputs the rule engine reads for the current turn."},"DonationStateRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"state":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"State"}},"type":"object","title":"DonationStateRequest"},"DoshaRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"DoshaRequest"},"EducationReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"EducationReportRequest"},"ElectionalMuhuratRequest":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"start_date":{"type":"string","format":"date","title":"Start Date","description":"First local date to scan (YYYY-MM-DD)"},"days":{"type":"integer","maximum":31.0,"minimum":1.0,"title":"Days","description":"Number of days to scan from start_date","default":7},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz","description":"IANA timezone (auto-resolved from lat/lng if omitted)"},"activity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity","description":"Optional activity (e.g. griha_pravesh, vivah). Echoed only — activity-specific muhurat rulesets are pandit-pending; the ranking is activity-agnostic universal classical signals."},"top_n":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Top N","description":"How many top windows to return","default":10},"profile":{"type":"string","title":"Profile","description":"Regional profile","default":"north_india_purnimanta"},"ayanamsa":{"type":"string","title":"Ayanamsa","description":"Sidereal ayanamsa","default":"lahiri"}},"type":"object","required":["lat","lng","start_date"],"title":"ElectionalMuhuratRequest"},"EntitlementFulfillmentRequest":{"properties":{"entitlement_id":{"type":"string","title":"Entitlement Id"},"fulfillment_status":{"type":"string","title":"Fulfillment Status","default":"fulfilled"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["entitlement_id"],"title":"EntitlementFulfillmentRequest"},"FestivalAlertsRequest":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"from_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"From Date","description":"Look-ahead start date (local). Defaults to today."},"window_days":{"type":"integer","maximum":400.0,"minimum":1.0,"title":"Window Days","description":"Look-ahead window in days to scan for upcoming festivals/vrats","default":90}},"type":"object","required":["lat","lng"],"title":"FestivalAlertsRequest"},"GocharAlertsRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"},"window_days":{"type":"integer","maximum":1100.0,"minimum":1.0,"title":"Window Days","description":"Look-ahead window in days to scan for upcoming slow-graha sign-changes (and the Sade-Sati transitions they trigger)","default":365}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"GocharAlertsRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthRiskWindowsRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"elevation_m":{"type":"number","title":"Elevation M","default":0.0},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"},"horizon_months":{"type":"integer","maximum":60.0,"minimum":1.0,"title":"Horizon Months","default":12}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"HealthRiskWindowsRequest"},"HousesReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"HousesReportRequest"},"InterpretationPacketRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat","description":"Birth latitude"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng","description":"Birth longitude"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Optional life-area: career|marriage|education|finance|health|travel|spiritual"},"current_lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Current Lat"},"current_lng":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Current Lng"},"current_lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Current Lon"},"current_tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Tz"},"current_place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Place"},"current_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Date"},"current_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Time"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"InterpretationPacketRequest"},"KpReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"KpReportRequest"},"LifeEventRecord":{"properties":{"subject":{"type":"string","maxLength":80,"minLength":1,"title":"Subject","default":"self"},"category":{"type":"string","maxLength":80,"minLength":1,"title":"Category"},"event_label":{"type":"string","maxLength":200,"minLength":1,"title":"Event Label"},"event_date":{"type":"string","format":"date","title":"Event Date"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"},"source":{"type":"string","maxLength":80,"minLength":1,"title":"Source","default":"owner"},"consented":{"type":"boolean","title":"Consented","default":false}},"type":"object","required":["category","event_label","event_date"],"title":"LifeEventRecord"},"LifeEventUpsertRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"event":{"$ref":"#/components/schemas/LifeEventRecord"}},"type":"object","required":["event"],"title":"LifeEventUpsertRequest"},"MatchPerson":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"MatchPerson"},"MatchRequest":{"properties":{"groom":{"$ref":"#/components/schemas/MatchPerson"},"bride":{"$ref":"#/components/schemas/MatchPerson"}},"type":"object","required":["groom","bride"],"title":"MatchRequest"},"MemoryRequest":{"properties":{"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question","default":""},"intent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"max_recent":{"type":"integer","title":"Max Recent","default":10},"max_similar":{"type":"integer","title":"Max Similar","default":5}},"type":"object","title":"MemoryRequest"},"PanchangCommentRequest":{"properties":{"page_key":{"type":"string","maxLength":180,"minLength":1,"title":"Page Key"},"page_url":{"type":"string","maxLength":500,"minLength":1,"title":"Page Url"},"display_name":{"type":"string","maxLength":60,"minLength":1,"title":"Display Name","default":"Devotee"},"comment":{"type":"string","maxLength":1500,"minLength":3,"title":"Comment"},"idempotency_key":{"type":"string","maxLength":100,"minLength":8,"title":"Idempotency Key"},"website":{"type":"string","maxLength":200,"title":"Website","description":"Spam honeypot; must remain empty","default":""}},"type":"object","required":["page_key","page_url","comment","idempotency_key"],"title":"PanchangCommentRequest"},"PlaceConfirmRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"kind":{"type":"string","title":"Kind"},"place":{"type":"object","title":"Place"}},"type":"object","required":["kind","place"],"title":"PlaceConfirmRequest"},"PlaceSearchRequest":{"properties":{"query":{"type":"string","title":"Query"},"country_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Hint"},"limit":{"type":"integer","title":"Limit","default":5}},"type":"object","required":["query"],"title":"PlaceSearchRequest"},"PrashnaBatchOption":{"properties":{"label":{"type":"string","maxLength":120,"minLength":1,"title":"Label","description":"Human-readable label, e.g. 'Wagga Wagga'"},"seed_number":{"type":"integer","maximum":249.0,"minimum":1.0,"title":"Seed Number","description":"KP horary seed 1-249 for this option"},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat","description":"Optional override of the querent location for this option"},"lng":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Region","description":"Region tag (e.g. 'regional NSW', 'metro Sydney') — metadata only"},"direction":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Direction","description":"Direction tag (e.g. 'north', 'south-east', 'interstate') — metadata only"}},"type":"object","required":["label","seed_number"],"title":"PrashnaBatchOption"},"PrashnaBatchRequest":{"properties":{"master_seed":{"type":"integer","maximum":249.0,"minimum":1.0,"title":"Master Seed","description":"Master question seed (the matter-itself gate)"},"options":{"items":{"$ref":"#/components/schemas/PrashnaBatchOption"},"type":"array","maxItems":10,"minItems":1,"title":"Options"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"question_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Domain","description":"property|legal|sale|marriage|career|education|finance|health|travel|children"},"question_schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Schema","description":"Multi-house schema key — overrides question_domain → schema mapping"},"question_time_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Time Utc","description":"ISO datetime when the question was asked (defaults to now UTC)"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat","description":"Default querent location latitude"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng","description":"Default querent location longitude"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"},"birth_details":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Birth Details","description":"Optional querent natal data — folds NRP into every option's packet"}},"type":"object","required":["master_seed","options","lat","lng"],"title":"PrashnaBatchRequest"},"PrashnaReportRequest":{"properties":{"packet":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Packet","description":"A Prashna packet from compute_prashna or compute_prashna_batch. If omitted, the endpoint computes it from the single_seed_inputs OR batch_inputs field."},"single_seed_inputs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Single Seed Inputs","description":"Inputs forwarded to compute_prashna (seed_number, lat, lng, question_time_utc, etc.) when packet is not supplied."},"batch_inputs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Batch Inputs","description":"Inputs forwarded to compute_prashna_batch (master_seed, options[], lat, lng, etc.) when packet is not supplied."},"memory_context":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Memory Context","description":"Optional memory packet from /jyotish/memory; cited verbatim in the memory_context_section of the report."}},"type":"object","title":"PrashnaReportRequest","description":"Either provide a fully-formed Prashna packet (single-seed or batch),\nOR provide the inputs needed for compute_prashna / compute_prashna_batch\nand the endpoint will compute the packet first, then render it.\n\n`memory_context` is optional. When supplied, the report cites recent\nthemes / dominant domain / similar prior questions in the memory\nsection (Block 2A integration)."},"PrashnaRequest":{"properties":{"seed_number":{"type":"integer","maximum":249.0,"minimum":1.0,"title":"Seed Number","description":"KP horary number 1-249"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"question_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Domain","description":"property|marriage|career|education|finance|health|travel|legal|sale|..."},"question_house":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"Question House","description":"Explicit house 1-12 (overrides question_domain → single-house verdict)"},"question_schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Schema","description":"Multi-house schema key — property|legal|sale|marriage|career|education|finance|health|travel|children. Overrides question_domain → multi-house schema mapping."},"question_time_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Time Utc","description":"ISO datetime when the question was asked (defaults to now UTC)"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"type":"string","title":"Ayanamsa","default":"lahiri"},"birth_details":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Birth Details","description":"Optional querent natal data: {date_of_birth, time_of_birth, birth_lat, birth_lng, birth_tz, ayanamsa}. When supplied, NRP corroboration is added to the verdict."}},"type":"object","required":["seed_number","lat","lng"],"title":"PrashnaRequest"},"PredictionRegisterRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"prediction_text":{"type":"string","maxLength":4000,"minLength":1,"title":"Prediction Text"},"scope":{"type":"string","maxLength":120,"minLength":1,"title":"Scope","default":"general"},"confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence"},"target_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Date"},"target_window_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Window Start"},"target_window_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Window End"},"evidence":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Evidence"}},"type":"object","required":["prediction_text"],"title":"PredictionRegisterRequest"},"ProfileDQStatusRequest":{"properties":{"smoke_rpc":{"type":"boolean","title":"Smoke Rpc","default":true}},"type":"object","title":"ProfileDQStatusRequest"},"ProfileDeleteRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"}},"type":"object","title":"ProfileDeleteRequest"},"ProfileGetRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"ProfileGetRequest"},"ProfileUpsertRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"patch":{"type":"object","title":"Patch"}},"type":"object","required":["patch"],"title":"ProfileUpsertRequest"},"QuestionDiagnoseRequest":{"properties":{"question":{"type":"string","maxLength":2000,"minLength":1,"title":"Question"},"surface":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surface","default":"dashboard"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"},"logged_in":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logged In","default":false},"has_birth_details":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Birth Details","default":false}},"type":"object","required":["question"],"title":"QuestionDiagnoseRequest"},"QuestionEvidenceRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time"},"date_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Source"},"time_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Source"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"question":{"type":"string","maxLength":2000,"minLength":1,"title":"Question"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"},"surface":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surface","default":"dashboard"},"max_chars":{"anyOf":[{"type":"integer","maximum":8000.0,"minimum":500.0},{"type":"null"}],"title":"Max Chars","default":2000}},"type":"object","required":["question"],"title":"QuestionEvidenceRequest"},"ReportGenerateRequest":{"properties":{"report_id":{"type":"string","title":"Report Id","description":"Catalog report id to generate. Supported (free, deterministic): birth_report | personalised_remedies."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","required":["report_id","date_of_birth","time_of_birth","lat","lng"],"title":"ReportGenerateRequest"},"ReportsListRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"ReportsListRequest"},"ShadbalaReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"ShadbalaReportRequest"},"SubscriptionDigestRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"},"window_days":{"type":"integer","maximum":366.0,"minimum":1.0,"title":"Window Days","description":"Shared look-ahead window in days applied to all three feeds (dasha changes, slow-graha transit changes, festivals/vrats)","default":90}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"SubscriptionDigestRequest"},"TempleCampaignRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"state":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"State"}},"type":"object","title":"TempleCampaignRequest"},"TimingForecastRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"},"domain":{"type":"string","title":"Domain","description":"Life-area to forecast: career | marriage | education | finance | health | travel | spiritual.","default":"career"},"horizon_months":{"type":"integer","maximum":120.0,"minimum":1.0,"title":"Horizon Months","description":"How far ahead to scan the daśā tree (months, 1..120).","default":36}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"TimingForecastRequest"},"TransitReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"TransitReportRequest"},"UserContextRequest":{"properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time"},"date_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Source"},"time_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Source"},"source":{"type":"string","title":"Source","default":"explicit"},"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","title":"UserContextRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"ValidationEventMapRequest":{"properties":{"firebase_id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Member Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"event":{"$ref":"#/components/schemas/LifeEventRecord"},"date_of_birth":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date Of Birth"},"time_of_birth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Of Birth"},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"}},"type":"object","required":["event"],"title":"ValidationEventMapRequest"},"YogaReportRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth","description":"HH:MM:SS in local time"},"time_accuracy":{"type":"string","title":"Time Accuracy","description":"exact|approximate|unknown","default":"exact"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tz"},"ayanamsa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ayanamsa"}},"type":"object","required":["date_of_birth","time_of_birth","lat","lng"],"title":"YogaReportRequest"}}},"x-bda-domain":{"family":"panchang","contract_version":"bda-openapi-domain-v1","guardrails":{"machine_readable_domain_subset":true,"source":"app.openapi","no_runtime_behavior_change":true}}}