{"openapi":"3.1.0","info":{"title":"AstroNode API","description":"Public REST API for the AstroNode Vedic astrology engine. All endpoints require a Bearer token (`aie_test_*` or `aie_live_*`) except the health probe.","version":"1.0.0"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key"}},"schemas":{}},"paths":{"/v1/health":{"get":{"summary":"Liveness + readiness probe.","tags":["Meta"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok","degraded"]},"checks":{"type":"object","properties":{"engine":{"type":"object","properties":{"status":{"type":"string","enum":["ok","fail"]},"version":{"type":"string"}},"required":["status","version"],"additionalProperties":false}},"required":["engine"],"additionalProperties":false},"uptime_seconds":{"type":"number"}},"required":["status","checks","uptime_seconds"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok","degraded"]},"checks":{"type":"object","properties":{"engine":{"type":"object","properties":{"status":{"type":"string","enum":["ok","fail"]},"version":{"type":"string"}},"required":["status","version"],"additionalProperties":false}},"required":["engine"],"additionalProperties":false},"uptime_seconds":{"type":"number"}},"required":["status","checks","uptime_seconds"],"additionalProperties":false}}}}}}},"/v1/usage":{"get":{"summary":"Current API key's usage stats (today + month-to-date).","tags":["Meta"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"today":{"type":"object","properties":{"requests":{"type":"number"},"errors":{"type":"number"}},"required":["requests","errors"],"additionalProperties":false},"month_to_date":{"type":"object","properties":{"requests":{"type":"number"},"errors":{"type":"number"},"quota":{"type":"number"}},"required":["requests","errors","quota"],"additionalProperties":false},"by_endpoint":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}}},"required":["today","month_to_date","by_endpoint"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/charts/birth":{"post":{"summary":"Compute the D1 (Lagna) birth chart.","tags":["Charts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"interpretation":{"type":"object","properties":{"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"additionalProperties":false}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"ascendant":{"type":"object","properties":{"sign":{"type":"string"},"degree":{"type":"number"}},"required":["sign","degree"],"additionalProperties":false},"planets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"sign":{"type":"string"},"house":{"type":"integer","minimum":1,"maximum":12},"degree_in_sign":{"type":"number"},"nakshatra":{"type":"string"},"nakshatra_pada":{"type":"integer","minimum":1,"maximum":4},"retrograde":{"type":"boolean"}},"required":["name","sign","house","degree_in_sign","nakshatra","nakshatra_pada","retrograde"],"additionalProperties":false}},"meta":{"type":"object","properties":{"ayanamsa":{"type":"string"},"house_system":{"type":"string"},"engine_version":{"type":"string"}},"required":["ayanamsa","house_system","engine_version"],"additionalProperties":false}},"required":["ascendant","planets","meta"],"additionalProperties":false},"interpretation":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["chart_summary"]},"version":{"type":"string"},"language":{"type":"string","enum":["en","hi"]},"verbosity":{"type":"string","enum":["short","standard","detailed"]},"disclaimer":{"type":"string"},"summary":{"type":"string"},"sections":{"type":"object","properties":{"personality":{"type":"string"},"strengths":{"type":"array","items":{"type":"string"}},"growth_areas":{"type":"array","items":{"type":"string"}},"key_planetary_influences":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string"},"text":{"type":"string"}},"required":["planet","text"],"additionalProperties":false}}},"required":["personality","strengths","growth_areas","key_planetary_influences"],"additionalProperties":false}},"required":["type","version","language","verbosity","disclaimer","summary","sections"],"additionalProperties":false},{"type":"null"}]},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/charts/varga":{"post":{"summary":"Compute one or all divisional (Varga) charts. Default division = 9 (Navamsa).","tags":["Charts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"division":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"all":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/compatibility":{"post":{"summary":"Ashtakoot Gun Milan compatibility score (out of 36) with per-koot breakdown.","tags":["Compatibility"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"interpretation":{"type":"object","properties":{"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"additionalProperties":false}},"required":["person_a","person_b"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"total":{"type":"object","properties":{"score":{"type":"number"},"max":{"type":"number","enum":[36]},"bucket":{"type":"string","enum":["Excellent","Good","Moderate","Poor"]}},"required":["score","max","bucket"],"additionalProperties":false},"koots":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"score":{"type":"number"},"initial_score":{"type":"number"},"max":{"type":"number"},"pass":{"type":"boolean"},"cancellation_note":{"type":"string"}},"required":["name","score","initial_score","max","pass","cancellation_note"],"additionalProperties":false}},"match_percentage":{"type":"integer","minimum":0,"maximum":100},"manglik_match":{"type":"object","properties":{"boy_present":{"type":"boolean"},"girl_present":{"type":"boolean"},"status":{"type":"string","enum":["compatible","caution","mutual_cancellation"]},"note":{"type":"string"}},"required":["boy_present","girl_present","status","note"],"additionalProperties":false}},"required":["total","koots","match_percentage","manglik_match"],"additionalProperties":false},"interpretation":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["compatibility"]},"version":{"type":"string"},"language":{"type":"string","enum":["en","hi"]},"verbosity":{"type":"string","enum":["short","standard","detailed"]},"disclaimer":{"type":"string"},"overall_summary":{"type":"string"},"koot_breakdown":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"score":{"type":"number"},"initial_score":{"type":"number"},"max":{"type":"number"},"pass":{"type":"boolean"},"explanation":{"type":"string"},"cancellation_note":{"type":"string"}},"required":["name","score","initial_score","max","pass","explanation","cancellation_note"],"additionalProperties":false}},"strengths_in_match":{"type":"array","items":{"type":"string"}},"areas_to_work_on":{"type":"array","items":{"type":"string"}},"practical_advice":{"type":"array","items":{"type":"string"}}},"required":["type","version","language","verbosity","disclaimer","overall_summary","koot_breakdown","strengths_in_match","areas_to_work_on","practical_advice"],"additionalProperties":false},{"type":"null"}]},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dosha/mangal":{"post":{"summary":"Detect Mangal Dosha (presence + classical cancellation rules). Engine v2.","tags":["Doshas"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"interpretation":{"type":"object","properties":{"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"additionalProperties":false}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"present":{"type":"boolean"},"house_of_mars":{"type":"integer","minimum":1,"maximum":12},"severity":{"type":"string","enum":["none","mild","strong"]},"cancelled":{"type":"boolean"},"cancellation_reasons":{"type":"array","items":{"type":"string"}}},"required":["present","house_of_mars","severity","cancelled","cancellation_reasons"],"additionalProperties":false},"interpretation":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["mangal_dosha"]},"version":{"type":"string"},"language":{"type":"string","enum":["en","hi"]},"verbosity":{"type":"string","enum":["short","standard","detailed"]},"disclaimer":{"type":"string"},"presence_explanation":{"type":"string"},"severity_context":{"type":"string"},"traditional_remedies":{"type":"array","items":{"type":"string"}},"modern_perspective":{"type":"string"}},"required":["type","version","language","verbosity","disclaimer","presence_explanation","severity_context","traditional_remedies","modern_perspective"],"additionalProperties":false},{"type":"null"}]},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/aspects":{"post":{"summary":"Compute Vedic aspects (drishti) per planet and per house.","tags":["Aspects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"by_planet":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string"},"aspects":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}}},"required":["planet","aspects"],"additionalProperties":false}},"by_house":{"type":"array","items":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12},"aspected_by":{"type":"array","items":{"type":"string"}}},"required":["house","aspected_by"],"additionalProperties":false}}},"required":["by_planet","by_house"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dasha/vimshottari":{"post":{"summary":"Vimshottari Mahadasha sequence. Optional `levels` (1..5) drills into Antardasha → Pratyantar → Sookshma → Pran. Default 2.","tags":["Dasha"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"levels":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[2]},{"type":"number","enum":[3]},{"type":"number","enum":[4]},{"type":"number","enum":[5]}]}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dasha/yogini":{"post":{"summary":"Yogini Dasha — 8-yogini classical cycle (36 years total) starting from the Moon's nakshatra.","tags":["Dasha"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"levels":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[2]}]}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dasha/char":{"post":{"summary":"Char Dasha — Jaimini sign-based dasha. Tradition: Jaimini-Rangacharya forward-zodiacal.","tags":["Dasha"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"levels":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[2]}]}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dasha/lookup":{"post":{"summary":"Reverse lookup: given a birth input + a target date + a system (\"vimshottari\"|\"yogini\"|\"char\"), return the active dasha hierarchy.","tags":["Dasha"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"birth_input":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"date":{"type":"string","description":"Target date (ISO 8601 datetime UTC)."},"system":{"anyOf":[{"type":"string","enum":["vimshottari"]},{"type":"string","enum":["yogini"]},{"type":"string","enum":["char"]}]}},"required":["birth_input","date","system"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/panchang":{"post":{"summary":"Compute the Vedic panchang (tithi, vara, nakshatra, yoga, karana) plus sun/moon rise+set times.","tags":["Panchang"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"date":{"type":"string"},"vara":{"type":"object","properties":{"index":{"type":"number"},"name":{"type":"string"},"lord":{"type":"string"}},"required":["index","name","lord"],"additionalProperties":false},"tithi":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"paksha":{"type":"string","enum":["Shukla","Krishna"]}},"required":["index","name","paksha"],"additionalProperties":false},"nakshatra":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["index","name"],"additionalProperties":false},"yoga":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["index","name"],"additionalProperties":false},"karana":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["index","name"],"additionalProperties":false},"sunrise":{"anyOf":[{"type":"string"},{"type":"null"}]},"sunset":{"anyOf":[{"type":"string"},{"type":"null"}]},"moonrise":{"anyOf":[{"type":"string"},{"type":"null"}]},"moonset":{"anyOf":[{"type":"string"},{"type":"null"}]},"meta":{"type":"object","properties":{"location":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"],"additionalProperties":false},"tz_offset_minutes":{"type":"number"}},"required":["location","tz_offset_minutes"],"additionalProperties":false}},"required":["date","vara","tithi","nakshatra","yoga","karana","sunrise","sunset","moonrise","moonset","meta"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/muhurta/choghadiya":{"post":{"summary":"Day + night choghadiya windows for the requested date.","tags":["Muhurta"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"date":{"type":"string"},"day":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"lord":{"type":"string"},"quality":{"type":"string","enum":["auspicious","inauspicious","neutral"]}},"required":["name","start","end","lord","quality"],"additionalProperties":false}},"night":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"lord":{"type":"string"},"quality":{"type":"string","enum":["auspicious","inauspicious","neutral"]}},"required":["name","start","end","lord","quality"],"additionalProperties":false}}},"required":["date","day","night"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/muhurta/hora":{"post":{"summary":"24 planetary hour windows starting at sunrise.","tags":["Muhurta"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"date":{"type":"string"},"windows":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"lord":{"type":"string"}},"required":["name","start","end","lord"],"additionalProperties":false}}},"required":["date","windows"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/muhurta/auspicious":{"post":{"summary":"Auspicious windows: Abhijit Muhurat, Brahma Muhurat, Amrit Kaal.","tags":["Muhurta"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"date":{"type":"string"},"abhijit_muhurat":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}},"required":["name","start","end"],"additionalProperties":false},{"type":"null"}]},"brahma_muhurat":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}},"required":["name","start","end"],"additionalProperties":false},{"type":"null"}]},"amrit_kaal":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}},"required":["name","start","end"],"additionalProperties":false},{"type":"null"}]}},"required":["date","abhijit_muhurat","brahma_muhurat","amrit_kaal"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/muhurta/inauspicious":{"post":{"summary":"Inauspicious windows: Rahu Kaal, Yamaganda, Gulika.","tags":["Muhurta"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"date":{"type":"string"},"rahu_kaal":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}},"required":["name","start","end"],"additionalProperties":false},{"type":"null"}]},"yamaganda_kaal":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}},"required":["name","start","end"],"additionalProperties":false},{"type":"null"}]},"gulika_kaal":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}},"required":["name","start","end"],"additionalProperties":false},{"type":"null"}]}},"required":["date","rahu_kaal","yamaganda_kaal","gulika_kaal"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/gowri-nalla-neram":{"post":{"summary":"Gowri Nalla Neram — Tamil-tradition 8-window muhurta (day + night). 5 of 8 qualities are auspicious.","tags":["Muhurta"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dosha/kaal-sarp":{"post":{"summary":"Detect Kaal Sarp Dosha (all 7 visible planets between Rahu-Ketu axis). Returns named type when present.","tags":["Doshas"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"present":{"type":"boolean"},"partial":{"type":"boolean"},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"house_of_rahu":{"type":"integer","minimum":1,"maximum":12},"house_of_ketu":{"type":"integer","minimum":1,"maximum":12},"planets_relative_to_rahu":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"degrees_from_rahu":{"type":"number"}},"required":["name","degrees_from_rahu"],"additionalProperties":false}}},"required":["present","partial","type","house_of_rahu","house_of_ketu","planets_relative_to_rahu"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dosha/sade-sati":{"post":{"summary":"Compute Sade Sati phase for the chart at a reference moment (defaults to server now).","tags":["Doshas"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"as_of":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"as_of":{"type":"string"},"active":{"type":"boolean"},"phase":{"type":"string","enum":["not_active","rising","peak","setting","ardhashtama","ashtama"]},"natal_moon_sign":{"type":"string"},"saturn_transit_sign":{"type":"string"},"saturn_house_from_moon":{"type":"integer","minimum":1,"maximum":12}},"required":["as_of","active","phase","natal_moon_sign","saturn_transit_sign","saturn_house_from_moon"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/horoscope/daily/{sign}":{"get":{"summary":"Daily sun-sign horoscope.","tags":["Horoscope"],"parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"in":"query","name":"date","required":false},{"schema":{"default":"en","type":"string","enum":["en","hi"]},"in":"query","name":"language","required":false},{"schema":{"type":"string","enum":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]},"in":"path","name":"sign","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"type":{"type":"string","enum":["daily_horoscope"]},"version":{"type":"string"},"language":{"type":"string","enum":["en","hi"]},"verbosity":{"type":"string","enum":["short","standard","detailed"]},"sign":{"type":"string"},"date":{"type":"string"},"weekday":{"type":"string"},"summary":{"type":"string"},"focus_areas":{"type":"array","items":{"type":"string"}},"cautions":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"}},"required":["type","version","language","verbosity","sign","date","weekday","summary","focus_areas","cautions","disclaimer"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/horoscope/love/{sign}":{"get":{"summary":"Daily love-focused horoscope by sun-sign.","tags":["Horoscope"],"parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"in":"query","name":"date","required":false},{"schema":{"default":"en","type":"string","enum":["en","hi"]},"in":"query","name":"language","required":false},{"schema":{"type":"string","enum":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]},"in":"path","name":"sign","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"type":{"type":"string","enum":["love_horoscope"]},"version":{"type":"string"},"language":{"type":"string","enum":["en","hi"]},"verbosity":{"type":"string","enum":["short","standard","detailed"]},"sign":{"type":"string"},"date":{"type":"string"},"weekday":{"type":"string"},"summary":{"type":"string"},"do":{"type":"array","items":{"type":"string"}},"avoid":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"}},"required":["type","version","language","verbosity","sign","date","weekday","summary","do","avoid","disclaimer"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/horoscope/nakshatra":{"post":{"summary":"Daily reading keyed by birth nakshatra (1 of 27).","tags":["Horoscope"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nakshatra":{"type":"string","enum":["Ashwini","Bharani","Krittika","Rohini","Mrigashira","Ardra","Punarvasu","Pushya","Ashlesha","Magha","Purva Phalguni","Uttara Phalguni","Hasta","Chitra","Swati","Vishakha","Anuradha","Jyeshtha","Mula","Purva Ashadha","Uttara Ashadha","Shravana","Dhanishta","Shatabhisha","Purva Bhadrapada","Uttara Bhadrapada","Revati"]},"pada":{"type":"integer","minimum":1,"maximum":4},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"language":{"default":"en","type":"string","enum":["en","hi"]}},"required":["nakshatra"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"type":{"type":"string","enum":["nakshatra_horoscope"]},"version":{"type":"string"},"language":{"type":"string","enum":["en","hi"]},"verbosity":{"type":"string","enum":["short","standard","detailed"]},"nakshatra":{"type":"string"},"pada":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"date":{"type":"string"},"weekday":{"type":"string"},"summary":{"type":"string"},"disclaimer":{"type":"string"}},"required":["type","version","language","verbosity","nakshatra","date","weekday","summary","disclaimer"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dosha/pitra":{"post":{"summary":"Detect Pitra Dosha (ancestral karma indicators).","tags":["Doshas"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"present":{"type":"boolean"},"severity":{"type":"string","enum":["none","mild","strong"]},"score":{"type":"integer","minimum":0,"maximum":15},"triggered_rules":{"type":"array","items":{"type":"string"}},"house_of_sun":{"type":"integer","minimum":1,"maximum":12},"house_of_ninth_lord":{"type":"integer","minimum":0,"maximum":12}},"required":["present","severity","score","triggered_rules","house_of_sun","house_of_ninth_lord"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/dosha/papa-samyam":{"post":{"summary":"Compute Papa Samyam — balance of malefic placements between two charts.","tags":["Doshas"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}},"required":["person_a","person_b"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"boy":{"type":"object","properties":{"from_lagna":{"type":"integer","minimum":0,"maximum":9007199254740991},"from_moon":{"type":"integer","minimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"malefics_in_houses":{"type":"array","items":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12},"planets":{"type":"array","items":{"type":"string"}}},"required":["house","planets"],"additionalProperties":false}}},"required":["from_lagna","from_moon","total","malefics_in_houses"],"additionalProperties":false},"girl":{"type":"object","properties":{"from_lagna":{"type":"integer","minimum":0,"maximum":9007199254740991},"from_moon":{"type":"integer","minimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"malefics_in_houses":{"type":"array","items":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12},"planets":{"type":"array","items":{"type":"string"}}},"required":["house","planets"],"additionalProperties":false}}},"required":["from_lagna","from_moon","total","malefics_in_houses"],"additionalProperties":false},"difference":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["balanced","mismatch"]},"note":{"type":"string"}},"required":["boy","girl","difference","status","note"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/compatibility/porutham/nakshatra":{"post":{"summary":"Kerala-style 10-koot Nakshatra Porutham.","tags":["Compatibility"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}},"required":["person_a","person_b"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"system":{"type":"string","enum":["kerala","tamil"]},"score":{"type":"integer","minimum":0,"maximum":10},"max":{"type":"number","enum":[10]},"pass":{"type":"boolean"},"koots":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"pass":{"type":"boolean"},"reason":{"type":"string"}},"required":["name","pass","reason"],"additionalProperties":false}}},"required":["system","score","max","pass","koots"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/compatibility/porutham/thirumana":{"post":{"summary":"Tamil-style 10-koot Thirumana Porutham.","tags":["Compatibility"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}},"required":["person_a","person_b"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"system":{"type":"string","enum":["kerala","tamil"]},"score":{"type":"integer","minimum":0,"maximum":10},"max":{"type":"number","enum":[10]},"pass":{"type":"boolean"},"koots":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"pass":{"type":"boolean"},"reason":{"type":"string"}},"required":["name","pass","reason"],"additionalProperties":false}}},"required":["system","score","max","pass","koots"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/compatibility/dashakoot":{"post":{"summary":"Dashakoot — Ashtakoot 8 + Mahendra + Vedha (out of 38).","tags":["Compatibility"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}},"required":["person_a","person_b"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"total":{"type":"object","properties":{"score":{"type":"number"},"max":{"type":"number","enum":[38]},"bucket":{"type":"string","enum":["Excellent","Good","Moderate","Poor"]}},"required":["score","max","bucket"],"additionalProperties":false},"ashtakoot":{},"mahendra":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":1},"max":{"type":"number","enum":[1]},"pass":{"type":"boolean"},"reason":{"type":"string"}},"required":["score","max","pass","reason"],"additionalProperties":false},"vedha":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":1},"max":{"type":"number","enum":[1]},"pass":{"type":"boolean"},"reason":{"type":"string"}},"required":["score","max","pass","reason"],"additionalProperties":false},"match_percentage":{"type":"integer","minimum":0,"maximum":100}},"required":["total","ashtakoot","mahendra","vedha","match_percentage"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/ayanamsa":{"get":{"summary":"List supported ayanamsa systems and the engine's current ayanamsa value.","tags":["Meta"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"active":{"type":"string"},"now_utc":{"type":"string"},"ayanamsas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"display_name":{"type":"string"},"active":{"type":"boolean"},"current_value":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","display_name","active","current_value"],"additionalProperties":false}}},"required":["active","now_utc","ayanamsas"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/planets":{"post":{"summary":"Sidereal planet positions (extended) for a birth input.","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"planets":{"type":"array","items":{}},"meta":{}},"required":["planets","meta"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/houses":{"post":{"summary":"Per-house sign + lord + occupants for a birth input.","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"ascendant":{},"houses":{"type":"array","items":{}},"meta":{}},"required":["ascendant","houses","meta"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/birth-details":{"post":{"summary":"Lagna + Moon-sign + nakshatra + Sun-sign + weekday summary.","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/relationships/planets":{"post":{"summary":"Panchadha Maitri — natural + temporary + combined relationships across all 7 grahas.","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"relationships":{"type":"array","items":{}}},"required":["relationships"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/planet-nature":{"post":{"summary":"Functional benefic / malefic / yoga-karaka classification per Lagna.","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/upagraha-positions":{"post":{"summary":"Upagraha (sub-points) — Kala, Mrityu, Ardhaprahara, Yamaghantaka, Gulika, Mandi, Indrachapa, Upaketu. Canonical sunrise-anchored BPHS scheme; falls back to Lagna-offset at polar latitudes.","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"upagrahas":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["Kala","Mrityu","Ardhaprahara","Yamaghantaka","Gulika","Mandi","Indrachapa","Upaketu"]},"longitude":{"type":"number"},"sign":{"type":"string"},"degree_in_sign":{"type":"number"},"house":{"type":"integer","minimum":1,"maximum":12},"anchor_jd":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["name","longitude","sign","degree_in_sign","house","anchor_jd"],"additionalProperties":false}},"meta":{"type":"object","properties":{"scheme":{"type":"string","enum":["sunrise_anchored","lagna_offset_fallback"]},"birth_phase":{"type":"string","enum":["day","night","unknown"]},"sunrise_utc":{"anyOf":[{"type":"string"},{"type":"null"}]},"sunset_utc":{"anyOf":[{"type":"string"},{"type":"null"}]},"note":{"type":"string"}},"required":["scheme","birth_phase","sunrise_utc","sunset_utc","note"],"additionalProperties":false}},"required":["upagrahas","meta"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/strength/chandra-bala":{"post":{"summary":"Chandra Bala — per-sign strength relative to natal Moon.","tags":["Strength"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/strength/tara-bala":{"post":{"summary":"Tara Bala — per-nakshatra strength relative to natal birth star.","tags":["Strength"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/yogas":{"post":{"summary":"Detect 25 named classical yogas (Pancha Mahapurusha, Raja, Gajakesari, Neecha Bhanga, etc.).","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"total_present":{"type":"integer","minimum":0,"maximum":9007199254740991},"yogas":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"present":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","description","present","reason"],"additionalProperties":false}}},"required":["total_present","yogas"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/sudarshana-chakra":{"post":{"summary":"Sudarshana Chakra — every planet's house from Lagna, Moon, and Sun simultaneously.","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/strength/bala":{"post":{"summary":"Shad Bala — six-fold strength of every planet (BPHS Ch.27).","tags":["Strength"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/strength/bhav-bala":{"post":{"summary":"Bhav Bala — house strength + Bhav Madhya per BPHS Ch.30.","tags":["Strength"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/ashtakavarga":{"post":{"summary":"Bhinnashtakavarga — per-planet bindu chart (BPHS 76.6–76.40).","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/sarvashtakavarga":{"post":{"summary":"Sarvashtakavarga — combined bindu chart (sums to 337 per BPHS 76.46).","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/chandrashtama-periods":{"post":{"summary":"Upcoming Chandrashtama windows (Moon transiting 8th from natal Moon).","tags":["Engine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"anchor_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"count":{"default":6,"type":"integer","minimum":1,"maximum":13}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"natal_moon_sign":{"type":"string"},"chandrashtama_sign":{"type":"string"},"windows":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"sign":{"type":"string"},"duration_hours":{"type":"number"}},"required":["start","end","sign","duration_hours"],"additionalProperties":false}}},"required":["natal_moon_sign","chandrashtama_sign","windows"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/varshphal/year-chart":{"post":{"summary":"Solar-return moment + D1 year-chart cast for that instant. Foundation for all Varshphal endpoints.","tags":["Varshphal"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"year":{"type":"integer","minimum":1,"maximum":120,"description":"Year of life (1-based)."}},"required":["date","time","tz_offset_minutes","lat","lng","year"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/varshphal/muntha":{"post":{"summary":"Muntha sign + its house in the year-chart. Muntha advances one sign per year of life from the natal Lagna.","tags":["Varshphal"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"year":{"type":"integer","minimum":1,"maximum":120,"description":"Year of life (1-based)."}},"required":["date","time","tz_offset_minutes","lat","lng","year"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/varshphal/mudda-dasha":{"post":{"summary":"Mudda Dasha — year-specific Vimshottari with periods scaled to one solar year. Starts at the solar-return moment.","tags":["Varshphal"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"year":{"type":"integer","minimum":1,"maximum":120,"description":"Year of life (1-based)."}},"required":["date","time","tz_offset_minutes","lat","lng","year"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/varshphal/saham":{"post":{"summary":"Saham (Tajika sensitive points). Pass `saham` to fetch one of the 16 classical sahams; omit it to receive all.","tags":["Varshphal"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"year":{"type":"integer","minimum":1,"maximum":120,"description":"Year of life (1-based)."},"saham":{"type":"string","enum":["Punya","Vidya","Yashas","Mitra","Mahatmya","Asha","Samartha","Bhratri","Gaurava","Pitri","Rajya","Mata","Putra","Jeeva","Karma","Roga"]}},"required":["date","time","tz_offset_minutes","lat","lng","year"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/varshphal/yoga":{"post":{"summary":"Tajika yogas (11 classical) for the year-chart. Tradition: Tajika Neelakanthi.","tags":["Varshphal"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"year":{"type":"integer","minimum":1,"maximum":120,"description":"Year of life (1-based)."}},"required":["date","time","tz_offset_minutes","lat","lng","year"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/varshphal/harsha-bala":{"post":{"summary":"Harsha Bala — Tajika joy strength (max 30 per planet, threshold 15). Tradition: Tajika Neelakanthi 5.18.","tags":["Varshphal"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"year":{"type":"integer","minimum":1,"maximum":120,"description":"Year of life (1-based)."}},"required":["date","time","tz_offset_minutes","lat","lng","year"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/varshphal/panchavargeeya-bala":{"post":{"summary":"Panchavargeeya Bala — five-fold Tajika strength (max 25 per planet). Kshetra + Uchcha + Hadda + Drekkana + Navamsa.","tags":["Varshphal"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"year":{"type":"integer","minimum":1,"maximum":120,"description":"Year of life (1-based)."}},"required":["date","time","tz_offset_minutes","lat","lng","year"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/varshphal/month-chart":{"post":{"summary":"Month chart — 12 monthly divisions of the year-chart with rotating Lagna and Mudda sub-periods.","tags":["Varshphal"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"year":{"type":"integer","minimum":1,"maximum":120,"description":"Year of life (1-based)."}},"required":["date","time","tz_offset_minutes","lat","lng","year"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/kp/chart":{"post":{"summary":"Full KP chart — planets + cusps + sub-lord chains. KP-Newcomb ayanamsa, Placidus houses.","tags":["KP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/kp/planet-position":{"post":{"summary":"Planets in KP form — sign / star / sub / sub-sub-lord per planet.","tags":["KP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/kp/house-cusps":{"post":{"summary":"Placidus house cusps under KP-Newcomb ayanamsa, with sub-lord chain at each cusp.","tags":["KP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/kp/planet-significator":{"post":{"summary":"Per-planet 4-level significator chains (star tenants → self → owned-house occupants → star lord).","tags":["KP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/kp/house-significator":{"post":{"summary":"Per-house 4-level significator chains.","tags":["KP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/kp/transit":{"post":{"summary":"KP transits — current planet positions in KP sub-lord chains + matches against natal significators.","tags":["KP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"transit_at":{"type":"string"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/kp/horary":{"post":{"summary":"KP horary chart — answers a question via the querent's chosen number 1..249.","tags":["KP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"horary_number":{"type":"integer","minimum":1,"maximum":249},"question_at":{"type":"string"}},"required":["horary_number"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/lal-kitab/horoscope":{"post":{"summary":"Lal Kitab fixed-house kundli — planets + 12 houses (Joshi 1939 doctrine).","tags":["LalKitab"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/lal-kitab/planets":{"post":{"summary":"Planets in Lal Kitab form — fixed-house assignment + awake/asleep + own-house flags.","tags":["LalKitab"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/lal-kitab/houses":{"post":{"summary":"Lal Kitab 12-house structure — sign + occupants + empty-flag per house.","tags":["LalKitab"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/lal-kitab/debts":{"post":{"summary":"Detect the 7 planetary debts (Pitri, Matri, Stree, Atma, Bandhu, Putra, Karz) per Joshi 1952 rules.","tags":["LalKitab"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/lal-kitab/remedies":{"post":{"summary":"Triggered Lal Kitab remedies (and the full catalog). Optional `planet` filter scopes the response. Tradition: Joshi 1941–1952. Informational only — not medical/legal/financial advice.","tags":["LalKitab"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"planet":{"type":"string","enum":["Sun","Moon","Mars","Mercury","Jupiter","Venus","Saturn","Rahu","Ketu"]}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/numerology/pythagorean":{"post":{"summary":"Compute a single Pythagorean number (life-path, expression, soul-urge, … 32 total). Master numbers 11/22/33 are preserved.","tags":["Numerology"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"number":{"type":"string","enum":["life-path","expression","soul-urge","personality","destiny","birthday","birth-month","personal-day","personal-month","personal-year","universal-day","universal-month","universal-year","balance","attainment","bridge","challenge","capstone","cornerstone","essence","hidden-passion","inclusion-table","inner-dream","karmic-debt","karmic-lesson","maturity","period-cycle","pinnacle","planes-of-expression","rational-thought","subconscious-self","transit-cycle"]}},"required":["dob","number"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"numerology_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/numerology/pythagorean/report":{"post":{"summary":"Full Pythagorean report — every number computable from the input in one response.","tags":["Numerology"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["dob"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"numerology_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/numerology/pythagorean/cycle":{"post":{"summary":"Personal day / month / year for every date in [range.start, range.end]. Cap = 366 days per request.","tags":["Numerology"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"range":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["start","end"]}},"required":["dob","range"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"numerology_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/numerology/chaldean":{"post":{"summary":"Compute a single Chaldean number (birth-number, life-path, whole-name, daily-name-number, identity-initial-code). Cheiro 1900 letter map.","tags":["Numerology"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"number":{"type":"string","enum":["birth-number","life-path","whole-name","daily-name-number","identity-initial-code"]}},"required":["dob","number"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"numerology_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/numerology/chaldean/report":{"post":{"summary":"Full Chaldean report (birth-number + life-path + whole-name + daily-name + identity-initial).","tags":["Numerology"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["dob"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"numerology_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/numerology/report":{"post":{"summary":"Combined Pythagorean + Chaldean report.","tags":["Numerology"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["dob"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"numerology_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/numerology/compatibility":{"post":{"summary":"Ank Milan — numerology-based compatibility scoring (Cheiro / B.V. Raman tables). Scored 0..9.","tags":["Numerology"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["dob"]},"person_b":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["dob"]}},"required":["person_a","person_b"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"numerology_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/natal/chart":{"post":{"summary":"Tropical natal chart — planets + houses + Asc/MC. Defaults: Placidus, Ptolemaic aspects (no minors).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"house_system":{"type":"string","enum":["placidus","koch","equal","whole-sign","porphyry"]},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/natal/planets":{"post":{"summary":"Tropical planet positions only (no houses, no aspects).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"house_system":{"type":"string","enum":["placidus","koch","equal","whole-sign","porphyry"]},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/natal/houses":{"post":{"summary":"Tropical house cusps + Asc/MC for the chosen house system.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"house_system":{"type":"string","enum":["placidus","koch","equal","whole-sign","porphyry"]},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/natal/aspects":{"post":{"summary":"Aspect graph (intra-chart). Optional `include_minor_aspects` adds quincunx/semisextile/semisquare/sesquiquadrate.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"house_system":{"type":"string","enum":["placidus","koch","equal","whole-sign","porphyry"]},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/transit/chart":{"post":{"summary":"Transiting planet positions at `transit_at` (default: now) + transit-to-natal aspects.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"transit_at":{"type":"string"},"house_system":{"type":"string","enum":["placidus","koch","equal","whole-sign","porphyry"]},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/transit/aspects":{"post":{"summary":"Transit-to-natal aspects only (no chart envelope).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"transit_at":{"type":"string"},"house_system":{"type":"string","enum":["placidus","koch","equal","whole-sign","porphyry"]},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/synastry/aspects":{"post":{"summary":"Inter-chart aspects between two natal charts. Bodies prefixed A_/B_.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"include_minor_aspects":{"type":"boolean"}},"required":["person_a","person_b"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/composite/chart":{"post":{"summary":"Midpoint composite chart for two natals — planets + Asc/MC + internal aspect graph.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"include_minor_aspects":{"type":"boolean"}},"required":["person_a","person_b"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/progression/chart":{"post":{"summary":"Secondary progressed chart — '1 day = 1 year' technique.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"age":{"type":"number","minimum":0,"maximum":150},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng","age"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/solar-return/chart":{"post":{"summary":"Western tropical solar-return chart at age N.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"age":{"type":"integer","minimum":1,"maximum":150}},"required":["date","time","tz_offset_minutes","lat","lng","age"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/lunar-metrics":{"post":{"summary":"Sun-Moon phase angle, illumination, void-of-course, Moon sign at `at` (default: now).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"at":{"type":"string"}}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/chinese/zodiac/{year}":{"get":{"summary":"Chinese zodiac animal + element + polarity for a Gregorian year.","tags":["Western"],"parameters":[{"schema":{"type":"string","pattern":"^-?\\d{1,4}$"},"in":"path","name":"year","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/transit/planets":{"post":{"summary":"Transit planet positions only.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"transit_at":{"type":"string"},"house_system":{"type":"string","enum":["placidus","koch","equal","whole-sign","porphyry"]},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/progression/planets":{"post":{"summary":"Progressed planet positions only.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"age":{"type":"number","minimum":0,"maximum":150},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng","age"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/progression/aspects":{"post":{"summary":"Progressed aspects only.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"age":{"type":"number","minimum":0,"maximum":150},"include_minor_aspects":{"type":"boolean"}},"required":["date","time","tz_offset_minutes","lat","lng","age"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/solar-return/planets":{"post":{"summary":"Solar-return planet positions only.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"age":{"type":"integer","minimum":1,"maximum":150}},"required":["date","time","tz_offset_minutes","lat","lng","age"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/solar-return/houses":{"post":{"summary":"Solar-return houses + Asc/MC only.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"age":{"type":"integer","minimum":1,"maximum":150}},"required":["date","time","tz_offset_minutes","lat","lng","age"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/solar-return/aspects":{"post":{"summary":"Solar-return internal aspect graph.","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"age":{"type":"integer","minimum":1,"maximum":150}},"required":["date","time","tz_offset_minutes","lat","lng","age"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/synastry/chart":{"post":{"summary":"Two-chart overlay (both natals + inter-chart aspects in one envelope).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"include_minor_aspects":{"type":"boolean"}},"required":["person_a","person_b"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/composite/aspects":{"post":{"summary":"Composite-internal aspects only (no chart envelope).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"include_minor_aspects":{"type":"boolean"}},"required":["person_a","person_b"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/sun-sign/{sign}/daily":{"get":{"summary":"Daily sun-sign forecast.","tags":["Western"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"date","required":false},{"schema":{"default":"en","type":"string","enum":["en","hi"]},"in":"query","name":"language","required":false},{"schema":{"type":"string","enum":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]},"in":"path","name":"sign","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/sun-sign/{sign}/weekly":{"get":{"summary":"Weekly sun-sign forecast.","tags":["Western"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"date","required":false},{"schema":{"default":"en","type":"string","enum":["en","hi"]},"in":"query","name":"language","required":false},{"schema":{"type":"string","enum":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]},"in":"path","name":"sign","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/sun-sign/{sign}/monthly":{"get":{"summary":"Monthly sun-sign forecast.","tags":["Western"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"date","required":false},{"schema":{"default":"en","type":"string","enum":["en","hi"]},"in":"query","name":"language","required":false},{"schema":{"type":"string","enum":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]},"in":"path","name":"sign","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/zodiac-compatibility":{"post":{"summary":"Lightweight sun-sign-only compatibility (Western tradition).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sign_a":{"type":"string","enum":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]},"sign_b":{"type":"string","enum":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]}},"required":["sign_a","sign_b"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/chinese/forecast/{sign}/{year}":{"get":{"summary":"Chinese-zodiac annual forecast for a given animal in a given year.","tags":["Western"],"parameters":[{"schema":{"type":"string","enum":["Rat","Ox","Tiger","Rabbit","Dragon","Snake","Horse","Goat","Monkey","Rooster","Dog","Pig"]},"in":"path","name":"sign","required":true},{"schema":{"type":"string","pattern":"^-?\\d{1,4}$"},"in":"path","name":"year","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/reports/personality":{"post":{"summary":"Personality report (Western tropical, content-driven).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/reports/karma-destiny":{"post":{"summary":"Karma-destiny report (Western tropical, content-driven).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/reports/moon-phase":{"post":{"summary":"Moon-phase report (Western tropical, content-driven).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754},"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/reports/friendship":{"post":{"summary":"Friendship report (Western tropical, content-driven; uses synastry).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"required":["person_a","person_b"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/western/reports/romantic":{"post":{"summary":"Romantic report (Western tropical, content-driven; uses synastry).","tags":["Western"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"required":["person_a","person_b"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/tarot/draw":{"post":{"summary":"Draw a tarot spread. Deterministic given a seed; uses Rider-Waite-Smith 1909. Spreads: single | three_card | nine_card | celtic_cross.","tags":["Divination"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"spread":{"type":"string","enum":["single","three_card","nine_card","celtic_cross"]},"seed":{"type":"string","minLength":1,"maxLength":120}},"required":["spread"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"divination_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/tarot/yes-no":{"post":{"summary":"Single-card yes/no/uncertain verdict. Major arcana → confident yes|no. Minor (unreviewed content) → uncertain.","tags":["Divination"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":500},"seed":{"type":"string","minLength":1,"maxLength":120}},"required":["question"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"divination_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/biorhythm":{"post":{"summary":"4-cycle biorhythm (physical 23d / emotional 28d / intellectual 33d / spiritual 53d) for a target date.","tags":["Divination"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["dob"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"divination_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/biorhythm/moon":{"post":{"summary":"Lunar phase + tone for the target date. Synodic-month model anchored at 2000-01-06 18:14 UTC.","tags":["Divination"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dob":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"target_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["dob"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"divination_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/remedies/gemstone":{"post":{"summary":"Gemstone recommendation derived from the birth chart's lagna lord + afflicted planets. Tradition-sourced (BPHS ch. 70 / Garuda Purana); pending astrologer review.","tags":["Remedies"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"divination_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/remedies/rudraksha":{"post":{"summary":"Rudraksha recommendation derived from the birth chart's lagna lord + afflicted planets. Tradition-sourced (Padma Purana / Shiva Purana); pending astrologer review.","tags":["Remedies"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"divination_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/remedies/puja":{"post":{"summary":"Puja recommendations prioritised by active doshas → current mahadasha → lagna lord → afflicted planets. Tradition-sourced (BPHS / Garuda Purana / Padma Purana); pending astrologer review.","tags":["Remedies"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"},"divination_version":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/reports/compatibility":{"post":{"summary":"Asynchronously generate a Gun Milan compatibility report. Returns a report id; poll GET /v1/reports/:id until status='ready'.","tags":["Reports"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"interpretation":{"type":"object","properties":{"language":{"default":"en","type":"string","enum":["en","hi"]},"verbosity":{"default":"standard","type":"string","enum":["short","standard","detailed"]}},"additionalProperties":false}},"required":["person_a","person_b"],"additionalProperties":false}}}},"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["compatibility"]},"status":{"type":"string","enum":["pending"]}},"required":["id","type","status"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/compatibility/batch":{"post":{"summary":"Asynchronously score up to 500 Ashtakoot pairs in a single call. Returns a report id; poll GET /v1/reports/:id for results sorted by score desc.","tags":["Compatibility"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pairs":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"person_a":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"person_b":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}}},"required":["id","person_a","person_b"],"additionalProperties":false}}},"required":["pairs"],"additionalProperties":false}}}},"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["compatibility_batch"]},"status":{"type":"string","enum":["pending"]},"count":{"type":"integer","minimum":1,"maximum":500}},"required":["id","type","status","count"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/reports/varshphal-multi-year":{"post":{"summary":"Asynchronously generate a multi-year Varshphal report. Cap = 25 years per call. Per year: year-chart + muntha + mudda + Tajika yogas + Harsha + Panchavargeeya + month chart.","tags":["Reports"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"birth":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"1993-07-04"},"time":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","example":"09:27:11"},"tz_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":"Offset from UTC in minutes (e.g., 330 for IST)","example":330},"lat":{"type":"number","minimum":-90,"maximum":90,"example":31.7473},"lng":{"type":"number","minimum":-180,"maximum":180,"example":77.7754}},"required":["date","time","tz_offset_minutes","lat","lng"],"additionalProperties":false,"example":{"date":"1993-07-04","time":"09:27:11","tz_offset_minutes":330,"lat":31.7473,"lng":77.7754}},"start_age":{"default":1,"type":"integer","minimum":1,"maximum":120},"count":{"default":5,"type":"integer","minimum":1,"maximum":25}},"required":["birth"],"additionalProperties":false}}}},"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["varshphal_multi_year"]},"status":{"type":"string","enum":["pending"]},"count":{"type":"number"}},"required":["id","type","status","count"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/reports/{id}":{"get":{"summary":"Fetch the status (and, when ready, the payload) of a previously-enqueued report.","tags":["Reports"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["chart_summary","compatibility","compatibility_batch","mangal_dosha","varshphal_multi_year","kp_chart_report","lal_kitab_report","numerology_report","western_natal_report","western_synastry_report","western_composite_report","western_solar_return_report","western_progression_report","western_transit_report","western_personality_report","western_friendship_report","western_romantic_report","western_karma_destiny_report","western_moon_phase_report","chinese_year_report"]},"status":{"type":"string","enum":["pending","ready","failed"]},"result":{"anyOf":[{},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","status"],"additionalProperties":false},"interpretation":{"type":"object","properties":{"type":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"language":{"type":"string","enum":["en"]},"version":{"type":"string"}},"required":["type","summary","highlights","language","version"],"additionalProperties":false},"meta":{"type":"object","properties":{"engine_version":{"type":"string"},"computed_at":{"type":"string"}},"required":["engine_version","computed_at"],"additionalProperties":false}},"required":["request_id","data","interpretation","meta"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["request_id","error"],"additionalProperties":false}}}}}}},"/v1/openapi.json":{"get":{"responses":{"200":{"description":"Default Response"}}}}},"security":[{"bearerAuth":[]}]}