{"openapi":"3.1.0","info":{"title":"Novastrum API","description":"REST API for astronomical and astrological calculations","license":{"name":"MIT OR Apache-2.0"},"version":"1.0.0"},"servers":[{"url":"https://api.novastrum.io"}],"paths":{"/api/v1/account/charts":{"get":{"tags":["account"],"summary":"List saved charts","description":"Returns all charts saved by the authenticated user.","operationId":"list_charts","parameters":[{"name":"page","in":"query","description":"Page number (default 1)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"page_size","in":"query","description":"Items per page (default 20, max 100)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"chart_type","in":"query","description":"Filter by chart type","required":false,"schema":{"type":"string"}},{"name":"tag","in":"query","description":"Filter by tag","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of saved charts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChartsResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"api_key":[]}]},"post":{"tags":["account"],"summary":"Save a new chart","description":"Saves a chart to the user's account for later retrieval.","operationId":"save_chart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveChartRequest"}}},"required":true},"responses":{"201":{"description":"Chart saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedChart"}}}},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"}},"security":[{"api_key":[]}]}},"/api/v1/account/charts/{chart_id}":{"get":{"tags":["account"],"summary":"Get a saved chart by ID","description":"Returns a specific saved chart.","operationId":"get_chart","parameters":[{"name":"chart_id","in":"path","description":"Chart ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Chart details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedChart"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Chart not found"}},"security":[{"api_key":[]}]},"delete":{"tags":["account"],"summary":"Delete a saved chart","description":"Permanently deletes a saved chart.","operationId":"delete_chart","parameters":[{"name":"chart_id","in":"path","description":"Chart ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Chart deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Chart not found"}},"security":[{"api_key":[]}]},"patch":{"tags":["account"],"summary":"Update a saved chart","description":"Updates an existing saved chart.","operationId":"update_chart","parameters":[{"name":"chart_id","in":"path","description":"Chart ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateChartRequest"}}},"required":true},"responses":{"200":{"description":"Chart updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedChart"}}}},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"404":{"description":"Chart not found"}},"security":[{"api_key":[]}]}},"/api/v1/account/keys":{"get":{"tags":["account"],"summary":"List API keys","description":"Returns all API keys belonging to the authenticated user.","operationId":"list_keys","responses":{"200":{"description":"List of API keys","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListKeysResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"api_key":[]}]},"post":{"tags":["account"],"summary":"Create a new API key","description":"Creates a new API key for the authenticated user. The raw key is only\nreturned once - make sure to store it securely!","operationId":"create_key","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}},"required":true},"responses":{"200":{"description":"API key created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyResponse"}}}},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"}},"security":[{"api_key":[]}]}},"/api/v1/account/keys/revoke":{"post":{"tags":["account"],"summary":"Revoke an API key","description":"Permanently deactivates an API key. This cannot be undone.","operationId":"revoke_key","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeKeyRequest"}}},"required":true},"responses":{"200":{"description":"Key revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"404":{"description":"Key not found"}},"security":[{"api_key":[]}]}},"/api/v1/account/profile":{"get":{"tags":["account"],"summary":"Get current user profile","description":"Returns the authenticated user's profile information.","operationId":"get_profile","responses":{"200":{"description":"User profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"api_key":[]}]}},"/api/v1/account/usage":{"get":{"tags":["account"],"summary":"Get usage statistics","description":"Returns the authenticated user's API usage statistics.","operationId":"get_usage","responses":{"200":{"description":"Usage statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageStatsResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"api_key":[]}]}},"/api/v1/astronomy/events":{"post":{"tags":["astronomy"],"summary":"Get upcoming celestial events","description":"Returns a list of upcoming astronomical events like eclipses, retrogrades, etc.","operationId":"get_celestial_events","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CelestialEventsRequest"}}},"required":true},"responses":{"200":{"description":"Celestial events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CelestialEventsResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/astronomy/sky":{"post":{"tags":["astronomy"],"summary":"Get current sky view","description":"Returns planetary positions and astronomical data for a specific location and time.","operationId":"get_sky_view","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkyViewRequest"}}},"required":true},"responses":{"200":{"description":"Sky view data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkyViewResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/billing/invoices":{"get":{"tags":["billing"],"summary":"List invoices","operationId":"list_invoices","responses":{"200":{"description":"List of invoices","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoicesResponse"}}}},"401":{"description":"Unauthorized"}}}},"/api/v1/billing/payment-methods":{"get":{"tags":["billing"],"summary":"List payment methods","operationId":"list_payment_methods","responses":{"200":{"description":"List of payment methods","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodsResponse"}}}},"401":{"description":"Unauthorized"}}}},"/api/v1/billing/plans":{"get":{"tags":["billing"],"summary":"Get available subscription plans","operationId":"list_plans","responses":{"200":{"description":"Available subscription plans","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlansResponse"}}}}},"security":[]}},"/api/v1/billing/setup-intent":{"post":{"tags":["billing"],"summary":"Create a setup intent for adding a new payment method","operationId":"create_setup_intent","responses":{"200":{"description":"Setup intent created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupIntentResponse"}}}},"401":{"description":"Unauthorized"}}}},"/api/v1/billing/subscription":{"get":{"tags":["billing"],"summary":"Get current subscription status","operationId":"get_subscription","responses":{"200":{"description":"Current subscription status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionStatus"}}}},"401":{"description":"Unauthorized"}}},"post":{"tags":["billing"],"summary":"Create a new subscription","operationId":"create_subscription","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Subscription created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubscriptionResponse"}}}},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"}}},"patch":{"tags":["billing"],"summary":"Update subscription (upgrade, downgrade, or cancel)","operationId":"update_subscription","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Subscription updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionStatus"}}}},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"}}}},"/api/v1/billing/usage":{"get":{"tags":["billing"],"summary":"Get detailed usage statistics","operationId":"get_usage_stats","responses":{"200":{"description":"Usage statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageStats"}}}},"401":{"description":"Unauthorized"}}}},"/api/v1/calculate/aspects":{"post":{"tags":["calculate"],"summary":"Calculate aspects between planets","description":"Returns aspects found between provided planetary positions.","operationId":"calculate_aspects","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AspectRequest"}}},"required":true},"responses":{"200":{"description":"Aspects calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AspectResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/astrocartography":{"post":{"tags":["calculate"],"summary":"Calculate astrocartography lines","operationId":"calculate_astrocartography","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AstrocartographyRequest"}}},"required":true},"responses":{"200":{"description":"Astrocartography calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AstrocartographyResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/chart":{"post":{"tags":["calculate"],"summary":"Calculate full chart","description":"Returns complete chart data including planets, houses, and aspects.","operationId":"calculate_chart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartRequest"}}},"required":true},"responses":{"200":{"description":"Chart calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/composite":{"post":{"tags":["calculate"],"summary":"Calculate composite chart","description":"Creates a composite chart using either midpoint or Davison methods.","operationId":"calculate_composite","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeRequest"}}},"required":true},"responses":{"200":{"description":"Composite chart calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/dasha":{"post":{"tags":["calculate"],"summary":"Calculate Vedic Dasha (planetary periods)","operationId":"calculate_dasha","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashaRequest"}}},"required":true},"responses":{"200":{"description":"Dasha periods calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashaResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/electional":{"post":{"tags":["calculate"],"summary":"Find auspicious election times","operationId":"calculate_electional","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionalRequest"}}},"required":true},"responses":{"200":{"description":"Election analysis completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElectionalResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/fixed-stars":{"post":{"tags":["calculate"],"summary":"Get fixed star positions and conjunctions","operationId":"calculate_fixed_stars","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FixedStarsRequest"}}},"required":true},"responses":{"200":{"description":"Fixed star positions calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FixedStarsResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/harmonics":{"post":{"tags":["calculate"],"summary":"Calculate harmonic charts","operationId":"calculate_harmonics","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarmonicsRequest"}}},"required":true},"responses":{"200":{"description":"Harmonic charts calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarmonicsResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/horary":{"post":{"tags":["calculate"],"summary":"Analyze horary chart","operationId":"calculate_horary","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoraryRequest"}}},"required":true},"responses":{"200":{"description":"Horary chart analyzed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoraryResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/houses":{"post":{"tags":["calculate"],"summary":"Calculate house cusps","description":"Returns house cusps for a given time and location.","operationId":"calculate_houses","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HouseRequest"}}},"required":true},"responses":{"200":{"description":"House cusps calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HouseResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/lunar-return":{"post":{"tags":["calculate"],"summary":"Calculate lunar return chart","description":"Finds the exact moment when the Moon returns to its natal position.","operationId":"calculate_lunar_return","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LunarReturnRequest"}}},"required":true},"responses":{"200":{"description":"Lunar return calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LunarReturnResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/midpoints":{"post":{"tags":["calculate"],"summary":"Calculate planetary midpoints and activations","operationId":"calculate_midpoints","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MidpointsRequest"}}},"required":true},"responses":{"200":{"description":"Midpoints calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MidpointsResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/moon-phase":{"post":{"tags":["calculate"],"summary":"Calculate moon phase","description":"Returns detailed moon phase information for a given date/time.","operationId":"calculate_moon_phase","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoonPhaseRequest"}}},"required":true},"responses":{"200":{"description":"Moon phase calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoonPhaseResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/planetary-hours":{"post":{"tags":["calculate"],"summary":"Calculate planetary hours","description":"Returns the current planetary hour and day ruler based on traditional planetary hours.","operationId":"calculate_planetary_hours","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanetaryHourRequest"}}},"required":true},"responses":{"200":{"description":"Planetary hours calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanetaryHourResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/calculate/planets":{"post":{"tags":["calculate"],"summary":"Calculate planetary positions","description":"Returns the positions of planets for a given Julian Day.","operationId":"calculate_planets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanetRequest"}}},"required":true},"responses":{"200":{"description":"Planetary positions calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanetResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Invalid request data","required":["BadRequest"],"properties":{"BadRequest":{"type":"string","description":"Invalid request data"}}},{"type":"object","description":"Unauthorized request","required":["Unauthorized"],"properties":{"Unauthorized":{"type":"string","description":"Unauthorized request"}}},{"type":"object","description":"Resource not found","required":["NotFound"],"properties":{"NotFound":{"type":"string","description":"Resource not found"}}},{"type":"object","description":"Calculation error","required":["CalculationError"],"properties":{"CalculationError":{"type":"string","description":"Calculation error"}}},{"type":"object","description":"Chart rendering error","required":["ChartError"],"properties":{"ChartError":{"type":"string","description":"Chart rendering error"}}},{"type":"object","description":"Interpretation error","required":["InterpretationError"],"properties":{"InterpretationError":{"type":"string","description":"Interpretation error"}}},{"type":"object","description":"Internal server error","required":["Internal"],"properties":{"Internal":{"type":"string","description":"Internal server error"}}}],"description":"API error type"}}}}}}},"/api/v1/calculate/profections":{"post":{"tags":["calculate"],"summary":"Calculate annual profections","description":"Traditional technique advancing the chart one sign per year of life.","operationId":"calculate_profections","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfectionsRequest"}}},"required":true},"responses":{"200":{"description":"Profections calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfectionsResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/progressions":{"post":{"tags":["calculate"],"summary":"Calculate secondary progressions","description":"Secondary progressions use the \"day for a year\" method: each day after birth\nrepresents one year of life.","operationId":"calculate_progressions","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProgressionsRequest"}}},"required":true},"responses":{"200":{"description":"Progressions calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProgressionsResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/solar-arc":{"post":{"tags":["calculate"],"summary":"Calculate solar arc directions","description":"Solar arc directions advance all natal positions by the Sun's progression rate.","operationId":"calculate_solar_arc","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolarArcRequest"}}},"required":true},"responses":{"200":{"description":"Solar arc directions calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolarArcResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/solar-return":{"post":{"tags":["calculate"],"summary":"Calculate solar return chart","description":"Finds the exact moment when the Sun returns to its natal position for a given year.","operationId":"calculate_solar_return","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolarReturnRequest"}}},"required":true},"responses":{"200":{"description":"Solar return calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolarReturnResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/transits":{"post":{"tags":["calculate"],"summary":"Calculate current transits","description":"Returns current planetary positions and aspects to natal chart.","operationId":"calculate_transits","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitRequest"}}},"required":true},"responses":{"200":{"description":"Transits calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/calculate/yogas":{"post":{"tags":["calculate"],"summary":"Analyze Vedic Yogas (planetary combinations)","operationId":"calculate_yogas","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YogaRequest"}}},"required":true},"responses":{"200":{"description":"Yogas analyzed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YogaResponse"}}}},"400":{"description":"Invalid request parameters"}}}},"/api/v1/charts/horizon":{"post":{"tags":["charts"],"summary":"Render horizon view as SVG","description":"Generates an SVG showing the sky as seen from a specific location,\nwith the horizon at the edge and zenith at the center.","operationId":"render_horizon_view","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HorizonViewRequest"}}},"required":true},"responses":{"200":{"description":"Horizon view rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkyViewSvgResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/charts/natal":{"post":{"tags":["charts"],"summary":"Render natal chart as SVG","description":"Generates an SVG natal chart from the provided chart data.","operationId":"render_natal_chart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NatalChartRequest"}}},"required":true},"responses":{"200":{"description":"Chart rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartSvgResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/charts/natal/template":{"post":{"tags":["charts"],"summary":"Render natal chart with a full ChartDesignTemplate","description":"Accepts a complete template JSON object (from @astrocalc/chart-template)\nproviding full control over colors, typography, ring ordering, and display.","operationId":"render_natal_chart_with_template","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NatalChartWithTemplateRequest"}}},"required":true},"responses":{"200":{"description":"Chart rendered with template","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartSvgResponse"}}}},"400":{"description":"Invalid request or template"}}}},"/api/v1/charts/skyview":{"post":{"tags":["charts"],"summary":"Render sky view as SVG","description":"Generates an SVG star map with stars, planets, and constellation lines.\nSupports multiple projection types: Stereographic, Orthographic, AzimuthalEquidistant,\nEquirectangular, and Mollweide.","operationId":"render_sky_view","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkyViewSvgRequest"}}},"required":true},"responses":{"200":{"description":"Sky view rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkyViewSvgResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/charts/synastry":{"post":{"tags":["charts"],"summary":"Render synastry chart as SVG","description":"Generates a bi-wheel synastry chart from two charts.","operationId":"render_synastry_chart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SynastryChartRequest"}}},"required":true},"responses":{"200":{"description":"Synastry chart rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartSvgResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/charts/synastry/template":{"post":{"tags":["charts"],"summary":"Render synastry chart with a custom ChartDesignTemplate","operationId":"render_synastry_chart_with_template","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SynastryWithTemplateRequest"}}},"required":true},"responses":{"200":{"description":"Synastry chart rendered with template","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartSvgResponse"}}}},"400":{"description":"Invalid request or template"}}}},"/api/v1/charts/templates":{"get":{"tags":["charts"],"summary":"List available chart design templates","description":"Returns the built-in default templates. User-created templates\nare managed via the web app's template library.","operationId":"list_templates","responses":{"200":{"description":"Template list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateListResponse"}}}}}}},"/api/v1/charts/transit":{"post":{"tags":["charts"],"summary":"Render transit chart as SVG","description":"Generates a chart with natal positions (inner) and transit positions (outer).","operationId":"render_transit_chart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitChartRequest"}}},"required":true},"responses":{"200":{"description":"Transit chart rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartSvgResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/charts/transit/template":{"post":{"tags":["charts"],"summary":"Render transit chart with a custom ChartDesignTemplate","operationId":"render_transit_chart_with_template","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitWithTemplateRequest"}}},"required":true},"responses":{"200":{"description":"Transit chart rendered with template","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartSvgResponse"}}}},"400":{"description":"Invalid request or template"}}}},"/api/v1/charts/vedic":{"post":{"tags":["charts"],"summary":"Render a Vedic (Jyotish) chart","description":"Returns an SVG chart in North Indian, South Indian, or East Indian style.","operationId":"render_vedic_chart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VedicChartRequest"}}},"required":true},"responses":{"200":{"description":"Vedic chart rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VedicChartResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/config/create":{"post":{"tags":["config"],"summary":"Create a custom configuration","description":"Creates a configuration from the provided settings, optionally starting from a preset.","operationId":"create_config","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfigRequest"}}},"required":true},"responses":{"200":{"description":"Configuration created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfigResponse"}}}},"400":{"description":"Invalid configuration"}}}},"/api/v1/config/default":{"get":{"tags":["config"],"summary":"Get default configuration","description":"Returns the default (Western Modern) configuration.","operationId":"get_default_config","responses":{"200":{"description":"Default configuration returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfigResponse"}}}}}}},"/api/v1/config/options":{"get":{"tags":["config"],"summary":"Get available configuration options","description":"Returns all available house systems, languages, styles, ayanamsas, and presets.","operationId":"get_available_options","responses":{"200":{"description":"Available options returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableOptionsResponse"}}}}}}},"/api/v1/config/preset":{"post":{"tags":["config"],"summary":"Get a preset configuration","description":"Returns the full configuration for a named preset.","operationId":"get_preset_config","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresetConfigRequest"}}},"required":true},"responses":{"200":{"description":"Preset configuration returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfigResponse"}}}},"400":{"description":"Invalid preset name"}}}},"/api/v1/config/validate":{"post":{"tags":["config"],"summary":"Validate a configuration","description":"Checks if the provided configuration is valid without creating it.","operationId":"validate_config","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateConfigRequest"}}},"required":true},"responses":{"200":{"description":"Validation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResponse"}}}}}}},"/api/v1/interpret/ai-prompt":{"post":{"tags":["interpret"],"summary":"Build AI prompt for interpretation","description":"Generates system and user prompts for AI-powered interpretation.","operationId":"build_ai_prompt","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiPromptRequest"}}},"required":true},"responses":{"200":{"description":"AI prompt generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiPromptResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/best-day":{"post":{"tags":["interpret"],"summary":"Calculate best days for an activity","description":"Returns ranked days based on astrological factors.","operationId":"calculate_best_day","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BestDayRequest"}}},"required":true},"responses":{"200":{"description":"Best days calculated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BestDayResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/comparison/compare":{"post":{"tags":["interpret"],"summary":"Compare multiple charts","description":"Performs comprehensive comparison of two or more charts including:\n- Side-by-side planet positions\n- Element and modality balance\n- Inter-chart aspects\n- Compatibility scores by category","operationId":"compare_charts_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartComparisonRequest"}}},"required":true},"responses":{"200":{"description":"Chart comparison generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChartComparisonResponse"}}}},"400":{"description":"Invalid request - need at least 2 charts"}}}},"/api/v1/interpret/comparison/quick-score":{"post":{"tags":["interpret"],"summary":"Get quick compatibility score","description":"Returns a fast overall compatibility percentage between two charts\nwithout full detailed analysis.","operationId":"quick_compatibility_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickCompatibilityRequest"}}},"required":true},"responses":{"200":{"description":"Quick compatibility score generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickCompatibilityResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/comparison/report":{"post":{"tags":["interpret"],"summary":"Generate comparison report","description":"Creates a detailed text report comparing two or more charts.","operationId":"comparison_report_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComparisonReportRequest"}}},"required":true},"responses":{"200":{"description":"Comparison report generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComparisonReportResponse"}}}},"400":{"description":"Invalid request - need at least 2 charts"}}}},"/api/v1/interpret/composite":{"post":{"tags":["interpret"],"summary":"Get composite chart interpretation","description":"Returns comprehensive interpretation for a composite (midpoint) chart.","operationId":"interpret_composite","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Composite chart interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/composite/aspect":{"post":{"tags":["interpret"],"summary":"Get composite aspect interpretation","description":"Returns interpretation for a composite chart aspect.","operationId":"interpret_composite_aspect_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeAspectRequest"}}},"required":true},"responses":{"200":{"description":"Composite aspect interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeAspectInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/composite/moon":{"post":{"tags":["interpret"],"summary":"Get composite Moon interpretation","description":"Returns interpretation for composite Moon placement.","operationId":"interpret_composite_moon_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeMoonRequest"}}},"required":true},"responses":{"200":{"description":"Composite Moon interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositePlanetInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/composite/sun":{"post":{"tags":["interpret"],"summary":"Get composite Sun interpretation","description":"Returns interpretation for composite Sun placement.","operationId":"interpret_composite_sun_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeSunRequest"}}},"required":true},"responses":{"200":{"description":"Composite Sun interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositePlanetInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/composite/venus":{"post":{"tags":["interpret"],"summary":"Get composite Venus interpretation","description":"Returns interpretation for composite Venus placement.","operationId":"interpret_composite_venus_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositeVenusRequest"}}},"required":true},"responses":{"200":{"description":"Composite Venus interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompositePlanetInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/daily":{"post":{"tags":["interpret"],"summary":"Generate daily horoscope","description":"Returns a daily horoscope for a sun sign.","operationId":"interpret_daily","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailyHoroscopeRequest"}}},"required":true},"responses":{"200":{"description":"Daily horoscope generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/dasha":{"post":{"tags":["interpret"],"summary":"Get Dasha period interpretation","description":"Returns interpretation for a Vimshottari Dasha planetary period.","operationId":"interpret_dasha","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashaInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Dasha interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashaInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/dasha/timeline":{"post":{"tags":["interpret"],"summary":"Get Dasha timeline with upcoming transitions and predictions","description":"Returns a timeline of Dasha period changes with interpretations\nfor the specified time range.","operationId":"get_dasha_timeline","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashaTimelineRequest"}}},"required":true},"responses":{"200":{"description":"Dasha timeline generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashaTimelineResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/lunar/calendar":{"post":{"tags":["interpret"],"summary":"Get lunar calendar entry","description":"Returns combined phase and Moon sign interpretation for a specific day.","operationId":"interpret_lunar_calendar_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LunarCalendarRequest"}}},"required":true},"responses":{"200":{"description":"Lunar calendar entry generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LunarCalendarResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/lunar/gardening":{"post":{"tags":["interpret"],"summary":"Get lunar gardening guidance","description":"Returns gardening recommendations based on lunar phase and Moon sign.","operationId":"interpret_lunar_gardening_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LunarGardeningRequest"}}},"required":true},"responses":{"200":{"description":"Lunar gardening guidance generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LunarGardeningResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/lunar/phase":{"post":{"tags":["interpret"],"summary":"Get lunar phase interpretation","description":"Returns interpretation for a specific lunar phase.","operationId":"interpret_lunar_phase_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LunarPhaseInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Lunar phase interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LunarPhaseInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/lunar/sign":{"post":{"tags":["interpret"],"summary":"Get Moon sign interpretation","description":"Returns interpretation for Moon in a specific zodiac sign.","operationId":"interpret_moon_sign_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoonSignInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Moon sign interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoonSignInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/lunar/void":{"get":{"tags":["interpret"],"summary":"Get void of course Moon interpretation","description":"Returns guidance for void of course Moon periods.","operationId":"interpret_void_of_course_endpoint","responses":{"200":{"description":"Void of course interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoidOfCourseResponse"}}}}}}},"/api/v1/interpret/monthly":{"post":{"tags":["interpret"],"summary":"Generate monthly horoscope","description":"Returns a monthly forecast for a sun sign.","operationId":"interpret_monthly","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonthlyHoroscopeRequest"}}},"required":true},"responses":{"200":{"description":"Monthly horoscope generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/nakshatra":{"post":{"tags":["interpret"],"summary":"Get Nakshatra interpretation","description":"Returns detailed interpretation for a lunar Nakshatra based on Moon position.","operationId":"interpret_nakshatra","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NakshatraInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Nakshatra interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NakshatraInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/natal":{"post":{"tags":["interpret"],"summary":"Generate natal chart interpretation","description":"Returns interpretation text for a natal chart.","operationId":"interpret_natal","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NatalInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/synastry":{"post":{"tags":["interpret"],"summary":"Generate synastry interpretation","description":"Returns interpretation for relationship compatibility.","operationId":"interpret_synastry","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SynastryInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Synastry interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/timing/activities":{"get":{"tags":["interpret"],"summary":"Get all activity timing guidance","description":"Returns timing recommendations for all activity types.","operationId":"get_all_activity_timing","responses":{"200":{"description":"All activity guidance generated","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityGuidanceResponse"}}}}}}}},"/api/v1/interpret/timing/activity":{"post":{"tags":["interpret"],"summary":"Get activity timing guidance","description":"Returns timing recommendations for a specific activity type.","operationId":"interpret_activity_timing","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGuidanceRequest"}}},"required":true},"responses":{"200":{"description":"Activity timing guidance generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGuidanceResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/timing/day":{"post":{"tags":["interpret"],"summary":"Get day ruler interpretation","description":"Returns interpretation for a day's planetary ruler.","operationId":"interpret_day_ruler_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DayRulerRequest"}}},"required":true},"responses":{"200":{"description":"Day ruler interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DayRulerResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/timing/days":{"get":{"tags":["interpret"],"summary":"Get all day ruler interpretations","description":"Returns interpretations for all 7 days of the week.","operationId":"get_all_day_rulers_endpoint","responses":{"200":{"description":"All day ruler interpretations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DayRulerResponse"}}}}}}}},"/api/v1/interpret/timing/hour":{"post":{"tags":["interpret"],"summary":"Get planetary hour interpretation","description":"Returns interpretation for a planetary hour.","operationId":"interpret_planetary_hour_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimingPlanetaryHourRequest"}}},"required":true},"responses":{"200":{"description":"Planetary hour interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimingPlanetaryHourResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/timing/hours":{"get":{"tags":["interpret"],"summary":"Get all planetary hour interpretations","description":"Returns interpretations for all 7 planetary hours.","operationId":"get_all_planetary_hours_endpoint","responses":{"200":{"description":"All planetary hour interpretations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TimingPlanetaryHourResponse"}}}}}}}},"/api/v1/interpret/timing/phase":{"post":{"tags":["interpret"],"summary":"Get Moon phase timing interpretation","description":"Returns timing interpretation for a lunar phase.","operationId":"interpret_moon_phase_timing_endpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoonPhaseTimingRequest"}}},"required":true},"responses":{"200":{"description":"Moon phase timing interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoonPhaseTimingResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/timing/phases":{"get":{"tags":["interpret"],"summary":"Get all Moon phase timing interpretations","description":"Returns timing interpretations for all 8 lunar phases.","operationId":"get_all_moon_phase_timings_endpoint","responses":{"200":{"description":"All Moon phase timing interpretations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoonPhaseTimingResponse"}}}}}}}},"/api/v1/interpret/timing/quality":{"post":{"tags":["interpret"],"summary":"Get timing quality rating","description":"Returns a quality rating for a given electional score.","operationId":"interpret_timing_quality","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimingQualityRequest"}}},"required":true},"responses":{"200":{"description":"Timing quality rating generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimingQualityResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/timing/void-of-course":{"get":{"tags":["interpret"],"summary":"Get Void of Course timing interpretation","description":"Returns timing guidance for Void of Course Moon periods.","operationId":"interpret_void_of_course_timing_endpoint","responses":{"200":{"description":"Void of Course timing interpretation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoidOfCourseTimingResponse"}}}}}}},"/api/v1/interpret/vedic":{"post":{"tags":["interpret"],"summary":"Get complete Vedic chart interpretation","description":"Returns comprehensive Vedic interpretation including Nakshatras, Dasha, and Yogas.","operationId":"interpret_vedic_chart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VedicChartInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Vedic chart interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VedicChartInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/weekly":{"post":{"tags":["interpret"],"summary":"Generate weekly horoscope","description":"Returns a weekly forecast for a sun sign.","operationId":"interpret_weekly","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeeklyHoroscopeRequest"}}},"required":true},"responses":{"200":{"description":"Weekly horoscope generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/yearly":{"post":{"tags":["interpret"],"summary":"Generate yearly horoscope","description":"Returns a yearly forecast for a sun sign.","operationId":"interpret_yearly","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YearlyHoroscopeRequest"}}},"required":true},"responses":{"200":{"description":"Yearly horoscope generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterpretationResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/interpret/yoga":{"post":{"tags":["interpret"],"summary":"Get Yoga interpretation","description":"Returns interpretation for a specific Vedic Yoga (planetary combination).","operationId":"interpret_yoga","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YogaInterpretRequest"}}},"required":true},"responses":{"200":{"description":"Yoga interpretation generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YogaInterpretResponse"}}}},"400":{"description":"Invalid request"}}}},"/api/v1/reports/generate":{"post":{"tags":["reports"],"summary":"Generate a report","description":"Generates a report in the specified format using the given template and chart data.","operationId":"generate_report","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReportRequest"}}},"required":true},"responses":{"200":{"description":"Report generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReportResponse"}}}},"400":{"description":"Invalid request"},"404":{"description":"Template not found"}}}},"/api/v1/reports/templates":{"get":{"tags":["reports"],"summary":"List available report templates","description":"Returns all available report templates with their requirements.","operationId":"list_templates","responses":{"200":{"description":"Available templates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplatesResponse"}}}}}}},"/api/v1/timezone":{"get":{"tags":["calculate"],"summary":"Time zone at a place","description":"Returns the IANA time zone at the coordinates. With `datetime` (a local\nwall-clock time \"YYYY-MM-DDTHH:MM\") it also returns that moment in UTC and\nthe offset in force then, including daylight saving time.","operationId":"get_timezone","parameters":[{"name":"latitude","in":"query","description":"Geographic latitude","required":true,"schema":{"type":"number","format":"double"}},{"name":"longitude","in":"query","description":"Geographic longitude","required":true,"schema":{"type":"number","format":"double"}},{"name":"datetime","in":"query","description":"Optional local wall-clock time \"YYYY-MM-DDTHH:MM\" to convert to UTC","required":false,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"Time zone found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimezoneResponse"}}}},"400":{"description":"Invalid coordinates or local time"}},"security":[{"api_key":[]}]}},"/api/v1/webhooks":{"get":{"tags":["webhooks"],"summary":"List registered webhooks","operationId":"list_webhooks","responses":{"200":{"description":"List of webhooks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhooksResponse"}}}},"401":{"description":"Unauthorized"}}}},"/api/v1/webhooks/delete":{"post":{"tags":["webhooks"],"summary":"Delete a registered webhook","operationId":"delete_webhook","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookRequest"}}},"required":true},"responses":{"200":{"description":"Webhook deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Webhook not found"}}}},"/api/v1/webhooks/register":{"post":{"tags":["webhooks"],"summary":"Register a new webhook endpoint (for customers to receive events)","operationId":"register_webhook","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterWebhookRequest"}}},"required":true},"responses":{"200":{"description":"Webhook registered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookInfo"}}}},"400":{"description":"Invalid webhook URL"},"401":{"description":"Unauthorized"}}}},"/api/v1/webhooks/stripe":{"post":{"tags":["webhooks"],"summary":"Handle Stripe webhook events","description":"This endpoint receives webhook events from Stripe and verifies the signature\nbefore processing the event. The signature is verified using the Stripe webhook\nsecret configured in the application.","operationId":"handle_stripe_webhook","requestBody":{"description":"Raw Stripe webhook event JSON","content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"Webhook processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"400":{"description":"Invalid webhook payload"},"401":{"description":"Invalid webhook signature"}},"security":[]}},"/api/v1/webhooks/{webhook_id}":{"patch":{"tags":["webhooks"],"summary":"Update a registered webhook","operationId":"update_webhook","parameters":[{"name":"webhook_id","in":"path","description":"Webhook ID to update","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookRequest"}}},"required":true},"responses":{"200":{"description":"Webhook updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookInfo"}}}},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"404":{"description":"Webhook not found"}}}},"/health":{"get":{"tags":["health"],"summary":"Health check endpoint","description":"Returns the current health status of the API.","operationId":"health_check","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}}},"components":{"schemas":{"AcgInterpretationGuide":{"type":"object","description":"Guide for interpreting ACG","required":["mc_meanings","ic_meanings","asc_meanings","dsc_meanings"],"properties":{"asc_meanings":{"type":"array","items":{"$ref":"#/components/schemas/PlanetLineMeaning"},"description":"ASC line meanings by planet"},"dsc_meanings":{"type":"array","items":{"$ref":"#/components/schemas/PlanetLineMeaning"},"description":"DSC line meanings by planet"},"ic_meanings":{"type":"array","items":{"$ref":"#/components/schemas/PlanetLineMeaning"},"description":"IC line meanings by planet"},"mc_meanings":{"type":"array","items":{"$ref":"#/components/schemas/PlanetLineMeaning"},"description":"MC line meanings by planet"}}},"AcgLine":{"type":"object","description":"A single ACG line","required":["line_type","planet","points","interpretation","keywords"],"properties":{"interpretation":{"type":"string","description":"Line interpretation"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords"},"line_type":{"type":"string","description":"Line type (MC, IC, ASC, DSC)"},"planet":{"type":"string","description":"Planet"},"points":{"type":"array","items":{"$ref":"#/components/schemas/GeoPoint"},"description":"Line points (latitude, longitude pairs for drawing)"}}},"AcgLineSet":{"type":"object","description":"Set of ACG lines for one planet","required":["planet","mc_line","ic_line","asc_line","dsc_line"],"properties":{"asc_line":{"$ref":"#/components/schemas/AcgLine","description":"ASC line (Ascendant rising)"},"dsc_line":{"$ref":"#/components/schemas/AcgLine","description":"DSC line (Descendant setting)"},"ic_line":{"$ref":"#/components/schemas/AcgLine","description":"IC line (Imum Coeli)"},"mc_line":{"$ref":"#/components/schemas/AcgLine","description":"MC line (Midheaven culminating)"},"planet":{"type":"string","description":"Planet name"}}},"ActivityGuidanceRequest":{"type":"object","description":"Request for activity timing guidance","required":["activity"],"properties":{"activity":{"type":"string","description":"Activity type (business, marriage, travel, surgery, legal, creative,\ncommunication, study, spiritual, planting, harvest, construction,\nnegotiations, parties, medical)","example":"business"}}},"ActivityGuidanceResponse":{"type":"object","description":"Response with activity timing guidance","required":["activity","description","best_moon_signs","avoid_moon_signs","best_phases","ruling_planet","best_days","best_hours","timing_advice","traditional_notes","keywords"],"properties":{"activity":{"type":"string","description":"Activity type"},"avoid_moon_signs":{"type":"array","items":{"type":"string"},"description":"Moon signs to avoid for this activity"},"best_days":{"type":"array","items":{"type":"string"},"description":"Best days of the week"},"best_hours":{"type":"array","items":{"type":"string"},"description":"Best planetary hours"},"best_moon_signs":{"type":"array","items":{"type":"string"},"description":"Best Moon signs for this activity"},"best_phases":{"type":"array","items":{"type":"string"},"description":"Best lunar phases for this activity"},"description":{"type":"string","description":"Description of the activity category"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords for this activity"},"ruling_planet":{"type":"string","description":"Ruling planet for this activity"},"timing_advice":{"type":"string","description":"General timing advice"},"traditional_notes":{"type":"string","description":"Traditional astrological notes"}}},"AgeHarmonicRequest":{"type":"object","description":"Request for age harmonic calculation","required":["birth_datetime","latitude","longitude"],"properties":{"age":{"type":["integer","null"],"format":"int32","description":"Target age (or current if not specified)","minimum":0},"birth_datetime":{"type":"string","description":"Birth date/time (ISO format)"},"include_aspects":{"type":"boolean","description":"Include aspects"},"latitude":{"type":"number","format":"double","description":"Latitude"},"longitude":{"type":"number","format":"double","description":"Longitude"}}},"AgeHarmonicResponse":{"type":"object","description":"Age harmonic response","required":["birth_datetime","age","chart","interpretation"],"properties":{"age":{"type":"integer","format":"int32","description":"Age used for calculation","minimum":0},"birth_datetime":{"type":"string","description":"Birth datetime"},"chart":{"$ref":"#/components/schemas/HarmonicChartInfo","description":"Harmonic chart for this age"},"interpretation":{"type":"string","description":"Age-specific interpretation"}}},"AiChartContextInput":{"type":"object","description":"Chart context for AI prompt","required":["planets"],"properties":{"aspects":{"type":"array","items":{"$ref":"#/components/schemas/InterpretAspectInput"},"description":"Aspects"},"birth_date":{"type":["string","null"],"description":"Birth date"},"midheaven_sign":{"type":["integer","null"],"format":"int32","description":"Midheaven sign (1-12)","minimum":0},"name":{"type":["string","null"],"description":"Person's name"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/InterpretPlanetInput"},"description":"Planets"},"rising_sign":{"type":["integer","null"],"format":"int32","description":"Rising sign (1-12)","minimum":0}}},"AiPromptRequest":{"type":"object","description":"Request for AI prompt generation","required":["chart"],"properties":{"chart":{"$ref":"#/components/schemas/AiChartContextInput","description":"Chart context"},"custom_instructions":{"type":["string","null"],"description":"Custom instructions"},"focus_areas":{"type":"array","items":{"type":"string"},"description":"Focus areas"},"language":{"type":"string","description":"Language"},"report_type":{"type":"string","description":"Report type: \"natal_overview\", \"personality\", \"career\", etc."},"style":{"type":"string","description":"Style"}}},"AiPromptResponse":{"type":"object","description":"AI prompt response","required":["system_prompt","user_prompt","report_type","style","language"],"properties":{"language":{"type":"string","description":"Language"},"max_tokens":{"type":["integer","null"],"format":"int32","description":"Max tokens","minimum":0},"recommended_model":{"type":["string","null"],"description":"Recommended model"},"report_type":{"type":"string","description":"Report type"},"style":{"type":"string","description":"Style"},"system_prompt":{"type":"string","description":"System prompt for AI"},"temperature":{"type":["number","null"],"format":"float","description":"Temperature"},"user_prompt":{"type":"string","description":"User prompt for AI"}}},"AngularPlanet":{"type":"object","description":"Angular planet at location","required":["planet","angle","orb","interpretation","strong_influence"],"properties":{"angle":{"type":"string","description":"Angle type (MC, IC, ASC, DSC)"},"interpretation":{"type":"string","description":"Interpretation"},"orb":{"type":"number","format":"double","description":"Orb from exact angularity"},"planet":{"type":"string","description":"Planet name"},"strong_influence":{"type":"boolean","description":"Is this planet's influence strong here"}}},"ApiKeyInfo":{"type":"object","description":"API key information (without the secret)","required":["id","key_prefix","name","scopes","is_active","created_at","request_count"],"properties":{"created_at":{"type":"string","description":"When the key was created"},"id":{"type":"string","description":"Key ID"},"is_active":{"type":"boolean","description":"Whether the key is active"},"key_prefix":{"type":"string","description":"Key prefix for identification"},"last_used_at":{"type":["string","null"],"description":"When the key was last used"},"name":{"type":"string","description":"Key name"},"request_count":{"type":"integer","format":"int64","description":"Request count for current billing period","minimum":0},"scopes":{"type":"array","items":{"type":"string"},"description":"Granted scopes"}}},"AspectConfigResponse":{"type":"object","description":"Aspect settings in response","required":["use_major","use_minor","orbs"],"properties":{"orbs":{"$ref":"#/components/schemas/AspectOrbsInput","description":"Orb values"},"use_major":{"type":"boolean","description":"Use major aspects"},"use_minor":{"type":"boolean","description":"Use minor aspects"}}},"AspectData":{"type":"object","description":"Individual aspect data","required":["planet1","planet2","aspect_type","angle","orb","applying"],"properties":{"angle":{"type":"number","format":"double","description":"Exact aspect angle"},"applying":{"type":"boolean","description":"Is applying (getting closer)"},"aspect_type":{"type":"string","description":"Aspect type"},"orb":{"type":"number","format":"double","description":"Actual orb"},"planet1":{"type":"string","description":"First planet"},"planet2":{"type":"string","description":"Second planet"}}},"AspectOrbConfig":{"type":"object","description":"Custom orb configuration","properties":{"conjunction":{"type":"number","format":"double","description":"Conjunction orb"},"opposition":{"type":"number","format":"double","description":"Opposition orb"},"sextile":{"type":"number","format":"double","description":"Sextile orb"},"square":{"type":"number","format":"double","description":"Square orb"},"trine":{"type":"number","format":"double","description":"Trine orb"}}},"AspectOrbsInput":{"type":"object","description":"Aspect orbs configuration","required":["conjunction","opposition","trine","square","sextile"],"properties":{"conjunction":{"type":"number","format":"double","description":"Conjunction orb (degrees)","example":10.0},"opposition":{"type":"number","format":"double","description":"Opposition orb (degrees)","example":10.0},"quincunx":{"type":"number","format":"double","description":"Quincunx orb (degrees)"},"semi_sextile":{"type":"number","format":"double","description":"Semi-sextile orb (degrees)"},"semi_square":{"type":"number","format":"double","description":"Semi-square orb (degrees)"},"sesquiquadrate":{"type":"number","format":"double","description":"Sesquiquadrate orb (degrees)"},"sextile":{"type":"number","format":"double","description":"Sextile orb (degrees)","example":6.0},"square":{"type":"number","format":"double","description":"Square orb (degrees)","example":8.0},"trine":{"type":"number","format":"double","description":"Trine orb (degrees)","example":8.0}}},"AspectRequest":{"type":"object","description":"Request for aspect calculation","required":["planets"],"properties":{"aspect_types":{"type":"array","items":{"type":"string"},"description":"Aspect types to check (optional, defaults to major aspects)"},"orbs":{"oneOf":[{"$ref":"#/components/schemas/AspectOrbConfig","description":"Custom orbs (optional)"},{"type":"null"}]},"planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPositionInput"},"description":"Planetary positions to analyze"}}},"AspectResponse":{"type":"object","description":"Aspect calculation response","required":["count","aspects"],"properties":{"aspects":{"type":"array","items":{"$ref":"#/components/schemas/AspectData"},"description":"Aspect data"},"count":{"type":"integer","description":"Number of aspects found","minimum":0}}},"AstrocartographyRequest":{"type":"object","description":"Request for astrocartography analysis","required":["birth_datetime","birth_latitude","birth_longitude"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time (ISO format)"},"birth_latitude":{"type":"number","format":"double","description":"Birth latitude"},"birth_longitude":{"type":"number","format":"double","description":"Birth longitude"},"include_parans":{"type":"boolean","description":"Include paran lines"},"latitude_range":{"type":["array","null"],"items":false,"prefixItems":[{"type":"number","format":"double"},{"type":"number","format":"double"}],"description":"Latitude range for map (optional, defaults to global)"},"longitude_range":{"type":["array","null"],"items":false,"prefixItems":[{"type":"number","format":"double"},{"type":"number","format":"double"}],"description":"Longitude range for map (optional, defaults to global)"},"paran_orb":{"type":"number","format":"double","description":"Orb for paran calculations"},"planets":{"type":"array","items":{"type":"string"},"description":"Planets to include (empty = all)"},"resolution":{"type":"number","format":"double","description":"Resolution in degrees for line calculations"},"target_location":{"oneOf":[{"$ref":"#/components/schemas/TargetLocationInput","description":"Specific location to analyze (optional)"},{"type":"null"}]}}},"AstrocartographyResponse":{"type":"object","description":"Astrocartography response","required":["birth_datetime","birth_location","julian_day","lines","parans","power_places","interpretation_guide"],"properties":{"birth_datetime":{"type":"string","description":"Birth datetime"},"birth_location":{"$ref":"#/components/schemas/LocationData","description":"Birth location"},"interpretation_guide":{"$ref":"#/components/schemas/AcgInterpretationGuide","description":"General interpretation guidance"},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/AcgLineSet"},"description":"ACG lines for each planet"},"parans":{"type":"array","items":{"$ref":"#/components/schemas/ParanPoint"},"description":"Paran points (where lines cross)"},"power_places":{"type":"array","items":{"$ref":"#/components/schemas/PowerPlace"},"description":"Power places summary"},"target_analysis":{"oneOf":[{"$ref":"#/components/schemas/LocationAnalysis","description":"Target location analysis (if location provided)"},{"type":"null"}]}}},"AvailableOptionsResponse":{"type":"object","description":"Available options response","required":["house_systems","languages","styles","ayanamsas","presets"],"properties":{"ayanamsas":{"type":"array","items":{"type":"string"},"description":"Available ayanamsa systems (for sidereal)"},"house_systems":{"type":"array","items":{"type":"string"},"description":"Available house systems"},"languages":{"type":"array","items":{"type":"string"},"description":"Available languages"},"presets":{"type":"array","items":{"$ref":"#/components/schemas/ConfigPresetInfo"},"description":"Available presets"},"styles":{"type":"array","items":{"type":"string"},"description":"Available interpretation styles"}}},"AvoidPeriod":{"type":"object","description":"Period to avoid","required":["start","end","reason","severity"],"properties":{"end":{"type":"string","description":"End datetime"},"reason":{"type":"string","description":"Reason"},"severity":{"type":"string","description":"Severity (warning, strong_warning)"},"start":{"type":"string","description":"Start datetime"}}},"BestDayRequest":{"type":"object","description":"Request for best day calculation","required":["activity","start_date","end_date"],"properties":{"activity":{"type":"string","description":"Activity type: \"business\", \"love\", \"travel\", \"health\", \"creativity\", \"moving\", \"legal\", \"spiritual\""},"count":{"type":"integer","description":"Number of results to return","minimum":0},"end_date":{"type":"string","description":"End date (ISO format)"},"natal_planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPositionInput"},"description":"User's natal planet positions (optional for personalized results)"},"start_date":{"type":"string","description":"Start date (ISO format)"}}},"BestDayResponse":{"type":"object","description":"Best day calculation response","required":["activity","start_date","end_date","best_days","avoid_days"],"properties":{"activity":{"type":"string","description":"Activity type"},"avoid_days":{"type":"array","items":{"$ref":"#/components/schemas/RankedDay"},"description":"Days to avoid"},"best_days":{"type":"array","items":{"$ref":"#/components/schemas/RankedDay"},"description":"Best days ranked"},"end_date":{"type":"string"},"start_date":{"type":"string","description":"Date range"}}},"CalculationConfigResponse":{"type":"object","description":"Calculation settings in response","required":["house_system","zodiac_type","include_outer_planets","include_chiron","include_lilith","include_nodes","node_type"],"properties":{"ayanamsa":{"type":["string","null"],"description":"Ayanamsa (if sidereal)"},"house_system":{"type":"string","description":"House system"},"include_chiron":{"type":"boolean","description":"Include Chiron"},"include_lilith":{"type":"boolean","description":"Include Lilith"},"include_nodes":{"type":"boolean","description":"Include nodes"},"include_outer_planets":{"type":"boolean","description":"Include outer planets"},"node_type":{"type":"string","description":"Node type (true/mean)"},"zodiac_type":{"type":"string","description":"Zodiac type"}}},"CategoryUsage":{"type":"object","description":"Usage by category","required":["category","requests","percentage"],"properties":{"category":{"type":"string","description":"Category name"},"percentage":{"type":"number","format":"double","description":"Percentage of total"},"requests":{"type":"integer","format":"int64","description":"Request count"}}},"CelestialEvent":{"type":"object","description":"A celestial event","required":["event_type","datetime","description","planets"],"properties":{"datetime":{"type":"string","description":"Date/time of the event"},"description":{"type":"string","description":"Event description"},"details":{"type":["string","null"],"description":"Additional details"},"event_type":{"type":"string","description":"Event type"},"planets":{"type":"array","items":{"type":"string"},"description":"Planets involved"}}},"CelestialEventsRequest":{"type":"object","description":"Request for celestial events","properties":{"end_date":{"type":["string","null"],"description":"End date (ISO format, defaults to 30 days from start)"},"event_types":{"type":"array","items":{"type":"string"},"description":"Event types to include (empty = all)"},"start_date":{"type":["string","null"],"description":"Start date (ISO format, defaults to today)"}}},"CelestialEventsResponse":{"type":"object","description":"Response for celestial events","required":["start_date","end_date","events","count"],"properties":{"count":{"type":"integer","description":"Total count","minimum":0},"end_date":{"type":"string","description":"End of the period"},"events":{"type":"array","items":{"$ref":"#/components/schemas/CelestialEvent"},"description":"Events in the period"},"start_date":{"type":"string","description":"Start of the period"}}},"ChartAspectInput":{"type":"object","description":"Aspect input for chart rendering","required":["planet1","planet2","aspect_type"],"properties":{"aspect_type":{"type":"string","description":"Aspect type"},"planet1":{"type":"string","description":"First planet"},"planet2":{"type":"string","description":"Second planet"}}},"ChartComparisonRequest":{"type":"object","description":"Request for chart comparison","required":["charts"],"properties":{"charts":{"type":"array","items":{"$ref":"#/components/schemas/ComparisonChartInput"},"description":"Charts to compare (minimum 2)"},"include_minor_aspects":{"type":"boolean","description":"Include minor aspects (default: false)"},"orb_tolerance":{"type":["number","null"],"format":"double","description":"Aspect orb tolerance in degrees (default: 8.0)"}}},"ChartComparisonResponse":{"type":"object","description":"Full chart comparison response","required":["chart_names","planet_positions","element_balance","modality_balance","inter_aspects","compatibility_scores","summary"],"properties":{"chart_names":{"type":"array","items":{"type":"string"},"description":"Chart names compared"},"compatibility_scores":{"type":"array","items":{"$ref":"#/components/schemas/CompatibilityScoreResponse"},"description":"Compatibility scores for each pair"},"element_balance":{"type":"array","items":{"$ref":"#/components/schemas/ElementBalanceResponse"},"description":"Element balance for each chart"},"inter_aspects":{"type":"array","items":{"$ref":"#/components/schemas/InterChartAspectsResponse"},"description":"Inter-chart aspects for each pair"},"modality_balance":{"type":"array","items":{"$ref":"#/components/schemas/ModalityBalanceResponse"},"description":"Modality balance for each chart"},"planet_positions":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPositionEntry"},"description":"Side-by-side planet positions"},"summary":{"$ref":"#/components/schemas/ComparisonSummaryResponse","description":"Summary analysis"}}},"ChartDataInput":{"type":"object","description":"Simplified chart data input for rendering","required":["planets","ascendant","midheaven"],"properties":{"ascendant":{"type":"number","format":"double","description":"Ascendant longitude"},"aspects":{"type":"array","items":{"$ref":"#/components/schemas/ChartAspectInput"},"description":"Aspects (optional)"},"cusps":{"type":"array","items":{"type":"number","format":"double"},"description":"House cusps (12 values)"},"house_system":{"type":["string","null"],"description":"House system name"},"midheaven":{"type":"number","format":"double","description":"Midheaven longitude"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/ChartPlanetInput"},"description":"Planet positions"}}},"ChartPlanetInput":{"type":"object","description":"Planet input for chart rendering","required":["name","longitude"],"properties":{"longitude":{"type":"number","format":"double","description":"Ecliptic longitude"},"name":{"type":"string","description":"Planet name"},"retrograde":{"type":"boolean","description":"Is retrograde"}}},"ChartRequest":{"type":"object","description":"Request for full chart calculation","required":["datetime","latitude","longitude"],"properties":{"datetime":{"type":"string","description":"Birth date/time as ISO string or Julian Day","example":"1990-06-15T14:30:00Z"},"house_system":{"type":"string","description":"House system code","example":"P"},"include_aspects":{"type":"boolean","description":"Calculate aspects"},"latitude":{"type":"number","format":"double","description":"Geographic latitude","example":52.52},"longitude":{"type":"number","format":"double","description":"Geographic longitude","example":13.405},"major_aspects_only":{"type":"boolean","description":"Only look for the major aspects; false adds semi-sextile, semi-square,\nsesquiquadrate and quincunx"},"planets":{"type":"array","items":{"type":"string"},"description":"Planets to include"},"timezone":{"type":["string","null"],"description":"Read `datetime` as local wall-clock time (\"YYYY-MM-DDTHH:MM\", no offset) in\nthis time zone: an IANA name (\"Europe/Berlin\") or \"auto\" for the zone at the\ncoordinates. Daylight saving time follows the rules in force at that date.","example":"auto"}}},"ChartResponse":{"type":"object","description":"Full chart response","required":["julian_day","datetime","location","planets","houses"],"properties":{"aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/AspectData"},"description":"Aspects between planets (if requested)"},"datetime":{"type":"string","description":"Input datetime (ISO format)"},"houses":{"$ref":"#/components/schemas/HouseResponse","description":"House cusps"},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"location":{"$ref":"#/components/schemas/LocationData","description":"Location used"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPosition"},"description":"Planetary positions"},"timezone":{"oneOf":[{"$ref":"#/components/schemas/TimezoneInfo","description":"How a local `datetime` was read (only when the request set `timezone`)"},{"type":"null"}]}}},"ChartSvgResponse":{"type":"object","description":"Chart SVG response","required":["svg","width","height","style"],"properties":{"height":{"type":"integer","format":"int32","description":"Height","minimum":0},"style":{"type":"string","description":"Style used"},"svg":{"type":"string","description":"SVG content"},"width":{"type":"integer","format":"int32","description":"Width","minimum":0}}},"ComparisonChartInput":{"type":"object","description":"A chart entry for comparison","required":["name","planets"],"properties":{"ascendant":{"type":["number","null"],"format":"double","description":"Ascendant longitude (optional)"},"birth_date":{"type":["string","null"],"description":"Birth date for display (optional)","example":"August 8, 1985"},"midheaven":{"type":["number","null"],"format":"double","description":"Midheaven longitude (optional)"},"name":{"type":"string","description":"Name/label for this chart (e.g., \"Person A\", \"John\")","example":"Matze"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/ComparisonPlanetInput"},"description":"Planet positions"}}},"ComparisonPlanetInput":{"type":"object","description":"Planet data for chart comparison","required":["name","longitude"],"properties":{"house":{"type":["integer","null"],"format":"int32","description":"House placement (1-12, optional)","example":5,"minimum":0},"is_retrograde":{"type":"boolean","description":"Whether the planet is retrograde"},"longitude":{"type":"number","format":"double","description":"Longitude in degrees (0-360)","example":135.5},"name":{"type":"string","description":"Planet name (Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto)","example":"Sun"}}},"ComparisonReportRequest":{"type":"object","description":"Chart comparison report request","required":["charts"],"properties":{"charts":{"type":"array","items":{"$ref":"#/components/schemas/ComparisonChartInput"},"description":"Charts to compare (minimum 2)"},"format":{"type":["string","null"],"description":"Report format (text, markdown)"}}},"ComparisonReportResponse":{"type":"object","description":"Chart comparison report response","required":["chart_names","report","format"],"properties":{"chart_names":{"type":"array","items":{"type":"string"},"description":"Chart names compared"},"format":{"type":"string","description":"Report format"},"report":{"type":"string","description":"Generated report content"}}},"ComparisonSummaryResponse":{"type":"object","description":"Summary of the comparison","required":["overall","similarities","differences","dynamics","advice"],"properties":{"advice":{"type":"array","items":{"type":"string"},"description":"Advice/recommendations"},"differences":{"type":"array","items":{"type":"string"},"description":"Key differences"},"dynamics":{"type":"array","items":{"type":"string"},"description":"Relationship dynamics"},"overall":{"type":"string","description":"Overall compatibility description"},"similarities":{"type":"array","items":{"type":"string"},"description":"Key similarities"}}},"CompatibilityCategoriesResponse":{"type":"object","description":"Compatibility scores by category","required":["emotional","communication","romance","values","ambition","intellectual","physical","spiritual"],"properties":{"ambition":{"type":"number","format":"double","description":"Ambition/goals score (0-100)"},"communication":{"type":"number","format":"double","description":"Communication score (0-100)"},"emotional":{"type":"number","format":"double","description":"Emotional connection score (0-100)"},"intellectual":{"type":"number","format":"double","description":"Intellectual connection score (0-100)"},"physical":{"type":"number","format":"double","description":"Physical/passion score (0-100)"},"romance":{"type":"number","format":"double","description":"Romance/attraction score (0-100)"},"spiritual":{"type":"number","format":"double","description":"Spiritual connection score (0-100)"},"values":{"type":"number","format":"double","description":"Values alignment score (0-100)"}}},"CompatibilityScoreResponse":{"type":"object","description":"Compatibility score between two charts","required":["chart_a","chart_b","overall","categories","strengths","challenges","themes"],"properties":{"categories":{"$ref":"#/components/schemas/CompatibilityCategoriesResponse","description":"Category-specific scores"},"challenges":{"type":"array","items":{"type":"string"},"description":"Relationship challenges"},"chart_a":{"type":"string","description":"First chart name"},"chart_b":{"type":"string","description":"Second chart name"},"overall":{"type":"number","format":"double","description":"Overall compatibility score (0-100)"},"strengths":{"type":"array","items":{"type":"string"},"description":"Relationship strengths"},"themes":{"type":"array","items":{"type":"string"},"description":"Key themes in the relationship"}}},"CompositeAngleInterpretResponse":{"type":"object","description":"Composite angle (Ascendant/Midheaven) interpretation response","required":["angle","sign","composite_meaning","interpretation"],"properties":{"angle":{"type":"string","description":"Angle name (Ascendant or Midheaven)"},"composite_meaning":{"type":"string","description":"What this angle represents in composite charts"},"interpretation":{"type":"string","description":"Interpretation of this placement"},"sign":{"type":"string","description":"Sign on the angle"}}},"CompositeAspectInput":{"type":"object","description":"Input for a composite aspect","required":["planet1","planet2","aspect_type","orb"],"properties":{"aspect_type":{"type":"string","description":"Aspect type (Conjunction, Trine, Square, etc.)","example":"Trine"},"orb":{"type":"number","format":"double","description":"Orb in degrees","example":3.5},"planet1":{"type":"string","description":"First planet","example":"Sun"},"planet2":{"type":"string","description":"Second planet","example":"Moon"}}},"CompositeAspectInterpretResponse":{"type":"object","description":"Composite aspect interpretation response","required":["planet1","planet2","aspect_type","orb","is_harmonious","interpretation","relationship_effect"],"properties":{"aspect_type":{"type":"string","description":"Aspect type name"},"interpretation":{"type":"string","description":"Interpretation of this aspect for the relationship"},"is_harmonious":{"type":"boolean","description":"Whether this is a harmonious aspect"},"orb":{"type":"number","format":"double","description":"Orb in degrees"},"planet1":{"type":"string","description":"First planet in the aspect"},"planet2":{"type":"string","description":"Second planet in the aspect"},"relationship_effect":{"type":"string","description":"What this aspect brings to the relationship"}}},"CompositeAspectRequest":{"type":"object","description":"Request for composite aspect interpretation","required":["planet1","planet2","aspect_type","orb"],"properties":{"aspect_type":{"type":"string","description":"Aspect type (Conjunction, Trine, Square, etc.)","example":"Trine"},"orb":{"type":"number","format":"double","description":"Orb in degrees","example":3.5},"planet1":{"type":"string","description":"First planet","example":"Sun"},"planet2":{"type":"string","description":"Second planet","example":"Moon"}}},"CompositeHouses":{"type":"object","description":"Composite houses","required":["house_system","ascendant","ascendant_sign","midheaven","midheaven_sign","cusps"],"properties":{"ascendant":{"type":"number","format":"double","description":"Composite Ascendant"},"ascendant_sign":{"type":"string","description":"Ascendant sign"},"cusps":{"type":"array","items":{"$ref":"#/components/schemas/HouseCusp"},"description":"House cusps"},"house_system":{"type":"string","description":"House system used"},"midheaven":{"type":"number","format":"double","description":"Composite Midheaven"},"midheaven_sign":{"type":"string","description":"Midheaven sign"}}},"CompositeInterpretRequest":{"type":"object","description":"Request for composite chart interpretation","required":["sun_longitude","sun_house","moon_longitude","moon_house"],"properties":{"ascendant_longitude":{"type":["number","null"],"format":"double","description":"Composite Ascendant longitude (optional)"},"aspects":{"type":"array","items":{"$ref":"#/components/schemas/CompositeAspectInput"},"description":"Composite aspects"},"mars_house":{"type":["integer","null"],"format":"int32","description":"Composite Mars house (optional)","minimum":0},"mars_longitude":{"type":["number","null"],"format":"double","description":"Composite Mars longitude (optional)"},"mercury_house":{"type":["integer","null"],"format":"int32","description":"Composite Mercury house (optional)","minimum":0},"mercury_longitude":{"type":["number","null"],"format":"double","description":"Composite Mercury longitude (optional)"},"moon_house":{"type":"integer","format":"int32","description":"Composite Moon house (1-12)","example":2,"minimum":0},"moon_longitude":{"type":"number","format":"double","description":"Composite Moon longitude (0-360)","example":45.3},"person1_name":{"type":["string","null"],"description":"Person 1 name (optional)"},"person2_name":{"type":["string","null"],"description":"Person 2 name (optional)"},"style":{"type":"string","description":"Interpretation style"},"sun_house":{"type":"integer","format":"int32","description":"Composite Sun house (1-12)","example":5,"minimum":0},"sun_longitude":{"type":"number","format":"double","description":"Composite Sun longitude (0-360)","example":125.5},"venus_house":{"type":["integer","null"],"format":"int32","description":"Composite Venus house (optional)","minimum":0},"venus_longitude":{"type":["number","null"],"format":"double","description":"Composite Venus longitude (optional)"}}},"CompositeInterpretResponse":{"type":"object","description":"Response with composite chart interpretation","required":["title","relationship_theme","composite_sun","composite_moon","composite_aspects","strengths","challenges","growth_areas"],"properties":{"challenges":{"type":"array","items":{"type":"string"},"description":"Relationship challenges"},"composite_ascendant":{"oneOf":[{"$ref":"#/components/schemas/CompositeAngleInterpretResponse","description":"Composite Ascendant interpretation (if provided)"},{"type":"null"}]},"composite_aspects":{"type":"array","items":{"$ref":"#/components/schemas/CompositeAspectInterpretResponse"},"description":"Composite aspect interpretations"},"composite_mars":{"oneOf":[{"$ref":"#/components/schemas/CompositePlanetInterpretResponse","description":"Composite Mars interpretation (if provided)"},{"type":"null"}]},"composite_mercury":{"oneOf":[{"$ref":"#/components/schemas/CompositePlanetInterpretResponse","description":"Composite Mercury interpretation (if provided)"},{"type":"null"}]},"composite_moon":{"$ref":"#/components/schemas/CompositePlanetInterpretResponse","description":"Composite Moon interpretation"},"composite_sun":{"$ref":"#/components/schemas/CompositePlanetInterpretResponse","description":"Composite Sun interpretation"},"composite_venus":{"oneOf":[{"$ref":"#/components/schemas/CompositePlanetInterpretResponse","description":"Composite Venus interpretation (if provided)"},{"type":"null"}]},"growth_areas":{"type":"array","items":{"type":"string"},"description":"Growth opportunities"},"person1_name":{"type":["string","null"],"description":"Person 1 name"},"person2_name":{"type":["string","null"],"description":"Person 2 name"},"relationship_theme":{"type":"string","description":"Overall relationship theme"},"strengths":{"type":"array","items":{"type":"string"},"description":"Relationship strengths"},"title":{"type":"string","description":"Report title"}}},"CompositeMoonRequest":{"type":"object","description":"Request for composite Moon interpretation","required":["moon_longitude","house"],"properties":{"house":{"type":"integer","format":"int32","description":"Composite Moon house (1-12)","example":2,"minimum":0},"moon_longitude":{"type":"number","format":"double","description":"Composite Moon longitude (0-360)","example":45.3}}},"CompositePlanetInterpretResponse":{"type":"object","description":"Composite planet interpretation response","required":["planet","sign","house","composite_meaning","interpretation","keywords"],"properties":{"composite_meaning":{"type":"string","description":"What this planet represents in composite charts"},"house":{"type":"integer","format":"int32","description":"House the composite planet is in","minimum":0},"interpretation":{"type":"string","description":"Interpretation of this placement for the relationship"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords for this composite placement"},"planet":{"type":"string","description":"Planet name"},"sign":{"type":"string","description":"Sign the composite planet is in"}}},"CompositePlanetPosition":{"type":"object","description":"Composite planet position","required":["name","person1_longitude","person2_longitude","composite_longitude","sign","sign_name","degree_in_sign","house"],"properties":{"composite_longitude":{"type":"number","format":"double","description":"Composite (midpoint) longitude"},"degree_in_sign":{"type":"number","format":"double","description":"Degree within sign"},"house":{"type":"integer","format":"int32","description":"House placement (1-12)","minimum":0},"name":{"type":"string","description":"Planet name"},"person1_longitude":{"type":"number","format":"double","description":"Person 1's longitude"},"person2_longitude":{"type":"number","format":"double","description":"Person 2's longitude"},"sign":{"type":"integer","format":"int32","description":"Sign (0-11)","minimum":0},"sign_name":{"type":"string","description":"Sign name"}}},"CompositeRequest":{"type":"object","description":"Request for composite chart calculation","required":["person1_datetime","person1_latitude","person1_longitude","person2_datetime","person2_latitude","person2_longitude"],"properties":{"house_system":{"type":"string","description":"House system code"},"include_aspects":{"type":"boolean","description":"Include aspects"},"method":{"type":"string","description":"Composite method: \"midpoint\" (default), \"davison\""},"person1_datetime":{"type":"string","description":"First person's birth date/time (ISO format)"},"person1_latitude":{"type":"number","format":"double","description":"First person's latitude"},"person1_longitude":{"type":"number","format":"double","description":"First person's longitude"},"person2_datetime":{"type":"string","description":"Second person's birth date/time (ISO format)"},"person2_latitude":{"type":"number","format":"double","description":"Second person's latitude"},"person2_longitude":{"type":"number","format":"double","description":"Second person's longitude"}}},"CompositeResponse":{"type":"object","description":"Composite chart response","required":["method","planets","houses","relationship_themes"],"properties":{"aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/AspectData"},"description":"Aspects (if requested)"},"davison_datetime":{"type":["string","null"],"description":"For Davison method: calculated midpoint date/time"},"davison_location":{"oneOf":[{"$ref":"#/components/schemas/LocationData","description":"For Davison method: calculated midpoint location"},{"type":"null"}]},"houses":{"$ref":"#/components/schemas/CompositeHouses","description":"Composite house cusps"},"method":{"type":"string","description":"Composite method used"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/CompositePlanetPosition"},"description":"Composite planetary positions"},"relationship_themes":{"type":"array","items":{"$ref":"#/components/schemas/RelationshipTheme"},"description":"Relationship themes"}}},"CompositeSunRequest":{"type":"object","description":"Request for composite Sun interpretation","required":["sun_longitude","house"],"properties":{"house":{"type":"integer","format":"int32","description":"Composite Sun house (1-12)","example":5,"minimum":0},"sun_longitude":{"type":"number","format":"double","description":"Composite Sun longitude (0-360)","example":125.5}}},"CompositeVenusRequest":{"type":"object","description":"Request for composite Venus interpretation","required":["venus_longitude","house"],"properties":{"house":{"type":"integer","format":"int32","description":"Composite Venus house (1-12)","example":7,"minimum":0},"venus_longitude":{"type":"number","format":"double","description":"Composite Venus longitude (0-360)","example":185.7}}},"ConfigPresetInfo":{"type":"object","description":"Available configuration presets","required":["id","name","description"],"properties":{"description":{"type":"string","description":"Description"},"id":{"type":"string","description":"Preset identifier"},"name":{"type":"string","description":"Display name"}}},"ConjunctPointInput":{"type":"object","description":"Point to check for star conjunctions","required":["name","longitude"],"properties":{"longitude":{"type":"number","format":"double","description":"Longitude to check"},"name":{"type":"string","description":"Name of the point (e.g., \"Sun\", \"Ascendant\")"}}},"ConverseSolarArc":{"type":"object","description":"Converse solar arc data","required":["solar_arc","directed_planets"],"properties":{"directed_planets":{"type":"array","items":{"$ref":"#/components/schemas/DirectedPlanetPosition"},"description":"Converse directed planets"},"natal_aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/DirectedAspect"},"description":"Converse aspects"},"solar_arc":{"type":"number","format":"double","description":"Converse solar arc value"}}},"CreateKeyRequest":{"type":"object","description":"Request to create a new API key","required":["name"],"properties":{"name":{"type":"string","description":"Human-readable name for the key"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes to grant (optional, defaults to [\"calculate\"])"}}},"CreateKeyResponse":{"type":"object","description":"Response with a newly created API key","required":["id","api_key","key_prefix","name","scopes","warning"],"properties":{"api_key":{"type":"string","description":"The raw API key (only shown once!)"},"id":{"type":"string","description":"The key ID"},"key_prefix":{"type":"string","description":"Key prefix for identification"},"name":{"type":"string","description":"Key name"},"scopes":{"type":"array","items":{"type":"string"},"description":"Granted scopes"},"warning":{"type":"string","description":"Warning about storing the key"}}},"CreateSubscriptionRequest":{"type":"object","description":"Create subscription request","required":["plan_id"],"properties":{"billing_interval":{"type":"string","description":"Billing interval: \"monthly\" or \"annual\""},"coupon_code":{"type":["string","null"],"description":"Coupon code"},"customer_id":{"type":["string","null"],"description":"Existing Stripe customer ID"},"email":{"type":["string","null"],"description":"Customer email (for creating new customer)"},"payment_method_id":{"type":["string","null"],"description":"Payment method ID (from Stripe)"},"plan_id":{"type":"string","description":"Plan ID to subscribe to"},"trial_days":{"type":["integer","null"],"format":"int32","description":"Trial period in days (optional)","minimum":0}}},"CreateSubscriptionResponse":{"type":"object","description":"Create subscription response","required":["subscription_id","customer_id","status","message"],"properties":{"client_secret":{"type":["string","null"],"description":"Client secret for payment confirmation (if needed)"},"customer_id":{"type":"string","description":"Customer ID"},"message":{"type":"string","description":"Message"},"status":{"type":"string","description":"Subscription status"},"subscription_id":{"type":"string","description":"Subscription ID"}}},"DailyHoroscopeRequest":{"type":"object","description":"Request for daily horoscope","required":["sun_sign"],"properties":{"date":{"type":["string","null"],"description":"Date for horoscope (ISO format, optional - defaults to today)"},"language":{"type":"string","description":"Language"},"style":{"type":"string","description":"Style"},"sun_sign":{"type":"string","description":"Sun sign (1-12) or sign name"}}},"DailyUsage":{"type":"object","description":"Daily usage","required":["date","requests"],"properties":{"date":{"type":"string","description":"Date"},"requests":{"type":"integer","format":"int64","description":"Request count"}}},"DashaInterpretDetail":{"type":"object","description":"Detail for Antardasha interpretation","required":["lord","sanskrit_name","combination_themes"],"properties":{"combination_themes":{"type":"string","description":"Themes for Mahadasha-Antardasha combination"},"lord":{"type":"string","description":"Antardasha lord"},"sanskrit_name":{"type":"string","description":"Sanskrit name"}}},"DashaInterpretRequest":{"type":"object","description":"Request for Dasha period interpretation","required":["dasha_lord"],"properties":{"antardasha_lord":{"type":["string","null"],"description":"Optional: Antardasha (sub-period) lord"},"dasha_lord":{"type":"string","description":"The Dasha lord name (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu)","example":"Venus"}}},"DashaInterpretResponse":{"type":"object","description":"Response with Dasha interpretation","required":["lord","sanskrit_name","duration_years","general_themes","positive_effects","challenging_effects","remedies"],"properties":{"antardasha":{"oneOf":[{"$ref":"#/components/schemas/DashaInterpretDetail","description":"Antardasha interpretation (if requested)"},{"type":"null"}]},"challenging_effects":{"type":"string","description":"Challenging effects during this period"},"duration_years":{"type":"number","format":"double","description":"Duration in years"},"general_themes":{"type":"string","description":"General themes of this period"},"lord":{"type":"string","description":"Mahadasha lord"},"positive_effects":{"type":"string","description":"Positive effects during this period"},"remedies":{"type":"string","description":"Recommended remedies"},"sanskrit_name":{"type":"string","description":"Sanskrit name of the lord"}}},"DashaPeriodInfo":{"type":"object","description":"Information about a dasha period","required":["lord","years","start_date","end_date","start_jd","end_jd","is_current","percent_complete","significations"],"properties":{"days_remaining":{"type":["number","null"],"format":"double","description":"Days remaining in period (if current)"},"end_date":{"type":"string","description":"End date (ISO format)"},"end_jd":{"type":"number","format":"double","description":"End Julian Day"},"is_current":{"type":"boolean","description":"Whether this period is currently active"},"lord":{"type":"string","description":"Lord/ruler of the period"},"percent_complete":{"type":"number","format":"double","description":"Percentage complete"},"sanskrit_name":{"type":["string","null"],"description":"Sanskrit name (if applicable)"},"significations":{"type":"string","description":"Period interpretation/significations"},"start_date":{"type":"string","description":"Start date (ISO format)"},"start_jd":{"type":"number","format":"double","description":"Start Julian Day"},"years":{"type":"number","format":"double","description":"Period length in years"}}},"DashaPrediction":{"type":"object","description":"A prediction based on Dasha periods","required":["timeframe","theme","opportunities","challenges","advice"],"properties":{"advice":{"type":"string","description":"Advice for this period"},"challenges":{"type":"string","description":"Challenges during this time"},"opportunities":{"type":"string","description":"Opportunities during this time"},"theme":{"type":"string","description":"Main theme"},"timeframe":{"type":"string","description":"Timeframe for this prediction"}}},"DashaRequest":{"type":"object","description":"Request for Dasha (planetary period) calculation","required":["birth_datetime","birth_latitude","birth_longitude"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time (ISO format)"},"birth_latitude":{"type":"number","format":"double","description":"Birth latitude"},"birth_longitude":{"type":"number","format":"double","description":"Birth longitude"},"dasha_system":{"type":"string","description":"Dasha system to use"},"target_date":{"type":["string","null"],"description":"Target date for current period analysis (defaults to now)"},"years_to_show":{"type":"integer","format":"int32","description":"Number of years to show (for period list)","minimum":0}}},"DashaResponse":{"type":"object","description":"Dasha calculation response","required":["birth_datetime","dasha_system","system_description","cycle_years","moon_longitude","birth_nakshatra","current_mahadasha","mahadasha_periods"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time"},"birth_nakshatra":{"type":"string","description":"Birth nakshatra"},"current_antardasha":{"oneOf":[{"$ref":"#/components/schemas/DashaPeriodInfo","description":"Current antardasha (sub-period)"},{"type":"null"}]},"current_mahadasha":{"$ref":"#/components/schemas/DashaPeriodInfo","description":"Current mahadasha period"},"current_pratyantardasha":{"oneOf":[{"$ref":"#/components/schemas/DashaPeriodInfo","description":"Current pratyantardasha (sub-sub-period)"},{"type":"null"}]},"cycle_years":{"type":"number","format":"double","description":"Full cycle length in years"},"dasha_system":{"type":"string","description":"Dasha system used"},"mahadasha_periods":{"type":"array","items":{"$ref":"#/components/schemas/DashaPeriodInfo"},"description":"All mahadasha periods"},"moon_longitude":{"type":"number","format":"double","description":"Moon's sidereal longitude at birth"},"system_description":{"type":"string","description":"System description"}}},"DashaTimelineRequest":{"type":"object","description":"Request for Dasha timeline with predictions","required":["birth_datetime","moon_longitude"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time in ISO 8601 format","example":"1980-08-02T10:00:00Z"},"max_transitions":{"type":["integer","null"],"format":"int32","description":"Maximum number of transitions to return (default: 20)","minimum":0},"moon_longitude":{"type":"number","format":"double","description":"Moon longitude at birth (tropical, will be converted to sidereal)","example":25.87},"target_datetime":{"type":["string","null"],"description":"Target date/time for timeline (defaults to now)"},"years_ahead":{"type":["integer","null"],"format":"int32","description":"Years to look ahead for transitions (default: 10)","minimum":0}}},"DashaTimelineResponse":{"type":"object","description":"Response with Dasha timeline and predictions","required":["birth_datetime","target_datetime","dasha_system","upcoming_transitions","predictions"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time used"},"current_antardasha":{"oneOf":[{"$ref":"#/components/schemas/PeriodInterpretation","description":"Current Antardasha with interpretation"},{"type":"null"}]},"current_mahadasha":{"oneOf":[{"$ref":"#/components/schemas/PeriodInterpretation","description":"Current Mahadasha with interpretation"},{"type":"null"}]},"current_pratyantardasha":{"oneOf":[{"$ref":"#/components/schemas/PeriodInterpretation","description":"Current Pratyantardasha with interpretation"},{"type":"null"}]},"dasha_system":{"type":"string","description":"Dasha system used"},"predictions":{"type":"array","items":{"$ref":"#/components/schemas/DashaPrediction"},"description":"Predictions based on current and upcoming periods"},"target_datetime":{"type":"string","description":"Target date/time used"},"upcoming_transitions":{"type":"array","items":{"$ref":"#/components/schemas/DashaTransition"},"description":"Upcoming period transitions"}}},"DashaTransition":{"type":"object","description":"A Dasha period transition event","required":["transition_date","days_until","from_period","to_period","period_type","significance"],"properties":{"days_until":{"type":"integer","format":"int32","description":"Days until this transition","minimum":0},"from_period":{"type":"string","description":"Period ending"},"period_type":{"type":"string","description":"Type of period (Mahadasha, Antardasha, Pratyantardasha)"},"significance":{"type":"string","description":"Significance of this transition"},"to_period":{"type":"string","description":"Period beginning"},"transition_date":{"type":"string","description":"Date of the transition"}}},"DayFactor":{"type":"object","description":"Factor affecting a day's rating","required":["factor_type","description","influence"],"properties":{"description":{"type":"string","description":"Description"},"factor_type":{"type":"string","description":"Factor type"},"influence":{"type":"string","description":"Positive or negative influence"}}},"DayRulerRequest":{"type":"object","description":"Request for day ruler interpretation","required":["day"],"properties":{"day":{"type":"string","description":"Day of the week (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)","example":"Thursday"}}},"DayRulerResponse":{"type":"object","description":"Response with day ruler interpretation","required":["day","ruler","symbol","theme","best_for","energy","traditional"],"properties":{"best_for":{"type":"array","items":{"type":"string"},"description":"Best activities for this day"},"day":{"type":"string","description":"Day of the week"},"energy":{"type":"string","description":"Energy quality"},"ruler":{"type":"string","description":"Ruling planet"},"symbol":{"type":"string","description":"Ruler symbol"},"theme":{"type":"string","description":"Theme of the day"},"traditional":{"type":"string","description":"Traditional correspondences"}}},"DeleteWebhookRequest":{"type":"object","description":"Delete webhook request","required":["webhook_id"],"properties":{"webhook_id":{"type":"string","description":"Webhook ID to delete"}}},"DialPosition":{"type":"object","description":"Position on dial (90° or 45°)","required":["name","position","is_midpoint"],"properties":{"is_midpoint":{"type":"boolean","description":"Is this a midpoint (vs planet)"},"name":{"type":"string","description":"Planet or midpoint name"},"position":{"type":"number","format":"double","description":"Position on the dial (0-90° or 0-45°)"}}},"DirectedAngles":{"type":"object","description":"Directed angles","required":["ascendant","ascendant_sign","midheaven","midheaven_sign"],"properties":{"ascendant":{"type":"number","format":"double","description":"Directed Ascendant"},"ascendant_sign":{"type":"string","description":"Ascendant sign"},"midheaven":{"type":"number","format":"double","description":"Directed Midheaven"},"midheaven_sign":{"type":"string","description":"Midheaven sign"}}},"DirectedAspect":{"type":"object","description":"Aspect between directed and natal positions","required":["directed_planet","natal_planet","aspect_type","orb","exact","applying","interpretation"],"properties":{"applying":{"type":"boolean","description":"Is applying"},"aspect_type":{"type":"string","description":"Aspect type"},"directed_planet":{"type":"string","description":"Directed planet"},"exact":{"type":"boolean","description":"Is exact (within 1 degree)"},"interpretation":{"type":"string","description":"Interpretation"},"natal_planet":{"type":"string","description":"Natal planet/point"},"orb":{"type":"number","format":"double","description":"Orb"}}},"DirectedPlanetPosition":{"type":"object","description":"Directed planet position","required":["name","natal_longitude","directed_longitude","sign","sign_name","degree_in_sign","sign_changed"],"properties":{"degree_in_sign":{"type":"number","format":"double","description":"Degree within sign"},"directed_longitude":{"type":"number","format":"double","description":"Directed longitude (natal + solar arc)"},"name":{"type":"string","description":"Planet name"},"natal_longitude":{"type":"number","format":"double","description":"Natal longitude"},"sign":{"type":"integer","format":"int32","description":"Sign (0-11)","minimum":0},"sign_changed":{"type":"boolean","description":"If sign changed from natal"},"sign_name":{"type":"string","description":"Sign name"}}},"ElectionCandidate":{"type":"object","description":"A candidate election time","required":["rank","datetime","julian_day","quality_score","rating","moon_phase","moon_sign","moon_void","ascendant_sign","day_ruler","hour_ruler","positive_factors","negative_factors","recommendations"],"properties":{"ascendant_sign":{"type":"string","description":"Ascendant sign"},"datetime":{"type":"string","description":"Election datetime"},"day_ruler":{"type":"string","description":"Day ruler"},"hour_ruler":{"type":"string","description":"Hour ruler"},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"moon_phase":{"type":"string","description":"Moon phase"},"moon_sign":{"type":"string","description":"Moon sign"},"moon_void":{"type":"boolean","description":"Is Moon void of course"},"negative_factors":{"type":"array","items":{"$ref":"#/components/schemas/ElectionFactor"},"description":"Negative factors"},"positive_factors":{"type":"array","items":{"$ref":"#/components/schemas/ElectionFactor"},"description":"Positive factors"},"quality_score":{"type":"integer","format":"int32","description":"Quality score (0-100)","minimum":0},"rank":{"type":"integer","format":"int32","description":"Rank (1 = best)","minimum":0},"rating":{"type":"string","description":"Rating (excellent, good, acceptable)"},"recommendations":{"type":"string","description":"Specific to activity recommendations"}}},"ElectionFactor":{"type":"object","description":"Factor affecting election quality","required":["factor","description","impact"],"properties":{"description":{"type":"string","description":"Description"},"factor":{"type":"string","description":"Factor name"},"impact":{"type":"integer","format":"int32","description":"Impact on score (-10 to +10)"}}},"ElectionalGuidance":{"type":"object","description":"General guidance for activity type","required":["activity","key_planet","important_houses","favorable_moon_signs","unfavorable_moon_signs","favorable_aspects","advice"],"properties":{"activity":{"type":"string","description":"Activity type"},"advice":{"type":"string","description":"General advice"},"favorable_aspects":{"type":"array","items":{"type":"string"},"description":"Favorable aspects"},"favorable_moon_signs":{"type":"array","items":{"type":"string"},"description":"Favorable Moon signs"},"important_houses":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"Important houses"},"key_planet":{"type":"string","description":"Key planet for this activity"},"unfavorable_moon_signs":{"type":"array","items":{"type":"string"},"description":"Unfavorable Moon signs"}}},"ElectionalPreferences":{"type":"object","description":"Electional preferences","properties":{"avoid_retrograde":{"type":"array","items":{"type":"string"},"description":"Planets to avoid being retrograde"},"avoid_void_moon":{"type":"boolean","description":"Avoid void of course Moon"},"hour_range":{"type":["array","null"],"items":false,"prefixItems":[{"type":"integer","format":"int32","minimum":0},{"type":"integer","format":"int32","minimum":0}],"description":"Hour range (0-23) to search within"},"moon_phases":{"type":"array","items":{"type":"string"},"description":"Preferred Moon phases (empty = all)"},"preferred_days":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"Preferred day of week (0=Sun, 1=Mon, etc.)"}}},"ElectionalRequest":{"type":"object","description":"Request for electional astrology analysis","required":["start_datetime","end_datetime","latitude","longitude","activity_type"],"properties":{"activity_type":{"type":"string","description":"Activity type: \"business\", \"marriage\", \"travel\", \"medical\", \"legal\", \"creative\", \"spiritual\", etc."},"end_datetime":{"type":"string","description":"End date/time for search window (ISO format)"},"house_system":{"type":"string","description":"House system code"},"latitude":{"type":"number","format":"double","description":"Latitude for the election location"},"longitude":{"type":"number","format":"double","description":"Longitude for the election location"},"max_results":{"type":"integer","description":"Maximum number of results to return","minimum":0},"min_quality":{"type":"integer","format":"int32","description":"Minimum quality score (0-100)","minimum":0},"preferences":{"$ref":"#/components/schemas/ElectionalPreferences","description":"Additional preferences"},"start_datetime":{"type":"string","description":"Start date/time for search window (ISO format)"}}},"ElectionalResponse":{"type":"object","description":"Electional analysis response","required":["activity_type","start_datetime","end_datetime","location","candidates_found","elections","general_guidance","avoid_periods"],"properties":{"activity_type":{"type":"string","description":"Activity type analyzed"},"avoid_periods":{"type":"array","items":{"$ref":"#/components/schemas/AvoidPeriod"},"description":"Periods to avoid"},"candidates_found":{"type":"integer","description":"Number of candidates found","minimum":0},"elections":{"type":"array","items":{"$ref":"#/components/schemas/ElectionCandidate"},"description":"Best election times ranked"},"end_datetime":{"type":"string","description":"Search window end"},"general_guidance":{"$ref":"#/components/schemas/ElectionalGuidance","description":"General guidance for this activity type"},"location":{"$ref":"#/components/schemas/LocationData","description":"Location used"},"start_datetime":{"type":"string","description":"Search window start"}}},"ElementBalanceResponse":{"type":"object","description":"Element balance for a chart","required":["chart_name","fire","earth","air","water","dominant_element"],"properties":{"air":{"type":"integer","format":"int32","description":"Air element count","minimum":0},"chart_name":{"type":"string","description":"Chart name"},"dominant_element":{"type":"string","description":"Dominant element"},"earth":{"type":"integer","format":"int32","description":"Earth element count","minimum":0},"fire":{"type":"integer","format":"int32","description":"Fire element count","minimum":0},"lacking_element":{"type":["string","null"],"description":"Lacking element (if any)"},"water":{"type":"integer","format":"int32","description":"Water element count","minimum":0}}},"EssentialDignities":{"type":"object","description":"Essential dignities of a planet","required":["in_domicile","in_detriment","in_exaltation","in_fall","in_triplicity","in_term","in_face","peregrine","summary"],"properties":{"in_detriment":{"type":"boolean","description":"Planet is in detriment"},"in_domicile":{"type":"boolean","description":"Planet is in its domicile (rules the sign)"},"in_exaltation":{"type":"boolean","description":"Planet is in exaltation"},"in_face":{"type":"boolean","description":"Planet is in own face/decan"},"in_fall":{"type":"boolean","description":"Planet is in fall"},"in_term":{"type":"boolean","description":"Planet is in own term/bound"},"in_triplicity":{"type":"boolean","description":"Planet is in own triplicity"},"peregrine":{"type":"boolean","description":"Planet is peregrine (no essential dignity)"},"summary":{"type":"string","description":"Summary of dignities"}}},"FixedStarInfo":{"type":"object","description":"Information about a fixed star","required":["name","designation","constellation","magnitude","longitude","latitude","sign","degree_in_sign","right_ascension","declination","spectral_type","is_royal","is_behenian","significations"],"properties":{"constellation":{"type":"string","description":"Constellation"},"declination":{"type":"number","format":"double","description":"Declination"},"degree_in_sign":{"type":"number","format":"double","description":"Degree within sign"},"designation":{"type":"string","description":"Bayer/Flamsteed designation"},"is_behenian":{"type":"boolean","description":"Is this a Behenian Star"},"is_royal":{"type":"boolean","description":"Is this a Royal Star"},"latitude":{"type":"number","format":"double","description":"Ecliptic latitude"},"longitude":{"type":"number","format":"double","description":"Ecliptic longitude"},"magnitude":{"type":"number","format":"double","description":"Visual magnitude (brightness)"},"name":{"type":"string","description":"Common name"},"right_ascension":{"type":"number","format":"double","description":"Right ascension"},"sign":{"type":"string","description":"Zodiac sign"},"significations":{"type":"string","description":"Traditional significations"},"spectral_type":{"type":"string","description":"Spectral type"}}},"FixedStarsRequest":{"type":"object","description":"Request for fixed star positions/analysis","required":["datetime"],"properties":{"category":{"type":"string","description":"Filter by category: \"royal\", \"behenian\", \"first_magnitude\", \"all\""},"conjunct_points":{"type":"array","items":{"$ref":"#/components/schemas/ConjunctPointInput"},"description":"Find stars conjunct specific longitudes (for chart analysis)"},"datetime":{"type":"string","description":"Date/time for star positions (ISO format)"},"max_magnitude":{"type":"number","format":"double","description":"Maximum magnitude to include (lower = brighter)"},"orb":{"type":"number","format":"double","description":"Orb for conjunctions"},"star_names":{"type":"array","items":{"type":"string"},"description":"Specific star names to look up (empty = all major stars)"}}},"FixedStarsResponse":{"type":"object","description":"Fixed stars response","required":["datetime","julian_day","star_count","stars","conjunctions","royal_stars"],"properties":{"conjunctions":{"type":"array","items":{"$ref":"#/components/schemas/StarConjunctionInfo"},"description":"Conjunctions with requested points"},"datetime":{"type":"string","description":"Date/time used"},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"royal_stars":{"type":"array","items":{"$ref":"#/components/schemas/FixedStarInfo"},"description":"Royal stars (Aldebaran, Regulus, Antares, Fomalhaut)"},"star_count":{"type":"integer","description":"Total stars returned","minimum":0},"stars":{"type":"array","items":{"$ref":"#/components/schemas/FixedStarInfo"},"description":"Star positions"}}},"GenerateReportRequest":{"type":"object","description":"Request to generate a report","required":["template_id","chart"],"properties":{"chart":{"$ref":"#/components/schemas/ReportChartData","description":"Chart data for the report"},"format":{"type":"string","description":"Output format: \"pdf\", \"html\", \"markdown\""},"include_charts":{"type":"boolean","description":"Include charts/images"},"language":{"type":"string","description":"Language code"},"options":{"$ref":"#/components/schemas/ReportOptions","description":"Custom options"},"template_id":{"type":"string","description":"Template ID to use"},"title":{"type":["string","null"],"description":"Report title (optional)"}}},"GenerateReportResponse":{"type":"object","description":"Response with generated report","required":["report_id","title","template_id","format","content","size_bytes","generated_at","expires_at"],"properties":{"content":{"type":"string","description":"Report content (base64 encoded for PDF, raw for HTML/markdown)"},"expires_at":{"type":"string","description":"Expiration timestamp (when the download link expires)"},"format":{"type":"string","description":"Output format"},"generated_at":{"type":"string","description":"Generation timestamp"},"report_id":{"type":"string","description":"Report ID"},"size_bytes":{"type":"integer","description":"Content size in bytes","minimum":0},"template_id":{"type":"string","description":"Template used"},"title":{"type":"string","description":"Report title"}}},"GeoPoint":{"type":"object","description":"Geographic point","required":["lat","lon"],"properties":{"lat":{"type":"number","format":"double","description":"Latitude"},"lon":{"type":"number","format":"double","description":"Longitude"}}},"HarmonicAspectInfo":{"type":"object","description":"Aspect in harmonic chart","required":["planet1","planet2","aspect_type","angle","orb"],"properties":{"angle":{"type":"number","format":"double","description":"Aspect angle"},"aspect_type":{"type":"string","description":"Aspect type"},"orb":{"type":"number","format":"double","description":"Orb"},"planet1":{"type":"string","description":"First planet"},"planet2":{"type":"string","description":"Second planet"}}},"HarmonicChartInfo":{"type":"object","description":"Information about a harmonic chart","required":["harmonic","name","description","aspect_angle","keywords","positions","conjunctions"],"properties":{"aspect_angle":{"type":"number","format":"double","description":"Base aspect angle (360/harmonic)"},"aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/HarmonicAspectInfo"},"description":"Aspects within the harmonic chart"},"conjunctions":{"type":"array","items":{"$ref":"#/components/schemas/HarmonicConjunction"},"description":"Conjunctions in harmonic (planets that form this aspect natally)"},"description":{"type":"string","description":"Description of what this harmonic represents"},"harmonic":{"type":"integer","format":"int32","description":"Harmonic number","minimum":0},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords for this harmonic"},"name":{"type":"string","description":"Harmonic name"},"positions":{"type":"array","items":{"$ref":"#/components/schemas/HarmonicPositionInfo"},"description":"Planet positions in harmonic"}}},"HarmonicConjunction":{"type":"object","description":"Conjunction in harmonic chart","required":["planet1","planet2","orb","natal_aspect"],"properties":{"natal_aspect":{"type":"string","description":"What aspect this represents in the natal chart"},"orb":{"type":"number","format":"double","description":"Orb of conjunction in harmonic chart"},"planet1":{"type":"string","description":"First planet"},"planet2":{"type":"string","description":"Second planet"}}},"HarmonicPositionInfo":{"type":"object","description":"Planet position in harmonic chart","required":["planet","natal_longitude","harmonic_longitude","sign","degree_in_sign"],"properties":{"degree_in_sign":{"type":"number","format":"double","description":"Degree within sign"},"harmonic_longitude":{"type":"number","format":"double","description":"Harmonic longitude"},"natal_longitude":{"type":"number","format":"double","description":"Original natal longitude"},"planet":{"type":"string","description":"Planet name"},"sign":{"type":"string","description":"Sign in harmonic chart"}}},"HarmonicsRequest":{"type":"object","description":"Request for harmonic chart calculation","properties":{"aspect_orb":{"type":"number","format":"double","description":"Aspect orb for harmonic chart"},"datetime":{"type":["string","null"],"description":"Birth date/time (ISO format) or provide planets directly"},"harmonics":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"Harmonic number(s) to calculate"},"include_aspects":{"type":"boolean","description":"Include aspects in harmonic chart"},"latitude":{"type":["number","null"],"format":"double","description":"Latitude (required if datetime provided)"},"longitude":{"type":["number","null"],"format":"double","description":"Longitude (required if datetime provided)"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPositionInput"},"description":"Or provide planets directly"}}},"HarmonicsResponse":{"type":"object","description":"Harmonics calculation response","required":["planet_count","charts"],"properties":{"charts":{"type":"array","items":{"$ref":"#/components/schemas/HarmonicChartInfo"},"description":"Harmonic charts calculated"},"datetime":{"type":["string","null"],"description":"Input datetime (if provided)"},"planet_count":{"type":"integer","description":"Number of planets analyzed","minimum":0}}},"HealthResponse":{"type":"object","description":"Health check response","required":["status","version","uptime_seconds"],"properties":{"status":{"type":"string","description":"Service status"},"uptime_seconds":{"type":"integer","format":"int64","description":"Uptime in seconds","minimum":0},"version":{"type":"string","description":"Version"}}},"HoraryJudgment":{"type":"object","description":"Overall horary judgment","required":["answer","confidence","judgment","key_factors"],"properties":{"advice":{"type":["string","null"],"description":"Advice based on the chart"},"answer":{"type":"string","description":"Simple answer (yes/no/uncertain)"},"confidence":{"type":"string","description":"Confidence level (high, moderate, low)"},"judgment":{"type":"string","description":"Detailed judgment text"},"key_factors":{"type":"array","items":{"type":"string"},"description":"Key factors in determination"},"timing":{"type":["string","null"],"description":"Timing if yes (approximate)"}}},"HoraryMoonInfo":{"type":"object","description":"Moon information for horary","required":["longitude","sign","house","phase","void_of_course","in_via_combusta","applying_aspects"],"properties":{"applying_aspects":{"type":"array","items":{"$ref":"#/components/schemas/MoonAspectInfo"},"description":"All applying aspects"},"house":{"type":"integer","format":"int32","description":"Moon house","minimum":0},"in_via_combusta":{"type":"boolean","description":"Is in Via Combusta (15° Libra - 15° Scorpio)"},"last_aspect":{"oneOf":[{"$ref":"#/components/schemas/MoonAspectInfo","description":"Moon's last aspect"},{"type":"null"}]},"longitude":{"type":"number","format":"double","description":"Moon longitude"},"next_aspect":{"oneOf":[{"$ref":"#/components/schemas/MoonAspectInfo","description":"Moon's next aspect"},{"type":"null"}]},"phase":{"type":"string","description":"Moon phase"},"sign":{"type":"string","description":"Moon sign"},"voc_details":{"oneOf":[{"$ref":"#/components/schemas/VoidOfCourseInfo","description":"VOC details (if applicable)"},{"type":"null"}]},"void_of_course":{"type":"boolean","description":"Is void of course"}}},"HoraryPlanetInfo":{"type":"object","description":"Planet information in horary context","required":["name","longitude","sign","degree_in_sign","house","speed","retrograde","stationary","dignities","dignity_score","accidental_score","combust","under_sunbeams","cazimi"],"properties":{"accidental_score":{"type":"integer","format":"int32","description":"Accidental dignities score"},"cazimi":{"type":"boolean","description":"Is cazimi (within 17' of Sun center)"},"combust":{"type":"boolean","description":"Is combust (within 8° of Sun)"},"degree_in_sign":{"type":"number","format":"double","description":"Degree in sign"},"dignities":{"$ref":"#/components/schemas/EssentialDignities","description":"Essential dignities"},"dignity_score":{"type":"integer","format":"int32","description":"Dignity score (-5 to +5)"},"house":{"type":"integer","format":"int32","description":"House placement (1-12)","minimum":0},"longitude":{"type":"number","format":"double","description":"Ecliptic longitude"},"name":{"type":"string","description":"Planet name"},"retrograde":{"type":"boolean","description":"Is retrograde"},"sign":{"type":"string","description":"Sign"},"speed":{"type":"number","format":"double","description":"Speed (for retrograde/direct/stationary)"},"stationary":{"type":"boolean","description":"Is stationary (within 1° of station)"},"under_sunbeams":{"type":"boolean","description":"Is under sunbeams (within 17° of Sun)"}}},"HoraryRequest":{"type":"object","description":"Request for horary chart analysis","required":["datetime","latitude","longitude","question"],"properties":{"check_strictures":{"type":"boolean","description":"Include strictures analysis"},"datetime":{"type":"string","description":"Question date/time (ISO format)"},"house_system":{"type":"string","description":"House system code"},"latitude":{"type":"number","format":"double","description":"Latitude where question was asked"},"longitude":{"type":"number","format":"double","description":"Longitude where question was asked"},"querent_house":{"type":["integer","null"],"format":"int32","description":"Querent (person asking) signifier house (optional, auto-determined if not provided)","minimum":0},"quesited_house":{"type":["integer","null"],"format":"int32","description":"Quesited (subject of question) signifier house (optional, auto-determined if not provided)","minimum":0},"question":{"type":"string","description":"The horary question being asked"}}},"HoraryResponse":{"type":"object","description":"Horary chart analysis response","required":["datetime","julian_day","location","question","house_system","planets","houses","strictures","is_radical","radicality_assessment","moon_info","querent_significator","quesited_significator","receptions","perfection","judgment"],"properties":{"datetime":{"type":"string","description":"Question datetime"},"house_system":{"type":"string","description":"House system used"},"houses":{"$ref":"#/components/schemas/HouseResponse","description":"House cusps"},"is_radical":{"type":"boolean","description":"Is the chart radical (suitable for judgment)"},"judgment":{"$ref":"#/components/schemas/HoraryJudgment","description":"Overall judgment"},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"location":{"$ref":"#/components/schemas/LocationData","description":"Location used"},"moon_info":{"$ref":"#/components/schemas/HoraryMoonInfo","description":"Moon information (critical in horary)"},"perfection":{"$ref":"#/components/schemas/PerfectionAnalysis","description":"Perfection analysis (will the matter come to pass)"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/HoraryPlanetInfo"},"description":"Planetary positions with dignities"},"querent_significator":{"$ref":"#/components/schemas/SignificatorInfo","description":"Querent significator"},"quesited_significator":{"$ref":"#/components/schemas/SignificatorInfo","description":"Quesited significator"},"question":{"type":"string","description":"The question asked"},"radicality_assessment":{"type":"string","description":"Radicality assessment"},"receptions":{"type":"array","items":{"$ref":"#/components/schemas/ReceptionInfo"},"description":"Receptions between significators"},"strictures":{"type":"array","items":{"$ref":"#/components/schemas/HoraryStricture"},"description":"Chart strictures (radicality considerations)"}}},"HoraryStricture":{"type":"object","description":"Horary stricture information","required":["name","description","severity","affects_radicality"],"properties":{"affects_radicality":{"type":"boolean","description":"Does this stricture affect radicality"},"description":{"type":"string","description":"Description"},"name":{"type":"string","description":"Stricture name"},"severity":{"type":"string","description":"Severity (warning, caution, severe)"}}},"HorizonViewRequest":{"type":"object","description":"Request for horizon view SVG","required":["julian_day","latitude","longitude"],"properties":{"height":{"type":"integer","format":"int32","description":"Chart height in pixels","minimum":0},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"latitude":{"type":"number","format":"double","description":"Observer latitude (-90 to 90)"},"limiting_magnitude":{"type":"number","format":"double","description":"Limiting magnitude"},"longitude":{"type":"number","format":"double","description":"Observer longitude (-180 to 180)"},"show_constellations":{"type":"boolean","description":"Show constellation lines"},"show_ecliptic":{"type":"boolean","description":"Show ecliptic line"},"title":{"type":["string","null"],"description":"Chart title"},"width":{"type":"integer","format":"int32","description":"Chart width in pixels","minimum":0}}},"HourInfo":{"type":"object","description":"Information about a single planetary hour","required":["number","ruler","start","end","is_day"],"properties":{"end":{"type":"string","description":"End time"},"is_day":{"type":"boolean","description":"Is day hour"},"number":{"type":"integer","format":"int32","description":"Hour number (1-24)"},"ruler":{"type":"string","description":"Ruling planet"},"start":{"type":"string","description":"Start time"}}},"HouseCusp":{"type":"object","description":"Individual house cusp","required":["house","longitude","sign","sign_name","degree_in_sign"],"properties":{"degree_in_sign":{"type":"number","format":"double","description":"Degree within sign"},"house":{"type":"integer","format":"int32","description":"House number (1-12)","minimum":0},"longitude":{"type":"number","format":"double","description":"Cusp longitude in degrees"},"sign":{"type":"integer","format":"int32","description":"Sign on cusp (0-11)","minimum":0},"sign_name":{"type":"string","description":"Sign name"}}},"HouseRequest":{"type":"object","description":"Request for house calculation","required":["julian_day","latitude","longitude"],"properties":{"house_system":{"type":"string","description":"House system code (P=Placidus, K=Koch, W=Whole Sign, etc.)","example":"P"},"julian_day":{"type":"number","format":"double","description":"Julian Day number","example":2451545.0},"latitude":{"type":"number","format":"double","description":"Geographic latitude","example":52.52},"longitude":{"type":"number","format":"double","description":"Geographic longitude","example":13.405}}},"HouseResponse":{"type":"object","description":"Response with house cusps","required":["julian_day","house_system","house_system_name","ascendant","midheaven","armc","cusps"],"properties":{"armc":{"type":"number","format":"double","description":"ARMC (sidereal time)"},"ascendant":{"type":"number","format":"double","description":"Ascendant longitude"},"cusps":{"type":"array","items":{"$ref":"#/components/schemas/HouseCusp"},"description":"House cusps (12 houses)"},"house_system":{"type":"string","description":"House system used"},"house_system_name":{"type":"string","description":"House system full name"},"julian_day":{"type":"number","format":"double","description":"Julian Day used"},"midheaven":{"type":"number","format":"double","description":"Midheaven longitude"}}},"InterChartAspectResponse":{"type":"object","description":"An inter-chart aspect","required":["planet_a","planet_b","aspect_type","symbol","angle","orb","nature"],"properties":{"angle":{"type":"number","format":"double","description":"Exact angle"},"aspect_type":{"type":"string","description":"Aspect type (Conjunction, Sextile, Square, Trine, Opposition)"},"interpretation":{"type":["string","null"],"description":"Interpretation (if available)"},"nature":{"type":"string","description":"Nature of aspect (Harmonious, Challenging, Neutral)"},"orb":{"type":"number","format":"double","description":"Orb (deviation from exact)"},"planet_a":{"type":"string","description":"Planet from chart A"},"planet_b":{"type":"string","description":"Planet from chart B"},"symbol":{"type":"string","description":"Aspect symbol"}}},"InterChartAspectsResponse":{"type":"object","description":"Inter-chart aspects between two charts","required":["chart_a","chart_b","aspects","harmonious_count","challenging_count","neutral_count"],"properties":{"aspects":{"type":"array","items":{"$ref":"#/components/schemas/InterChartAspectResponse"},"description":"List of aspects"},"challenging_count":{"type":"integer","format":"int32","description":"Count of challenging aspects","minimum":0},"chart_a":{"type":"string","description":"First chart name"},"chart_b":{"type":"string","description":"Second chart name"},"harmonious_count":{"type":"integer","format":"int32","description":"Count of harmonious aspects","minimum":0},"neutral_count":{"type":"integer","format":"int32","description":"Count of neutral aspects","minimum":0}}},"InterpretAspectInput":{"type":"object","description":"Aspect input for interpretation","required":["planet1","planet2","aspect_type"],"properties":{"aspect_type":{"type":"string","description":"Aspect type"},"orb":{"type":["number","null"],"format":"double","description":"Orb in degrees; the texts mention exact aspects (orb under 1°). Default 3°."},"planet1":{"type":"string","description":"First planet"},"planet2":{"type":"string","description":"Second planet"}}},"InterpretPlanetInput":{"type":"object","description":"Planet input for interpretation","required":["name","sign","house"],"properties":{"house":{"type":"integer","format":"int32","description":"House (1-12)","minimum":0},"name":{"type":"string","description":"Planet name"},"sign":{"type":"integer","format":"int32","description":"Sign (1-12)","minimum":0}}},"InterpretationConfigResponse":{"type":"object","description":"Interpretation settings in response","required":["language","style","include_degrees","include_minutes","use_glyphs"],"properties":{"include_degrees":{"type":"boolean","description":"Include degrees in output"},"include_minutes":{"type":"boolean","description":"Include minutes in output"},"language":{"type":"string","description":"Language code"},"style":{"type":"string","description":"Interpretation style"},"use_glyphs":{"type":"boolean","description":"Use glyphs"}}},"InterpretationResponse":{"type":"object","description":"Interpretation response","required":["text","style","language"],"properties":{"language":{"type":"string","description":"Language used"},"sections":{"type":"array","items":{"$ref":"#/components/schemas/InterpretationSection"},"description":"Sections (for longer interpretations)"},"style":{"type":"string","description":"Style used"},"text":{"type":"string","description":"Interpretation text"}}},"InterpretationSection":{"type":"object","description":"Section of interpretation","required":["title","content"],"properties":{"content":{"type":"string","description":"Section content"},"title":{"type":"string","description":"Section title"}}},"Invoice":{"type":"object","description":"Invoice summary","required":["id","number","status","amount_due","amount_paid","currency","created","period_start","period_end"],"properties":{"amount_due":{"type":"integer","format":"int64","description":"Amount due in cents"},"amount_paid":{"type":"integer","format":"int64","description":"Amount paid in cents"},"created":{"type":"string","description":"Invoice date"},"currency":{"type":"string","description":"Currency"},"due_date":{"type":["string","null"],"description":"Due date"},"id":{"type":"string","description":"Invoice ID"},"invoice_pdf":{"type":["string","null"],"description":"PDF URL"},"number":{"type":"string","description":"Invoice number"},"period_end":{"type":"string","description":"Period end"},"period_start":{"type":"string","description":"Period start"},"status":{"type":"string","description":"Invoice status"}}},"InvoicesResponse":{"type":"object","description":"List of invoices","required":["invoices","has_more"],"properties":{"has_more":{"type":"boolean","description":"Whether there are more invoices"},"invoices":{"type":"array","items":{"$ref":"#/components/schemas/Invoice"},"description":"Invoices"}}},"KeyDirection":{"type":"object","description":"Key solar arc direction event","required":["direction_type","description","importance","timing"],"properties":{"description":{"type":"string","description":"Description"},"direction_type":{"type":"string","description":"Direction type"},"importance":{"type":"string","description":"Importance (high, medium, low)"},"timing":{"type":"string","description":"Approximate timing"}}},"KeyProgression":{"type":"object","description":"Key progression event","required":["progression_type","description","importance","timing"],"properties":{"description":{"type":"string","description":"Description"},"importance":{"type":"string","description":"Importance (high, medium, low)"},"progression_type":{"type":"string","description":"Progression type"},"timing":{"type":"string","description":"Approximate timing"}}},"ListChartsResponse":{"type":"object","description":"Response listing saved charts","required":["charts","count","page","page_size"],"properties":{"charts":{"type":"array","items":{"$ref":"#/components/schemas/SavedChart"},"description":"Saved charts"},"count":{"type":"integer","description":"Total count","minimum":0},"page":{"type":"integer","description":"Page number","minimum":0},"page_size":{"type":"integer","description":"Page size","minimum":0}}},"ListKeysResponse":{"type":"object","description":"Response listing API keys","required":["keys","count"],"properties":{"count":{"type":"integer","description":"Total count","minimum":0},"keys":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyInfo"},"description":"List of API keys"}}},"ListWebhooksResponse":{"type":"object","description":"List of registered webhooks","required":["webhooks"],"properties":{"webhooks":{"type":"array","items":{"$ref":"#/components/schemas/WebhookInfo"},"description":"Registered webhooks"}}},"LocationAnalysis":{"type":"object","description":"Analysis for a specific location","required":["location_name","latitude","longitude","nearby_lines","angular_planets","overall_rating","quality_score","themes","interpretation","best_for","challenges"],"properties":{"angular_planets":{"type":"array","items":{"$ref":"#/components/schemas/AngularPlanet"},"description":"Angular planets at this location"},"best_for":{"type":"array","items":{"type":"string"},"description":"Best for (activities)"},"challenges":{"type":"array","items":{"type":"string"},"description":"Challenges at this location"},"interpretation":{"type":"string","description":"Detailed interpretation"},"latitude":{"type":"number","format":"double","description":"Latitude"},"location_name":{"type":"string","description":"Location name"},"longitude":{"type":"number","format":"double","description":"Longitude"},"nearby_lines":{"type":"array","items":{"$ref":"#/components/schemas/NearbyLine"},"description":"Nearby lines (within orb)"},"overall_rating":{"type":"string","description":"Overall rating for this location"},"quality_score":{"type":"integer","format":"int32","description":"Quality score (0-100)","minimum":0},"themes":{"type":"array","items":{"type":"string"},"description":"Themes for this location"}}},"LocationData":{"type":"object","description":"Location data","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"}}},"LocationInfo":{"type":"object","description":"Location information","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"}}},"LunarCalendarRequest":{"type":"object","description":"Request for lunar calendar entry","required":["phase","moon_sign"],"properties":{"is_void_of_course":{"type":"boolean","description":"Whether Moon is void of course"},"moon_sign":{"type":"integer","format":"int32","description":"Moon sign (0=Aries through 11=Pisces)","example":3,"minimum":0},"phase":{"type":"string","description":"Phase name","example":"Full Moon"}}},"LunarCalendarResponse":{"type":"object","description":"Response with lunar calendar entry","required":["phase","moon_sign","is_void_of_course","daily_energy","daily_guidance"],"properties":{"daily_energy":{"type":"string","description":"Overall daily energy"},"daily_guidance":{"type":"string","description":"Overall daily guidance"},"is_void_of_course":{"type":"boolean","description":"Is Moon void of course"},"moon_sign":{"$ref":"#/components/schemas/MoonSignInterpretResponse","description":"Moon sign interpretation"},"phase":{"$ref":"#/components/schemas/LunarPhaseInterpretResponse","description":"Phase interpretation"},"void_guidance":{"oneOf":[{"$ref":"#/components/schemas/VoidOfCourseResponse","description":"Void of course guidance (if applicable)"},{"type":"null"}]}}},"LunarGardeningRequest":{"type":"object","description":"Request for lunar gardening guidance","required":["phase","moon_sign"],"properties":{"moon_sign":{"type":"integer","format":"int32","description":"Moon sign (0=Aries through 11=Pisces)","example":1,"minimum":0},"phase":{"type":"string","description":"Phase name","example":"New Moon"}}},"LunarGardeningResponse":{"type":"object","description":"Response with lunar gardening guidance","required":["phase_guidance","element_guidance","fertility_note","sign_element","is_fertile_sign"],"properties":{"element_guidance":{"type":"string","description":"Guidance based on Moon sign element"},"fertility_note":{"type":"string","description":"Note about sign fertility"},"is_fertile_sign":{"type":"boolean","description":"Whether current sign is considered fertile"},"phase_guidance":{"type":"string","description":"Guidance based on lunar phase"},"sign_element":{"type":"string","description":"Element of current Moon sign"}}},"LunarPhaseInterpretRequest":{"type":"object","description":"Request for lunar phase interpretation","required":["phase"],"properties":{"phase":{"type":"string","description":"Phase name (New Moon, Waxing Crescent, First Quarter, Waxing Gibbous,\nFull Moon, Waning Gibbous, Last Quarter, Waning Crescent)","example":"Full Moon"}}},"LunarPhaseInterpretResponse":{"type":"object","description":"Response with lunar phase interpretation","required":["phase_name","symbol","general_meaning","emotional_energy","focus_areas","favorable_activities","avoid_activities","keywords","gardening","self_care","manifestation"],"properties":{"avoid_activities":{"type":"array","items":{"type":"string"},"description":"Activities to avoid during this phase"},"emotional_energy":{"type":"string","description":"Emotional/energetic quality"},"favorable_activities":{"type":"array","items":{"type":"string"},"description":"Activities favored during this phase"},"focus_areas":{"type":"array","items":{"type":"string"},"description":"What to focus on during this phase"},"gardening":{"type":"string","description":"Gardening guidance"},"general_meaning":{"type":"string","description":"General meaning of this phase"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords for this phase"},"manifestation":{"type":"string","description":"Manifestation/intention guidance"},"phase_name":{"type":"string","description":"Phase name"},"self_care":{"type":"string","description":"Self-care suggestions"},"symbol":{"type":"string","description":"Phase symbol/emoji"}}},"LunarReturnRequest":{"type":"object","description":"Request for lunar return chart calculation","required":["birth_datetime","birth_latitude","birth_longitude","target_date"],"properties":{"birth_datetime":{"type":"string","description":"Natal birth date/time (ISO format)"},"birth_latitude":{"type":"number","format":"double","description":"Birth latitude"},"birth_longitude":{"type":"number","format":"double","description":"Birth longitude"},"house_system":{"type":"string","description":"House system code"},"include_aspects":{"type":"boolean","description":"Include aspects"},"return_latitude":{"type":["number","null"],"format":"double","description":"Location for the lunar return (defaults to birth location)"},"return_longitude":{"type":["number","null"],"format":"double","description":"Location for the lunar return (defaults to birth location)"},"target_date":{"type":"string","description":"Target date/time to find lunar return for (ISO format)"}}},"LunarReturnResponse":{"type":"object","description":"Lunar return chart response","required":["natal_moon_longitude","return_datetime","julian_day","return_location","planets","houses","month_themes"],"properties":{"aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/AspectData"},"description":"Aspects (if requested)"},"houses":{"$ref":"#/components/schemas/HouseResponse","description":"Lunar return house cusps"},"julian_day":{"type":"number","format":"double","description":"Julian Day of lunar return"},"month_themes":{"type":"array","items":{"$ref":"#/components/schemas/ReturnTheme"},"description":"Month themes based on return chart"},"natal_moon_longitude":{"type":"number","format":"double","description":"Natal Moon position"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPosition"},"description":"Lunar return planetary positions"},"return_datetime":{"type":"string","description":"Exact lunar return moment"},"return_location":{"$ref":"#/components/schemas/LocationData","description":"Location used for return chart"}}},"MidpointActivationInfo":{"type":"object","description":"Information about a midpoint activation","required":["midpoint","activating_planet","aspect_type","orb","is_direct","interpretation"],"properties":{"activating_planet":{"type":"string","description":"Activating planet"},"aspect_type":{"type":"string","description":"Aspect type to midpoint (conjunction, square, etc.)"},"interpretation":{"type":"string","description":"Brief interpretation"},"is_direct":{"type":"boolean","description":"Whether it's to direct or indirect midpoint"},"midpoint":{"type":"string","description":"Midpoint being activated"},"orb":{"type":"number","format":"double","description":"Orb of the aspect"}}},"MidpointInfo":{"type":"object","description":"Information about a midpoint","required":["planet1","planet2","notation","direct","indirect","arc","sign","degree_in_sign"],"properties":{"arc":{"type":"number","format":"double","description":"Arc between the two planets"},"degree_in_sign":{"type":"number","format":"double","description":"Degree within sign"},"direct":{"type":"number","format":"double","description":"Direct midpoint longitude (0-360°)"},"indirect":{"type":"number","format":"double","description":"Indirect midpoint (180° opposite)"},"notation":{"type":"string","description":"Notation (e.g., \"Sun/Moon\")"},"planet1":{"type":"string","description":"First planet"},"planet2":{"type":"string","description":"Second planet"},"sign":{"type":"string","description":"Sign of direct midpoint"}}},"MidpointsRequest":{"type":"object","description":"Request for midpoint calculation","properties":{"datetime":{"type":["string","null"],"description":"Birth date/time (ISO format) or provide planets directly"},"find_activations":{"type":"boolean","description":"Find planetary pictures (A = B/C patterns)"},"include_dials":{"type":"boolean","description":"Include Uranian dial formats (45°, 90°)"},"latitude":{"type":["number","null"],"format":"double","description":"Latitude (required if datetime provided)"},"longitude":{"type":["number","null"],"format":"double","description":"Longitude (required if datetime provided)"},"orb":{"type":"number","format":"double","description":"Orb for midpoint activations (degrees)"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPositionInput"},"description":"Or provide planets directly"}}},"MidpointsResponse":{"type":"object","description":"Midpoints calculation response","required":["planet_count","midpoint_count","midpoints","activations","planetary_pictures"],"properties":{"activations":{"type":"array","items":{"$ref":"#/components/schemas/MidpointActivationInfo"},"description":"Activated midpoints (planets conjunct/square midpoints)"},"datetime":{"type":["string","null"],"description":"Input datetime (if provided)"},"dial_45":{"type":["array","null"],"items":{"$ref":"#/components/schemas/DialPosition"},"description":"45° dial positions (if requested)"},"dial_90":{"type":["array","null"],"items":{"$ref":"#/components/schemas/DialPosition"},"description":"90° dial positions (if requested)"},"midpoint_count":{"type":"integer","description":"Total midpoints calculated","minimum":0},"midpoints":{"type":"array","items":{"$ref":"#/components/schemas/MidpointInfo"},"description":"All midpoints"},"planet_count":{"type":"integer","description":"Number of planets analyzed","minimum":0},"planetary_pictures":{"type":"array","items":{"$ref":"#/components/schemas/PlanetaryPictureInfo"},"description":"Planetary pictures found"}}},"ModalityBalanceResponse":{"type":"object","description":"Modality balance for a chart","required":["chart_name","cardinal","fixed","mutable","dominant_modality"],"properties":{"cardinal":{"type":"integer","format":"int32","description":"Cardinal modality count","minimum":0},"chart_name":{"type":"string","description":"Chart name"},"dominant_modality":{"type":"string","description":"Dominant modality"},"fixed":{"type":"integer","format":"int32","description":"Fixed modality count","minimum":0},"mutable":{"type":"integer","format":"int32","description":"Mutable modality count","minimum":0}}},"MonthlyHoroscopeRequest":{"type":"object","description":"Request for monthly horoscope","required":["sun_sign"],"properties":{"language":{"type":"string","description":"Language"},"month":{"type":["integer","null"],"format":"int32","description":"Month (1-12)","minimum":0},"style":{"type":"string","description":"Style"},"sun_sign":{"type":"string","description":"Sun sign (1-12) or sign name"},"year":{"type":["integer","null"],"format":"int32","description":"Year"}}},"MonthlyProfection":{"type":"object","description":"Monthly profection","required":["month","profected_house","profected_sign","ruler"],"properties":{"month":{"type":"integer","format":"int32","description":"Month number (1-12 from birthday)","minimum":0},"profected_house":{"type":"integer","format":"int32","description":"Profected house for this month","minimum":0},"profected_sign":{"type":"string","description":"Profected sign"},"ruler":{"type":"string","description":"Monthly ruler"}}},"MoonAspectInfo":{"type":"object","description":"Moon aspect information","required":["planet","aspect_type","degrees_to_exact","hours_to_exact","applying"],"properties":{"applying":{"type":"boolean","description":"Is applying (vs separating)"},"aspect_type":{"type":"string","description":"Aspect type"},"degrees_to_exact":{"type":"number","format":"double","description":"Degrees until exact"},"hours_to_exact":{"type":"number","format":"double","description":"Hours until exact (approx)"},"planet":{"type":"string","description":"Planet aspected"}}},"MoonPhaseInfo":{"type":"object","description":"Moon phase information","required":["phase_name","phase_angle","illumination","days_until_full","days_until_new"],"properties":{"days_until_full":{"type":"integer","format":"int32"},"days_until_new":{"type":"integer","format":"int32"},"illumination":{"type":"number","format":"double"},"phase_angle":{"type":"number","format":"double"},"phase_name":{"type":"string"}}},"MoonPhaseRequest":{"type":"object","description":"Request for moon phase calculation","properties":{"datetime":{"type":["string","null"],"description":"Date/time as ISO 8601 string (alternative to julian_day)"},"julian_day":{"type":["number","null"],"format":"double","description":"Julian Day number (optional, defaults to now)"}}},"MoonPhaseResponse":{"type":"object","description":"Response with detailed moon phase information","required":["julian_day","datetime","phase_name","phase_angle","illumination","age_days","is_waxing","moon_sign","moon_longitude","sun_longitude","next_new_moon","next_full_moon","next_first_quarter","next_last_quarter","void_of_course","distance_km","apparent_diameter"],"properties":{"age_days":{"type":"number","format":"double","description":"Age of the Moon in days since New Moon"},"apparent_diameter":{"type":"number","format":"double","description":"Moon's apparent diameter in arcminutes"},"datetime":{"type":"string","description":"Date/time"},"distance_km":{"type":"number","format":"double","description":"Moon's distance from Earth in km"},"illumination":{"type":"number","format":"double","description":"Illumination percentage (0-100)"},"is_waxing":{"type":"boolean","description":"Is the Moon waxing (growing)"},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"moon_longitude":{"type":"number","format":"double","description":"Moon's ecliptic longitude"},"moon_sign":{"type":"string","description":"Moon's zodiac sign"},"next_first_quarter":{"type":"string","description":"Date/time of next First Quarter"},"next_full_moon":{"type":"string","description":"Date/time of next Full Moon"},"next_last_quarter":{"type":"string","description":"Date/time of next Last Quarter"},"next_new_moon":{"type":"string","description":"Date/time of next New Moon"},"phase_angle":{"type":"number","format":"double","description":"Phase angle in degrees (0=New, 90=First Quarter, 180=Full, 270=Last Quarter)"},"phase_name":{"type":"string","description":"Phase name (New Moon, Waxing Crescent, etc.)"},"sun_longitude":{"type":"number","format":"double","description":"Sun's ecliptic longitude"},"void_of_course":{"type":"boolean","description":"Is Moon void of course"}}},"MoonPhaseTimingRequest":{"type":"object","description":"Request for Moon phase timing interpretation","required":["phase"],"properties":{"phase":{"type":"string","description":"Moon phase (New Moon, Waxing Crescent, First Quarter, Waxing Gibbous,\nFull Moon, Waning Gibbous, Last Quarter, Waning Crescent)","example":"Waxing Gibbous"}}},"MoonPhaseTimingResponse":{"type":"object","description":"Response with Moon phase timing interpretation","required":["phase","symbol","timing_meaning","best_for","not_ideal_for","energy"],"properties":{"best_for":{"type":"array","items":{"type":"string"},"description":"Best activities during this phase"},"energy":{"type":"string","description":"Energy quality"},"not_ideal_for":{"type":"array","items":{"type":"string"},"description":"Activities not ideal during this phase"},"phase":{"type":"string","description":"Phase name"},"symbol":{"type":"string","description":"Phase symbol"},"timing_meaning":{"type":"string","description":"Timing meaning for this phase"}}},"MoonSignInterpretRequest":{"type":"object","description":"Request for Moon sign interpretation","required":["sign"],"properties":{"sign":{"type":"string","description":"Moon sign (0=Aries through 11=Pisces) or sign name","example":"Cancer"}}},"MoonSignInterpretResponse":{"type":"object","description":"Response with Moon sign interpretation","required":["sign","element","modality","emotional_tone","nurturing_needs","favorable_activities","keywords","mood_influence","self_care"],"properties":{"element":{"type":"string","description":"Element (Fire, Earth, Air, Water)"},"emotional_tone":{"type":"string","description":"Emotional tone when Moon is in this sign"},"favorable_activities":{"type":"array","items":{"type":"string"},"description":"Best activities for this Moon sign"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords"},"modality":{"type":"string","description":"Modality (Cardinal, Fixed, Mutable)"},"mood_influence":{"type":"string","description":"How this Moon affects mood"},"nurturing_needs":{"type":"string","description":"What nurtures us during this Moon"},"self_care":{"type":"string","description":"Recommended self-care"},"sign":{"type":"string","description":"Sign name"}}},"NakshatraInterpretRequest":{"type":"object","description":"Request for Nakshatra interpretation","required":["moon_longitude"],"properties":{"ayanamsa":{"type":"string","description":"Ayanamsa for sidereal calculation"},"moon_longitude":{"type":"number","format":"double","description":"Moon longitude in degrees (0-360)","example":25.87},"sidereal":{"type":"boolean","description":"Whether to use sidereal position (recommended for Vedic)"}}},"NakshatraInterpretResponse":{"type":"object","description":"Response with Nakshatra interpretation","required":["nakshatra_index","name","sanskrit_meaning","deity","symbol","nature","guna","gana","animal","general_meaning","moon_meaning","ascendant_meaning","pada","navamsa_sign"],"properties":{"animal":{"type":"string","description":"Animal symbol"},"ascendant_meaning":{"type":"string","description":"Ascendant in this Nakshatra interpretation"},"deity":{"type":"string","description":"Ruling deity"},"gana":{"type":"string","description":"Gana (Deva, Manushya, Rakshasa)"},"general_meaning":{"type":"string","description":"General meaning/interpretation"},"guna":{"type":"string","description":"Guna (Sattva, Rajas, Tamas)"},"moon_meaning":{"type":"string","description":"Moon in this Nakshatra interpretation"},"nakshatra_index":{"type":"integer","format":"int32","description":"Nakshatra index (1-27)","minimum":0},"name":{"type":"string","description":"Nakshatra name"},"nature":{"type":"string","description":"Nature (Kshipra, Ugra, etc.)"},"navamsa_sign":{"type":"string","description":"Navamsa sign for this pada"},"pada":{"type":"integer","format":"int32","description":"Pada (quarter) within the Nakshatra (1-4)","minimum":0},"sanskrit_meaning":{"type":"string","description":"Sanskrit meaning"},"symbol":{"type":"string","description":"Symbol"}}},"NatalChartRequest":{"type":"object","description":"Request for natal chart SVG","required":["chart"],"properties":{"chart":{"$ref":"#/components/schemas/ChartDataInput","description":"Chart data (from calculate/chart)"},"height":{"type":"integer","format":"int32","description":"Height in pixels","minimum":0},"show_aspects":{"type":"boolean","description":"Show aspects"},"show_degrees":{"type":"boolean","description":"Show degree labels"},"style":{"type":"string","description":"Chart style: \"modern\", \"classic\", \"minimal\", \"dark\""},"width":{"type":"integer","format":"int32","description":"Width in pixels","minimum":0}}},"NatalChartWithTemplateRequest":{"type":"object","description":"Request for natal chart SVG with a full ChartDesignTemplate","required":["chart","template"],"properties":{"chart":{"$ref":"#/components/schemas/ChartDataInput","description":"Chart data (from calculate/chart)"},"height":{"type":"integer","format":"int32","description":"Height in pixels","minimum":0},"interactive":{"type":"boolean","description":"Enable interactive features (data attributes, tooltips)"},"show_aspects":{"type":"boolean","description":"Show aspects"},"show_degrees":{"type":"boolean","description":"Show degree labels"},"template":{"description":"Full ChartDesignTemplate JSON object (from @astrocalc/chart-template)"},"width":{"type":"integer","format":"int32","description":"Width in pixels","minimum":0}}},"NatalDataInput":{"type":"object","description":"Natal data input for transit calculation","required":["planets"],"properties":{"ascendant":{"type":["number","null"],"format":"double","description":"Ascendant longitude"},"midheaven":{"type":["number","null"],"format":"double","description":"Midheaven longitude"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPositionInput"},"description":"Natal planet positions"}}},"NatalInterpretRequest":{"type":"object","description":"Request for natal interpretation","required":["planets"],"properties":{"aspects":{"type":"array","items":{"$ref":"#/components/schemas/InterpretAspectInput"},"description":"Aspects to interpret"},"language":{"type":"string","description":"Language: ISO 639-1 code of any supported European language (e.g. \"en\", \"de\", \"fr\", \"pl\", \"sv\")"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/InterpretPlanetInput"},"description":"Planet positions with signs and houses"},"style":{"type":"string","description":"Interpretation style: \"mystical\", \"psychological\", \"practical\", etc."}}},"NearbyLine":{"type":"object","description":"A line near the target location","required":["planet","line_type","distance","direction","influence"],"properties":{"direction":{"type":"string","description":"Direction from location (N, S, E, W)"},"distance":{"type":"number","format":"double","description":"Distance in degrees"},"influence":{"type":"string","description":"Influence strength based on distance"},"line_type":{"type":"string","description":"Line type"},"planet":{"type":"string","description":"Planet"}}},"NotableTransit":{"type":"object","description":"Notable transit event","required":["description","importance","planets","meaning"],"properties":{"description":{"type":"string","description":"Transit description"},"importance":{"type":"string","description":"Importance level (high, medium, low)"},"meaning":{"type":"string","description":"Brief meaning"},"planets":{"type":"array","items":{"type":"string"},"description":"Planets involved"}}},"ParanPoint":{"type":"object","description":"Paran point (where two lines cross)","required":["planet1","line1","planet2","line2","latitude","longitude","interpretation","beneficial","intensity"],"properties":{"beneficial":{"type":"boolean","description":"Is this a beneficial combination"},"intensity":{"type":"string","description":"Intensity (strong, moderate, subtle)"},"interpretation":{"type":"string","description":"Interpretation"},"latitude":{"type":"number","format":"double","description":"Latitude of crossing"},"line1":{"type":"string","description":"First line type"},"line2":{"type":"string","description":"Second line type"},"longitude":{"type":"number","format":"double","description":"Longitude of crossing"},"planet1":{"type":"string","description":"First planet"},"planet2":{"type":"string","description":"Second planet"}}},"PaymentMethod":{"type":"object","description":"Payment method","required":["id","method_type","is_default"],"properties":{"brand":{"type":["string","null"],"description":"Card brand (visa, mastercard, etc.)"},"exp_month":{"type":["integer","null"],"format":"int32","description":"Expiration month"},"exp_year":{"type":["integer","null"],"format":"int32","description":"Expiration year"},"id":{"type":"string","description":"Payment method ID"},"is_default":{"type":"boolean","description":"Whether this is the default payment method"},"last4":{"type":["string","null"],"description":"Last 4 digits (for cards)"},"method_type":{"type":"string","description":"Type (card, sepa_debit, etc.)"}}},"PaymentMethodsResponse":{"type":"object","description":"List of payment methods","required":["payment_methods"],"properties":{"payment_methods":{"type":"array","items":{"$ref":"#/components/schemas/PaymentMethod"},"description":"Payment methods"}}},"PerfectionAnalysis":{"type":"object","description":"Perfection analysis","required":["will_perfect","description","involved_planets","prohibitions"],"properties":{"description":{"type":"string","description":"Description of perfection path"},"involved_planets":{"type":"array","items":{"type":"string"},"description":"Planets involved in perfection"},"perfection_type":{"type":["string","null"],"description":"Perfection type (if applicable)"},"prohibitions":{"type":"array","items":{"$ref":"#/components/schemas/ProhibitionInfo"},"description":"Prohibitions or frustrations"},"timing_estimate":{"type":["string","null"],"description":"Timing estimate"},"will_perfect":{"type":"boolean","description":"Will perfection occur?"}}},"PeriodInterpretation":{"type":"object","description":"Interpretation for a Dasha period","required":["lord","period_type","start_date","end_date","days_remaining","percent_complete","general_themes","positive_effects","challenging_effects","remedies"],"properties":{"challenging_effects":{"type":"string","description":"Challenging effects during this period"},"days_remaining":{"type":"integer","format":"int32","description":"Days remaining in period","minimum":0},"end_date":{"type":"string","description":"End date of period"},"general_themes":{"type":"string","description":"General themes of this period"},"lord":{"type":"string","description":"Lord of the period (planet/yogini/sign)"},"percent_complete":{"type":"number","format":"double","description":"Percent complete"},"period_type":{"type":"string","description":"Type of period (Mahadasha, Antardasha, Pratyantardasha)"},"positive_effects":{"type":"string","description":"Positive effects during this period"},"remedies":{"type":"string","description":"Remedies and recommendations"},"start_date":{"type":"string","description":"Start date of period"}}},"PlanetCharacteristicsInfo":{"type":"object","description":"Planet characteristics","required":["element","quality","keywords"],"properties":{"element":{"type":"string","description":"Elemental association (Fire, Earth, Air, Water)"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords"},"quality":{"type":"string","description":"Quality (Hot/Dry, Cold/Wet, etc.)"}}},"PlanetLineMeaning":{"type":"object","description":"Meaning of a planet on a specific line type","required":["planet","interpretation","keywords"],"properties":{"interpretation":{"type":"string","description":"Brief interpretation"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords"},"planet":{"type":"string","description":"Planet"}}},"PlanetPosition":{"type":"object","description":"Individual planet position","required":["name","longitude","latitude","distance","speed","retrograde","sign","sign_name","degree_in_sign"],"properties":{"degree_in_sign":{"type":"number","format":"double","description":"Degree within sign (0-30)","example":10.5},"distance":{"type":"number","format":"double","description":"Distance from Earth in AU","example":0.983},"latitude":{"type":"number","format":"double","description":"Ecliptic latitude in degrees","example":0.0},"longitude":{"type":"number","format":"double","description":"Ecliptic longitude in degrees (0-360)","example":280.5},"name":{"type":"string","description":"Planet name","example":"Sun"},"retrograde":{"type":"boolean","description":"Is retrograde"},"sign":{"type":"integer","format":"int32","description":"Zodiac sign (0-11)","minimum":0},"sign_name":{"type":"string","description":"Sign name","example":"Capricorn"},"speed":{"type":"number","format":"double","description":"Daily motion in degrees/day","example":1.02}}},"PlanetPositionEntry":{"type":"object","description":"Planet position comparison entry","required":["planet","positions","signs"],"properties":{"planet":{"type":"string","description":"Planet name"},"positions":{"type":"array","items":{"type":"string"},"description":"Positions by chart (in order)"},"signs":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"Sign indices by chart"}}},"PlanetPositionInput":{"type":"object","description":"Planet position input for aspect calculation","required":["name","longitude"],"properties":{"longitude":{"type":"number","format":"double","description":"Ecliptic longitude"},"name":{"type":"string","description":"Planet name"}}},"PlanetRequest":{"type":"object","description":"Request for planetary position calculation","required":["julian_day"],"properties":{"ayanamsa":{"type":["string","null"],"description":"Ayanamsa for sidereal (e.g., \"lahiri\", \"raman\")"},"julian_day":{"type":"number","format":"double","description":"Julian Day number","example":2451545.0},"planets":{"type":"array","items":{"type":"string"},"description":"Planets to calculate (optional, defaults to all)","example":["Sun","Moon","Mercury","Venus","Mars"]},"sidereal":{"type":"boolean","description":"Use sidereal calculations"}}},"PlanetResponse":{"type":"object","description":"Response with planetary positions","required":["julian_day","planets","sidereal"],"properties":{"ayanamsa":{"type":["string","null"],"description":"Ayanamsa used (if sidereal)"},"julian_day":{"type":"number","format":"double","description":"Julian Day used for calculation"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPosition"},"description":"Planetary positions"},"sidereal":{"type":"boolean","description":"Whether sidereal positions were calculated"}}},"PlanetaryHourRequest":{"type":"object","description":"Request for planetary hour calculation","properties":{"datetime":{"type":["string","null"],"description":"Date/time as ISO 8601 string (alternative to julian_day)"},"julian_day":{"type":["number","null"],"format":"double","description":"Julian Day number (optional, defaults to now)"},"latitude":{"type":"number","format":"double","description":"Observer latitude (for accurate sunrise/sunset)"},"longitude":{"type":"number","format":"double","description":"Observer longitude"}}},"PlanetaryHourResponse":{"type":"object","description":"Response with planetary hour information","required":["julian_day","datetime","day_of_week","day_ruler","hour_ruler","hour_number","is_day_hour","hour_start","hour_end","favorable_activities","planet_characteristics","all_hours"],"properties":{"all_hours":{"type":"array","items":{"$ref":"#/components/schemas/HourInfo"},"description":"All 24 hours of the day"},"datetime":{"type":"string","description":"Date/time"},"day_of_week":{"type":"string","description":"Day of week"},"day_ruler":{"type":"string","description":"Planetary ruler of the day"},"favorable_activities":{"type":"array","items":{"type":"string"},"description":"Activities favorable during this planetary hour"},"hour_end":{"type":"string","description":"Hour end time"},"hour_number":{"type":"integer","format":"int32","description":"Hour number (1-24)"},"hour_ruler":{"type":"string","description":"Planetary ruler of the current hour"},"hour_start":{"type":"string","description":"Hour start time"},"is_day_hour":{"type":"boolean","description":"Is this a day hour (true) or night hour (false)"},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"planet_characteristics":{"$ref":"#/components/schemas/PlanetCharacteristicsInfo","description":"Characteristics of the ruling planet"}}},"PlanetaryPictureInfo":{"type":"object","description":"Planetary picture (A = B/C)","required":["focal_planet","midpoint_planet1","midpoint_planet2","notation","orb","interpretation"],"properties":{"focal_planet":{"type":"string","description":"Focal planet (at the midpoint)"},"interpretation":{"type":"string","description":"Interpretation"},"midpoint_planet1":{"type":"string","description":"First midpoint planet"},"midpoint_planet2":{"type":"string","description":"Second midpoint planet"},"notation":{"type":"string","description":"Notation (e.g., \"Mars = Sun/Moon\")"},"orb":{"type":"number","format":"double","description":"Orb"}}},"PlansResponse":{"type":"object","description":"List of available subscription plans","required":["plans"],"properties":{"plans":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionPlan"},"description":"Available plans"}}},"PowerPlace":{"type":"object","description":"Power place summary","required":["region","latitude","longitude","strong_planets","influence","best_for"],"properties":{"best_for":{"type":"string","description":"Best for"},"influence":{"type":"string","description":"Overall influence"},"latitude":{"type":"number","format":"double","description":"Approximate latitude"},"longitude":{"type":"number","format":"double","description":"Approximate longitude"},"region":{"type":"string","description":"Description of the area"},"strong_planets":{"type":"array","items":{"type":"string"},"description":"Planets strong here"}}},"PresetConfigRequest":{"type":"object","description":"Create preset configuration request","required":["preset"],"properties":{"preset":{"type":"string","description":"Preset name (western_modern, vedic, psychological, etc.)","example":"western_modern"}}},"ProfectedPlanetInfo":{"type":"object","description":"Profected planet information","required":["name","natal_house","natal_sign","profected_house","profected_sign","is_time_lord","natal_longitude"],"properties":{"is_time_lord":{"type":"boolean","description":"Is this planet the time lord"},"name":{"type":"string","description":"Planet name"},"natal_house":{"type":"integer","format":"int32","description":"Natal house","minimum":0},"natal_longitude":{"type":"number","format":"double","description":"Natal longitude"},"natal_sign":{"type":"string","description":"Natal sign"},"profected_house":{"type":"integer","format":"int32","description":"Profected house","minimum":0},"profected_sign":{"type":"string","description":"Profected sign"}}},"ProfectionTheme":{"type":"object","description":"Profection theme","required":["theme","description","based_on"],"properties":{"based_on":{"type":"string","description":"Based on"},"description":{"type":"string","description":"Description"},"theme":{"type":"string","description":"Theme name"}}},"ProfectionsRequest":{"type":"object","description":"Request for annual profections calculation","required":["birth_datetime","birth_latitude","birth_longitude","profection_date"],"properties":{"birth_datetime":{"type":"string","description":"Natal birth date/time (ISO format)"},"birth_latitude":{"type":"number","format":"double","description":"Birth latitude"},"birth_longitude":{"type":"number","format":"double","description":"Birth longitude"},"house_system":{"type":"string","description":"House system code"},"profection_date":{"type":"string","description":"Target date for profections (ISO format)"}}},"ProfectionsResponse":{"type":"object","description":"Profections calculation response","required":["birth_datetime","profection_date","age","profected_house","profected_sign","time_lord","time_lord_natal","profected_planets","annual_themes","monthly_profections"],"properties":{"age":{"type":"integer","format":"int32","description":"Age in years"},"annual_themes":{"type":"array","items":{"$ref":"#/components/schemas/ProfectionTheme"},"description":"Annual themes"},"birth_datetime":{"type":"string","description":"Birth date/time"},"monthly_profections":{"type":"array","items":{"$ref":"#/components/schemas/MonthlyProfection"},"description":"Monthly profections (12 months)"},"profected_house":{"type":"integer","format":"int32","description":"Profected house (1-12)","minimum":0},"profected_planets":{"type":"array","items":{"$ref":"#/components/schemas/ProfectedPlanetInfo"},"description":"All profected planetary positions"},"profected_sign":{"type":"string","description":"Profected sign"},"profection_date":{"type":"string","description":"Profection date"},"time_lord":{"type":"string","description":"Time lord (ruler of profected sign)"},"time_lord_natal":{"$ref":"#/components/schemas/ProfectedPlanetInfo","description":"Time lord's natal position"}}},"ProgressedAngles":{"type":"object","description":"Progressed angles","required":["ascendant","ascendant_sign","midheaven","midheaven_sign","ascendant_rate","midheaven_rate"],"properties":{"ascendant":{"type":"number","format":"double","description":"Progressed Ascendant"},"ascendant_rate":{"type":"number","format":"double","description":"Ascendant movement per year"},"ascendant_sign":{"type":"string","description":"Ascendant sign"},"midheaven":{"type":"number","format":"double","description":"Progressed Midheaven"},"midheaven_rate":{"type":"number","format":"double","description":"MC movement per year"},"midheaven_sign":{"type":"string","description":"Midheaven sign"}}},"ProgressedAspect":{"type":"object","description":"Aspect between progressed and natal positions","required":["progressed_planet","natal_planet","aspect_type","orb","exact","applying","interpretation"],"properties":{"applying":{"type":"boolean","description":"Is applying"},"aspect_type":{"type":"string","description":"Aspect type"},"exact":{"type":"boolean","description":"Is exact (within 1 degree)"},"interpretation":{"type":"string","description":"Interpretation"},"natal_planet":{"type":"string","description":"Natal planet/point"},"orb":{"type":"number","format":"double","description":"Orb"},"progressed_planet":{"type":"string","description":"Progressed planet"}}},"ProgressedPlanetPosition":{"type":"object","description":"Progressed planet position","required":["name","natal_longitude","progressed_longitude","movement","sign","sign_name","degree_in_sign","speed","retrograde","sign_changed"],"properties":{"degree_in_sign":{"type":"number","format":"double","description":"Degree within sign"},"movement":{"type":"number","format":"double","description":"Movement since birth (degrees)"},"name":{"type":"string","description":"Planet name"},"natal_longitude":{"type":"number","format":"double","description":"Natal longitude"},"progressed_longitude":{"type":"number","format":"double","description":"Progressed longitude"},"retrograde":{"type":"boolean","description":"Retrograde"},"sign":{"type":"integer","format":"int32","description":"Sign (0-11)","minimum":0},"sign_changed":{"type":"boolean","description":"If sign changed from natal"},"sign_name":{"type":"string","description":"Sign name"},"speed":{"type":"number","format":"double","description":"Speed (degrees per year of life)"}}},"ProgressionsRequest":{"type":"object","description":"Request for secondary progressions calculation","required":["birth_datetime","birth_latitude","birth_longitude","progression_date"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time (ISO format)"},"birth_latitude":{"type":"number","format":"double","description":"Birth latitude"},"birth_longitude":{"type":"number","format":"double","description":"Birth longitude"},"house_system":{"type":"string","description":"House system code"},"include_natal_aspects":{"type":"boolean","description":"Include aspects to natal positions"},"planets":{"type":"array","items":{"type":"string"},"description":"Planets to calculate (empty = all)"},"progression_date":{"type":"string","description":"Target date for progressions (ISO format)"}}},"ProgressionsResponse":{"type":"object","description":"Secondary progressions response","required":["birth_datetime","progression_date","years_elapsed","progressed_day","julian_day","progressed_planets","progressed_angles","key_progressions"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time"},"julian_day":{"type":"number","format":"double","description":"Julian Day of progressed date"},"key_progressions":{"type":"array","items":{"$ref":"#/components/schemas/KeyProgression"},"description":"Key progressions summary"},"natal_aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ProgressedAspect"},"description":"Aspects to natal chart (if requested)"},"progressed_angles":{"$ref":"#/components/schemas/ProgressedAngles","description":"Progressed angles (ASC, MC)"},"progressed_day":{"type":"string","description":"Progressed day (birth + years as days)"},"progressed_planets":{"type":"array","items":{"$ref":"#/components/schemas/ProgressedPlanetPosition"},"description":"Progressed planetary positions"},"progression_date":{"type":"string","description":"Progression date"},"years_elapsed":{"type":"number","format":"double","description":"Years since birth"}}},"ProhibitionInfo":{"type":"object","description":"Prohibition or frustration","required":["prohibition_type","planet","description"],"properties":{"description":{"type":"string","description":"Description"},"planet":{"type":"string","description":"Prohibiting planet"},"prohibition_type":{"type":"string","description":"Prohibition type"}}},"QuickCompatibilityRequest":{"type":"object","description":"Request for quick compatibility score","required":["chart_a","chart_b"],"properties":{"chart_a":{"$ref":"#/components/schemas/ComparisonChartInput","description":"First chart"},"chart_b":{"$ref":"#/components/schemas/ComparisonChartInput","description":"Second chart"}}},"QuickCompatibilityResponse":{"type":"object","description":"Quick compatibility score response","required":["chart_a","chart_b","score","description"],"properties":{"chart_a":{"type":"string","description":"First chart name"},"chart_b":{"type":"string","description":"Second chart name"},"description":{"type":"string","description":"Brief description"},"score":{"type":"number","format":"double","description":"Overall compatibility percentage (0-100)"}}},"RankedDay":{"type":"object","description":"A ranked day for an activity","required":["date","score","rating","moon_phase","moon_sign","factors","recommendation"],"properties":{"date":{"type":"string","description":"Date"},"factors":{"type":"array","items":{"$ref":"#/components/schemas/DayFactor"},"description":"Key factors affecting this day"},"moon_phase":{"type":"string","description":"Moon phase on this day"},"moon_sign":{"type":"string","description":"Moon sign on this day"},"rating":{"type":"string","description":"Rating: \"excellent\", \"good\", \"neutral\", \"challenging\""},"recommendation":{"type":"string","description":"Brief recommendation"},"score":{"type":"integer","format":"int32","description":"Score (0-100)"}}},"ReceptionInfo":{"type":"object","description":"Reception between two planets","required":["planet1","planet2","reception_type","description","strength","favorable"],"properties":{"description":{"type":"string","description":"Description of the reception"},"favorable":{"type":"boolean","description":"Is favorable for the question"},"planet1":{"type":"string","description":"First planet"},"planet2":{"type":"string","description":"Second planet"},"reception_type":{"type":"string","description":"Reception type (mutual, mixed, none)"},"strength":{"type":"string","description":"Strength (strong, moderate, weak)"}}},"RegisterWebhookRequest":{"type":"object","description":"Webhook registration request","required":["url","events"],"properties":{"description":{"type":["string","null"],"description":"Optional description"},"events":{"type":"array","items":{"type":"string"},"description":"Events to subscribe to"},"url":{"type":"string","description":"URL to send webhook events to"}}},"RelationshipTheme":{"type":"object","description":"Relationship theme from composite","required":["theme","description","based_on","strength"],"properties":{"based_on":{"type":"array","items":{"type":"string"},"description":"Based on which composite placements"},"description":{"type":"string","description":"Description"},"strength":{"type":"string","description":"Strength (strong, moderate, subtle)"},"theme":{"type":"string","description":"Theme name"}}},"ReportChartData":{"type":"object","description":"Chart data for report generation","required":["name","birth_date","latitude","longitude","planets"],"properties":{"ascendant":{"type":["number","null"],"format":"double","description":"Ascendant degree (optional)"},"birth_date":{"type":"string","description":"Birth date (ISO format)"},"birth_location":{"type":["string","null"],"description":"Birth location"},"birth_time":{"type":["string","null"],"description":"Birth time (HH:MM format, optional)"},"houses":{"type":["array","null"],"items":{"type":"number","format":"double"},"description":"House cusps (optional)"},"latitude":{"type":"number","format":"double","description":"Latitude"},"longitude":{"type":"number","format":"double","description":"Longitude"},"midheaven":{"type":["number","null"],"format":"double","description":"Midheaven degree (optional)"},"name":{"type":"string","description":"Person's name"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/ReportPlanetData"},"description":"Planetary positions"}}},"ReportOptions":{"type":"object","description":"Report generation options","properties":{"detailed_aspects":{"type":"boolean","description":"Include detailed aspect analysis"},"footer_text":{"type":["string","null"],"description":"Custom footer text"},"header_text":{"type":["string","null"],"description":"Custom header text"},"house_interpretations":{"type":"boolean","description":"Include house interpretations"},"include_transits":{"type":"boolean","description":"Include transit forecasts"}}},"ReportPlanetData":{"type":"object","description":"Planet data for report","required":["name","longitude","sign","house"],"properties":{"house":{"type":"integer","format":"int32","description":"House (1-12)","minimum":0},"longitude":{"type":"number","format":"double","description":"Longitude (0-360)"},"name":{"type":"string","description":"Planet name"},"retrograde":{"type":"boolean","description":"Is retrograde"},"sign":{"type":"integer","format":"int32","description":"Sign (1-12)","minimum":0}}},"ReportTemplate":{"type":"object","description":"Available report templates","required":["id","name","description","min_tier","languages","category"],"properties":{"category":{"type":"string","description":"Template category"},"description":{"type":"string","description":"Template description"},"id":{"type":"string","description":"Template ID"},"languages":{"type":"array","items":{"type":"string"},"description":"Supported languages"},"min_tier":{"type":"string","description":"Required subscription tier"},"name":{"type":"string","description":"Template name"}}},"ReturnTheme":{"type":"object","description":"Theme from return chart","required":["theme","description","based_on","importance"],"properties":{"based_on":{"type":"array","items":{"type":"string"},"description":"Based on which placements"},"description":{"type":"string","description":"Description"},"importance":{"type":"string","description":"Importance (major, significant, minor)"},"theme":{"type":"string","description":"Theme name"}}},"RevokeKeyRequest":{"type":"object","description":"Request to revoke an API key","required":["key_id"],"properties":{"key_id":{"type":"string","description":"The key ID to revoke"}}},"SaveChartRequest":{"type":"object","description":"Request to save a new chart","required":["name","birth_date","latitude","longitude"],"properties":{"birth_date":{"type":"string","description":"Birth date (ISO format)"},"birth_location":{"type":["string","null"],"description":"Birth location name"},"birth_time":{"type":["string","null"],"description":"Birth time (HH:MM)"},"chart_type":{"type":"string","description":"Chart type (natal, synastry, transit, etc.)"},"latitude":{"type":"number","format":"double","description":"Latitude"},"longitude":{"type":"number","format":"double","description":"Longitude"},"name":{"type":"string","description":"Chart name"},"notes":{"type":["string","null"],"description":"Notes"},"person_name":{"type":["string","null"],"description":"Person's name"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for organization"},"timezone":{"type":["string","null"],"description":"Timezone identifier"}}},"SavedChart":{"type":"object","description":"Saved chart data","required":["id","name","birth_date","latitude","longitude","chart_type","tags","created_at","updated_at"],"properties":{"birth_date":{"type":"string","description":"Birth date (ISO format)"},"birth_location":{"type":["string","null"],"description":"Birth location name"},"birth_time":{"type":["string","null"],"description":"Birth time (HH:MM)"},"chart_type":{"type":"string","description":"Chart type (natal, synastry, transit, etc.)"},"created_at":{"type":"string","description":"Creation timestamp"},"id":{"type":"string","description":"Chart ID"},"latitude":{"type":"number","format":"double","description":"Latitude"},"longitude":{"type":"number","format":"double","description":"Longitude"},"name":{"type":"string","description":"Chart name"},"notes":{"type":["string","null"],"description":"Notes"},"person_name":{"type":["string","null"],"description":"Person's name"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for organization"},"timezone":{"type":["string","null"],"description":"Timezone identifier"},"updated_at":{"type":"string","description":"Last updated timestamp"}}},"SetupIntentResponse":{"type":"object","description":"Setup intent for adding a payment method","required":["setup_intent_id","client_secret"],"properties":{"client_secret":{"type":"string","description":"Setup intent client secret"},"setup_intent_id":{"type":"string","description":"Setup intent ID"}}},"SiderealPlanetPosition":{"type":"object","description":"Sidereal planet position","required":["name","sidereal_longitude","rashi","rashi_name","degree_in_rashi","nakshatra","nakshatra_name","pada","nakshatra_lord"],"properties":{"degree_in_rashi":{"type":"number","format":"double","description":"Degree in rashi"},"nakshatra":{"type":"integer","format":"int32","description":"Nakshatra (1-27)","minimum":0},"nakshatra_lord":{"type":"string","description":"Nakshatra lord"},"nakshatra_name":{"type":"string","description":"Nakshatra name"},"name":{"type":"string","description":"Planet name"},"pada":{"type":"integer","format":"int32","description":"Nakshatra pada (1-4)","minimum":0},"rashi":{"type":"integer","format":"int32","description":"Rashi (Vedic sign, 1-12)","minimum":0},"rashi_name":{"type":"string","description":"Rashi name"},"sidereal_longitude":{"type":"number","format":"double","description":"Sidereal longitude"}}},"SignificatorInfo":{"type":"object","description":"Significator information","required":["role","house","ruler","ruler_sign","ruler_house","ruler_dignity","ruler_condition"],"properties":{"co_significator":{"type":["string","null"],"description":"Co-significator (Moon for querent often)"},"house":{"type":"integer","format":"int32","description":"House representing this significator","minimum":0},"natural_significator":{"type":["string","null"],"description":"Natural significator (if applicable)"},"role":{"type":"string","description":"Role (querent or quesited)"},"ruler":{"type":"string","description":"House ruler planet"},"ruler_condition":{"type":"string","description":"Ruler's condition summary"},"ruler_dignity":{"type":"integer","format":"int32","description":"Ruler's dignity score"},"ruler_house":{"type":"integer","format":"int32","description":"Ruler's current house","minimum":0},"ruler_sign":{"type":"string","description":"Ruler's current sign"}}},"SkyPlanet":{"type":"object","description":"Planet in the sky","required":["name","longitude","latitude","altitude","azimuth","sign","degree_in_sign","is_visible","retrograde"],"properties":{"altitude":{"type":"number","format":"double"},"azimuth":{"type":"number","format":"double"},"degree_in_sign":{"type":"number","format":"double"},"is_visible":{"type":"boolean"},"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"},"name":{"type":"string"},"retrograde":{"type":"boolean"},"sign":{"type":"string"}}},"SkyViewPlanetInput":{"type":"object","description":"Input for a planet in sky view","required":["name","ra","dec","magnitude"],"properties":{"dec":{"type":"number","format":"double","description":"Declination in degrees"},"magnitude":{"type":"number","format":"double","description":"Apparent magnitude"},"name":{"type":"string","description":"Planet name"},"ra":{"type":"number","format":"double","description":"Right ascension in degrees"},"retrograde":{"type":"boolean","description":"Is retrograde"}}},"SkyViewRequest":{"type":"object","description":"Request for sky view","required":["latitude","longitude"],"properties":{"datetime":{"type":["string","null"],"description":"Date/time (ISO format, defaults to now)"},"latitude":{"type":"number","format":"double","description":"Observer latitude"},"longitude":{"type":"number","format":"double","description":"Observer longitude"}}},"SkyViewResponse":{"type":"object","description":"Response for sky view","required":["datetime","location","planets","moon_phase","sun_times"],"properties":{"datetime":{"type":"string","description":"Date/time of the view"},"location":{"$ref":"#/components/schemas/LocationInfo","description":"Observer location"},"moon_phase":{"$ref":"#/components/schemas/MoonPhaseInfo","description":"Moon phase info"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/SkyPlanet"},"description":"Visible planets with positions"},"sun_times":{"$ref":"#/components/schemas/SunTimes","description":"Sunrise/sunset times"}}},"SkyViewStarInput":{"type":"object","description":"Input for a star in sky view","required":["name","ra","dec","magnitude"],"properties":{"dec":{"type":"number","format":"double","description":"Declination in degrees"},"magnitude":{"type":"number","format":"double","description":"Apparent magnitude"},"name":{"type":"string","description":"Star name"},"ra":{"type":"number","format":"double","description":"Right ascension in degrees"},"spectral_type":{"type":"string","description":"Spectral type (e.g., \"G2V\", \"A1V\")"}}},"SkyViewSvgRequest":{"type":"object","description":"Request for rendering sky view as SVG","required":["julian_day"],"properties":{"center_dec":{"type":"number","format":"double","description":"Center declination in degrees (-90 to 90)"},"center_ra":{"type":"number","format":"double","description":"Center right ascension in degrees (0-360)"},"datetime":{"type":["string","null"],"description":"Date/time string for display"},"fov":{"type":"number","format":"double","description":"Field of view in degrees"},"height":{"type":"integer","format":"int32","description":"Chart height in pixels","minimum":0},"invert":{"type":"boolean","description":"Invert colors (for printing)"},"julian_day":{"type":"number","format":"double","description":"Julian Day for the sky view (required)"},"latitude":{"type":["number","null"],"format":"double","description":"Observer latitude (-90 to 90)"},"limiting_magnitude":{"type":"number","format":"double","description":"Limiting magnitude for stars (smaller = brighter stars only)"},"longitude":{"type":["number","null"],"format":"double","description":"Observer longitude (-180 to 180)"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/SkyViewPlanetInput"},"description":"Planets to display"},"projection":{"type":"string","description":"Projection type: \"Stereographic\", \"Orthographic\", \"AzimuthalEquidistant\", \"Equirectangular\", \"Mollweide\""},"show_constellations":{"type":"boolean","description":"Show constellation lines"},"show_ecliptic":{"type":"boolean","description":"Show ecliptic line"},"show_planets":{"type":"boolean","description":"Show planets on the chart"},"stars":{"type":"array","items":{"$ref":"#/components/schemas/SkyViewStarInput"},"description":"Custom stars to display (if empty, use built-in catalog)"},"title":{"type":["string","null"],"description":"Chart title"},"width":{"type":"integer","format":"int32","description":"Chart width in pixels","minimum":0}}},"SkyViewSvgResponse":{"type":"object","description":"Response for sky view SVG rendering","required":["svg","width","height","projection","star_count","julian_day"],"properties":{"height":{"type":"integer","format":"int32","description":"Chart height","minimum":0},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"projection":{"type":"string","description":"Projection type used"},"star_count":{"type":"integer","description":"Number of stars rendered","minimum":0},"svg":{"type":"string","description":"SVG content"},"width":{"type":"integer","format":"int32","description":"Chart width","minimum":0}}},"SolarArcRequest":{"type":"object","description":"Request for solar arc directions","required":["birth_datetime","birth_latitude","birth_longitude","direction_date"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time (ISO format)"},"birth_latitude":{"type":"number","format":"double","description":"Birth latitude"},"birth_longitude":{"type":"number","format":"double","description":"Birth longitude"},"direction_date":{"type":"string","description":"Target date for solar arc (ISO format)"},"include_converse":{"type":"boolean","description":"Include converse directions"},"include_natal_aspects":{"type":"boolean","description":"Include aspects to natal positions"},"planets":{"type":"array","items":{"type":"string"},"description":"Planets to calculate (empty = all)"}}},"SolarArcResponse":{"type":"object","description":"Solar arc directions response","required":["birth_datetime","direction_date","years_elapsed","solar_arc","directed_planets","directed_angles","key_directions"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time"},"converse":{"oneOf":[{"$ref":"#/components/schemas/ConverseSolarArc","description":"Converse directions (if requested)"},{"type":"null"}]},"directed_angles":{"$ref":"#/components/schemas/DirectedAngles","description":"Directed angles"},"directed_planets":{"type":"array","items":{"$ref":"#/components/schemas/DirectedPlanetPosition"},"description":"Directed planetary positions"},"direction_date":{"type":"string","description":"Direction date"},"key_directions":{"type":"array","items":{"$ref":"#/components/schemas/KeyDirection"},"description":"Key directions summary"},"natal_aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/DirectedAspect"},"description":"Aspects to natal chart (if requested)"},"solar_arc":{"type":"number","format":"double","description":"Solar arc value (Sun's movement since birth)"},"years_elapsed":{"type":"number","format":"double","description":"Years since birth"}}},"SolarReturnRequest":{"type":"object","description":"Request for solar return chart calculation","required":["birth_datetime","birth_latitude","birth_longitude","return_year"],"properties":{"birth_datetime":{"type":"string","description":"Natal birth date/time (ISO format)"},"birth_latitude":{"type":"number","format":"double","description":"Birth latitude"},"birth_longitude":{"type":"number","format":"double","description":"Birth longitude"},"house_system":{"type":"string","description":"House system code"},"include_aspects":{"type":"boolean","description":"Include aspects"},"return_latitude":{"type":["number","null"],"format":"double","description":"Location for the solar return (defaults to birth location)"},"return_longitude":{"type":["number","null"],"format":"double","description":"Location for the solar return (defaults to birth location)"},"return_year":{"type":"integer","format":"int32","description":"Year for the solar return"}}},"SolarReturnResponse":{"type":"object","description":"Solar return chart response","required":["natal_sun_longitude","return_datetime","julian_day","return_year","return_location","planets","houses","year_themes"],"properties":{"aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/AspectData"},"description":"Aspects (if requested)"},"houses":{"$ref":"#/components/schemas/HouseResponse","description":"Solar return house cusps"},"julian_day":{"type":"number","format":"double","description":"Julian Day of solar return"},"natal_sun_longitude":{"type":"number","format":"double","description":"Natal Sun position"},"planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPosition"},"description":"Solar return planetary positions"},"return_datetime":{"type":"string","description":"Exact solar return moment"},"return_location":{"$ref":"#/components/schemas/LocationData","description":"Location used for return chart"},"return_year":{"type":"integer","format":"int32","description":"Return year"},"year_themes":{"type":"array","items":{"$ref":"#/components/schemas/ReturnTheme"},"description":"Year themes based on return chart"}}},"StarConjunctionInfo":{"type":"object","description":"Star conjunction with a chart point","required":["star_name","point_name","star_longitude","point_longitude","orb","interpretation"],"properties":{"interpretation":{"type":"string","description":"Traditional interpretation"},"orb":{"type":"number","format":"double","description":"Orb of conjunction"},"point_longitude":{"type":"number","format":"double","description":"Point longitude"},"point_name":{"type":"string","description":"Chart point name (planet, angle, etc.)"},"star_longitude":{"type":"number","format":"double","description":"Star longitude"},"star_name":{"type":"string","description":"Star name"}}},"StoredTemplate":{"type":"object","description":"Stored chart design template","required":["id","name","design","created_at","updated_at"],"properties":{"created_at":{"type":"string","description":"Creation timestamp"},"description":{"type":["string","null"],"description":"Template description"},"design":{"description":"Full template JSON"},"id":{"type":"string","description":"Template ID"},"is_default":{"type":"boolean","description":"Whether this is a built-in default"},"name":{"type":"string","description":"Template name"},"updated_at":{"type":"string","description":"Last update timestamp"}}},"SubscriptionPlan":{"type":"object","description":"Subscription plan details","required":["id","name","tier","price_monthly","price_annual","currency","requests_per_month","rate_limit","features","popular"],"properties":{"currency":{"type":"string","description":"Currency code"},"features":{"type":"array","items":{"type":"string"},"description":"Feature list"},"id":{"type":"string","description":"Plan ID"},"name":{"type":"string","description":"Plan name"},"popular":{"type":"boolean","description":"Whether plan is popular/recommended"},"price_annual":{"type":"integer","format":"int64","description":"Annual price in cents (with discount)"},"price_monthly":{"type":"integer","format":"int64","description":"Monthly price in cents"},"rate_limit":{"type":"integer","format":"int32","description":"Rate limit (requests per minute)"},"requests_per_month":{"type":"integer","format":"int64","description":"Requests per month limit"},"tier":{"type":"string","description":"Tier level"}}},"SubscriptionStatus":{"type":"object","description":"Current subscription status","required":["subscription_id","plan_id","plan_name","status","current_period_start","current_period_end","cancel_at_period_end","requests_used","requests_limit"],"properties":{"cancel_at_period_end":{"type":"boolean","description":"Whether subscription will cancel at period end"},"current_period_end":{"type":"string","description":"Current billing period end"},"current_period_start":{"type":"string","description":"Current billing period start"},"plan_id":{"type":"string","description":"Current plan ID"},"plan_name":{"type":"string","description":"Plan name"},"requests_limit":{"type":"integer","format":"int64","description":"Request limit for this period"},"requests_used":{"type":"integer","format":"int64","description":"Requests used this period"},"status":{"type":"string","description":"Subscription status"},"subscription_id":{"type":"string","description":"Subscription ID"},"trial_end":{"type":["string","null"],"description":"Trial end date (if applicable)"}}},"SuccessResponse":{"type":"object","description":"Generic success response","required":["message"],"properties":{"message":{"type":"string","description":"Success message"}}},"SunTimes":{"type":"object","description":"Sunrise/sunset times","required":["day_length_hours"],"properties":{"day_length_hours":{"type":"number","format":"double"},"solar_noon":{"type":["string","null"]},"sunrise":{"type":["string","null"]},"sunset":{"type":["string","null"]}}},"SynastryChartRequest":{"type":"object","description":"Request for synastry chart","required":["chart1","chart2"],"properties":{"chart1":{"$ref":"#/components/schemas/ChartDataInput","description":"First person's chart"},"chart2":{"$ref":"#/components/schemas/ChartDataInput","description":"Second person's chart"},"height":{"type":"integer","format":"int32","description":"Height","minimum":0},"style":{"type":"string","description":"Chart style"},"width":{"type":"integer","format":"int32","description":"Width","minimum":0}}},"SynastryInterpretRequest":{"type":"object","description":"Request for synastry interpretation","required":["person1_planets","person2_planets"],"properties":{"cross_aspects":{"type":"array","items":{"$ref":"#/components/schemas/InterpretAspectInput"},"description":"Cross-chart aspects"},"language":{"type":"string","description":"Language"},"person1_planets":{"type":"array","items":{"$ref":"#/components/schemas/InterpretPlanetInput"},"description":"First person's planets"},"person2_planets":{"type":"array","items":{"$ref":"#/components/schemas/InterpretPlanetInput"},"description":"Second person's planets"},"style":{"type":"string","description":"Style"}}},"SynastryWithTemplateRequest":{"type":"object","description":"Request for synastry chart SVG with a full ChartDesignTemplate","required":["chart1","chart2","template"],"properties":{"chart1":{"$ref":"#/components/schemas/ChartDataInput","description":"First chart data"},"chart2":{"$ref":"#/components/schemas/ChartDataInput","description":"Second chart data"},"height":{"type":"integer","format":"int32","description":"Height in pixels","minimum":0},"template":{"description":"Full ChartDesignTemplate JSON"},"width":{"type":"integer","format":"int32","description":"Width in pixels","minimum":0}}},"TargetLocationInput":{"type":"object","description":"Target location for specific analysis","required":["name","latitude","longitude"],"properties":{"latitude":{"type":"number","format":"double","description":"Latitude"},"longitude":{"type":"number","format":"double","description":"Longitude"},"name":{"type":"string","description":"Location name"}}},"TemplateListResponse":{"type":"object","description":"Response listing available templates","required":["templates","total"],"properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/StoredTemplate"},"description":"Available templates"},"total":{"type":"integer","description":"Total count","minimum":0}}},"TemplatesResponse":{"type":"object","description":"Response listing available templates","required":["templates","count"],"properties":{"count":{"type":"integer","description":"Total count","minimum":0},"templates":{"type":"array","items":{"$ref":"#/components/schemas/ReportTemplate"},"description":"Available templates"}}},"TimezoneInfo":{"type":"object","description":"A local time resolved in a time zone","required":["name","utc_offset_seconds","utc_datetime"],"properties":{"name":{"type":"string","description":"IANA time zone, e.g. \"Europe/Berlin\"","example":"Europe/Berlin"},"utc_datetime":{"type":"string","description":"The instant in UTC (RFC 3339)","example":"1988-03-14T05:42:00Z"},"utc_offset_seconds":{"type":"integer","format":"int32","description":"Offset from UTC at that instant in seconds (3600 for CET, 7200 for CEST)","example":3600}}},"TimezoneResponse":{"type":"object","description":"Time zone at a place, and optionally a local time converted to UTC","required":["timezone"],"properties":{"timezone":{"type":"string","description":"IANA time zone, e.g. \"Europe/Berlin\""},"utc_datetime":{"type":["string","null"],"description":"Present when the query had `datetime`"},"utc_offset_seconds":{"type":["integer","null"],"format":"int32","description":"Present when the query had `datetime`"}}},"TimingPlanetaryHourRequest":{"type":"object","description":"Request for planetary hour interpretation (timing context)","required":["planet"],"properties":{"planet":{"type":"string","description":"Planet name (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn)","example":"Jupiter"}}},"TimingPlanetaryHourResponse":{"type":"object","description":"Response with planetary hour interpretation (timing context)","required":["planet","symbol","meaning","best_for","avoid","energy","keywords"],"properties":{"avoid":{"type":"array","items":{"type":"string"},"description":"Activities to avoid during this hour"},"best_for":{"type":"array","items":{"type":"string"},"description":"Best activities for this planetary hour"},"energy":{"type":"string","description":"Energy quality of this hour"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords"},"meaning":{"type":"string","description":"Meaning of this planetary hour"},"planet":{"type":"string","description":"Planet name"},"symbol":{"type":"string","description":"Planet symbol"}}},"TimingQualityRequest":{"type":"object","description":"Request for timing quality rating","required":["score"],"properties":{"score":{"type":"integer","format":"int32","description":"Electional score (-100 to 100)","example":75}}},"TimingQualityResponse":{"type":"object","description":"Response with timing quality rating","required":["rating","quality_name","description","recommendation"],"properties":{"description":{"type":"string","description":"Description of this quality level"},"quality_name":{"type":"string","description":"Quality name (Excellent, Good, Fair, Poor, etc.)"},"rating":{"type":"integer","format":"int32","description":"Numeric rating (0-5)","minimum":0},"recommendation":{"type":"string","description":"Recommendation for this quality level"}}},"TransitAspect":{"type":"object","description":"Aspect between natal and transit planets","required":["transit_planet","natal_planet","aspect_type","angle","orb","applying","interpretation"],"properties":{"angle":{"type":"number","format":"double","description":"Exact aspect angle"},"applying":{"type":"boolean","description":"Is applying"},"aspect_type":{"type":"string","description":"Aspect type"},"interpretation":{"type":"string","description":"Interpretation hint"},"natal_planet":{"type":"string","description":"Natal planet/point"},"orb":{"type":"number","format":"double","description":"Orb"},"transit_planet":{"type":"string","description":"Transiting planet"}}},"TransitChartRequest":{"type":"object","description":"Request for transit chart","required":["natal_chart","transit_planets"],"properties":{"height":{"type":"integer","format":"int32","description":"Height","minimum":0},"natal_chart":{"$ref":"#/components/schemas/ChartDataInput","description":"Natal chart (inner)"},"style":{"type":"string","description":"Chart style"},"transit_planets":{"type":"array","items":{"$ref":"#/components/schemas/ChartPlanetInput"},"description":"Transit planets (outer)"},"width":{"type":"integer","format":"int32","description":"Width","minimum":0}}},"TransitRequest":{"type":"object","description":"Request for current transits","required":["natal"],"properties":{"include_aspects":{"type":"boolean","description":"Include aspects between natal and transit planets"},"natal":{"$ref":"#/components/schemas/NatalDataInput","description":"Natal chart data (birth positions)"},"orb":{"type":"number","format":"double","description":"Minimum orb for transit aspects"},"transit_datetime":{"type":["string","null"],"description":"Transit date/time (ISO format, optional - defaults to now)"}}},"TransitResponse":{"type":"object","description":"Transit calculation response","required":["transit_datetime","julian_day","transiting_planets","notable_transits"],"properties":{"aspects":{"type":["array","null"],"items":{"$ref":"#/components/schemas/TransitAspect"},"description":"Natal-transit aspects (if requested)"},"julian_day":{"type":"number","format":"double","description":"Julian Day"},"notable_transits":{"type":"array","items":{"$ref":"#/components/schemas/NotableTransit"},"description":"Notable transits summary"},"transit_datetime":{"type":"string","description":"Transit date/time"},"transiting_planets":{"type":"array","items":{"$ref":"#/components/schemas/PlanetPosition"},"description":"Current transit planet positions"}}},"TransitWithTemplateRequest":{"type":"object","description":"Request for transit chart SVG with a full ChartDesignTemplate","required":["natal_chart","transit_planets","template"],"properties":{"height":{"type":"integer","format":"int32","description":"Height in pixels","minimum":0},"natal_chart":{"$ref":"#/components/schemas/ChartDataInput","description":"Natal chart data"},"template":{"description":"Full ChartDesignTemplate JSON"},"transit_planets":{"type":"array","items":{"$ref":"#/components/schemas/ChartPlanetInput"},"description":"Transit planet positions"},"width":{"type":"integer","format":"int32","description":"Width in pixels","minimum":0}}},"UpdateChartRequest":{"type":"object","description":"Request to update a chart","properties":{"birth_date":{"type":["string","null"],"description":"Birth date (ISO format)"},"birth_location":{"type":["string","null"],"description":"Birth location name"},"birth_time":{"type":["string","null"],"description":"Birth time (HH:MM)"},"latitude":{"type":["number","null"],"format":"double","description":"Latitude"},"longitude":{"type":["number","null"],"format":"double","description":"Longitude"},"name":{"type":["string","null"],"description":"Chart name"},"notes":{"type":["string","null"],"description":"Notes"},"person_name":{"type":["string","null"],"description":"Person's name"},"tags":{"type":["array","null"],"items":{"type":"string"},"description":"Tags for organization"},"timezone":{"type":["string","null"],"description":"Timezone identifier"}}},"UpdateSubscriptionRequest":{"type":"object","description":"Update subscription request","properties":{"cancel_at_period_end":{"type":["boolean","null"],"description":"Whether to cancel at period end"},"plan_id":{"type":["string","null"],"description":"New plan ID"},"subscription_id":{"type":["string","null"],"description":"Subscription ID to update"}}},"UpdateWebhookRequest":{"type":"object","description":"Update webhook request","required":["webhook_id"],"properties":{"active":{"type":["boolean","null"],"description":"Enable/disable webhook (optional)"},"description":{"type":["string","null"],"description":"New description (optional)"},"events":{"type":["array","null"],"items":{"type":"string"},"description":"New events to subscribe to (optional)"},"url":{"type":["string","null"],"description":"New URL (optional)"},"webhook_id":{"type":"string","description":"Webhook ID to update"}}},"UsageStats":{"type":"object","description":"Usage statistics","required":["period","total_requests","request_limit","usage_percentage","by_category","daily_usage"],"properties":{"by_category":{"type":"array","items":{"$ref":"#/components/schemas/CategoryUsage"},"description":"Breakdown by endpoint category"},"daily_usage":{"type":"array","items":{"$ref":"#/components/schemas/DailyUsage"},"description":"Daily usage for current period"},"period":{"type":"string","description":"Current billing period"},"request_limit":{"type":"integer","format":"int64","description":"Request limit"},"total_requests":{"type":"integer","format":"int64","description":"Total requests made"},"usage_percentage":{"type":"number","format":"double","description":"Usage percentage"}}},"UsageStatsResponse":{"type":"object","description":"Usage statistics response","required":["tier","requests_used","rate_limit_per_minute","key_count"],"properties":{"key_count":{"type":"integer","description":"API key count","minimum":0},"monthly_limit":{"type":["integer","null"],"format":"int64","description":"Monthly request limit (null for unlimited)","minimum":0},"rate_limit_per_minute":{"type":"integer","format":"int32","description":"Rate limit per minute","minimum":0},"requests_remaining":{"type":["integer","null"],"format":"int64","description":"Requests remaining (null for unlimited)","minimum":0},"requests_used":{"type":"integer","format":"int64","description":"Requests used this month","minimum":0},"tier":{"type":"string","description":"User's subscription tier"}}},"UserConfigRequest":{"type":"object","description":"User configuration request","properties":{"ayanamsa":{"type":["string","null"],"description":"Ayanamsa for sidereal (lahiri, fagan_bradley, etc.)"},"house_system":{"type":["string","null"],"description":"House system (placidus, whole_sign, equal, etc.)"},"include_chiron":{"type":["boolean","null"],"description":"Include Chiron"},"include_lilith":{"type":["boolean","null"],"description":"Include Black Moon Lilith"},"include_nodes":{"type":["boolean","null"],"description":"Include lunar nodes"},"include_outer_planets":{"type":["boolean","null"],"description":"Include outer planets (Uranus, Neptune, Pluto)"},"language":{"type":["string","null"],"description":"Language code (ISO 639-1, e.g. en, de, fr, pl, sv)"},"name":{"type":["string","null"],"description":"Configuration name","example":"My Config"},"orbs":{"oneOf":[{"$ref":"#/components/schemas/AspectOrbsInput","description":"Custom aspect orbs"},{"type":"null"}]},"preset":{"type":["string","null"],"description":"Start from preset (western_modern, vedic, psychological, etc.)"},"style":{"type":["string","null"],"description":"Interpretation style (modern, traditional, psychological, etc.)"},"use_major_aspects":{"type":["boolean","null"],"description":"Use major (Ptolemaic) aspects"},"use_minor_aspects":{"type":["boolean","null"],"description":"Use minor aspects"},"zodiac_type":{"type":["string","null"],"description":"Zodiac type (tropical, sidereal)"}}},"UserConfigResponse":{"type":"object","description":"Full user configuration response","required":["name","calculation","interpretation","aspects"],"properties":{"aspects":{"$ref":"#/components/schemas/AspectConfigResponse","description":"Aspect settings"},"based_on_preset":{"type":["string","null"],"description":"Based on preset"},"calculation":{"$ref":"#/components/schemas/CalculationConfigResponse","description":"Calculation settings"},"description":{"type":["string","null"],"description":"Description"},"interpretation":{"$ref":"#/components/schemas/InterpretationConfigResponse","description":"Interpretation settings"},"name":{"type":"string","description":"Configuration name"}}},"UserProfileResponse":{"type":"object","description":"User profile response","required":["id","email","tier","is_active","created_at"],"properties":{"created_at":{"type":"string","description":"Account creation date"},"email":{"type":"string","description":"Email address"},"id":{"type":"string","description":"User ID"},"is_active":{"type":"boolean","description":"Whether the account is active"},"name":{"type":["string","null"],"description":"Display name"},"tier":{"type":"string","description":"Subscription tier"}}},"ValidateConfigRequest":{"type":"object","description":"Validate configuration request","required":["config"],"properties":{"config":{"$ref":"#/components/schemas/UserConfigRequest","description":"Configuration to validate"}}},"ValidationResponse":{"type":"object","description":"Validation result response","required":["valid","errors"],"properties":{"errors":{"type":"array","items":{"type":"string"},"description":"Validation errors (if any)"},"valid":{"type":"boolean","description":"Whether configuration is valid"}}},"VedicChartInterpretRequest":{"type":"object","description":"Request for complete Vedic chart interpretation","required":["moon_longitude"],"properties":{"ascendant_longitude":{"type":["number","null"],"format":"double","description":"Ascendant longitude (sidereal)"},"birth_jd":{"type":["number","null"],"format":"double","description":"Birth Julian Day (for Dasha calculation)"},"current_jd":{"type":["number","null"],"format":"double","description":"Current Julian Day (for current Dasha)"},"moon_longitude":{"type":"number","format":"double","description":"Moon longitude (sidereal)","example":25.87},"style":{"type":"string","description":"Interpretation style"},"yogas":{"type":"array","items":{"type":"string"},"description":"List of yoga names to interpret"}}},"VedicChartInterpretResponse":{"type":"object","description":"Response with complete Vedic chart interpretation","required":["moon_nakshatra","yogas","summary"],"properties":{"ascendant_nakshatra":{"oneOf":[{"$ref":"#/components/schemas/NakshatraInterpretResponse","description":"Ascendant Nakshatra interpretation (if provided)"},{"type":"null"}]},"current_dasha":{"oneOf":[{"$ref":"#/components/schemas/DashaInterpretResponse","description":"Current Dasha period interpretation (if birth JD provided)"},{"type":"null"}]},"moon_nakshatra":{"$ref":"#/components/schemas/NakshatraInterpretResponse","description":"Moon Nakshatra interpretation"},"summary":{"type":"string","description":"Summary text"},"yogas":{"type":"array","items":{"$ref":"#/components/schemas/YogaInterpretResponse"},"description":"Yoga interpretations"}}},"VedicChartRequest":{"type":"object","description":"Request for Vedic chart","required":["chart"],"properties":{"ayanamsa":{"type":"string","description":"Ayanamsa: \"lahiri\", \"raman\", \"krishnamurti\", etc."},"chart":{"$ref":"#/components/schemas/ChartDataInput","description":"Chart data"},"height":{"type":"integer","format":"int32","description":"Height in pixels","minimum":0},"show_nakshatras":{"type":"boolean","description":"Show Nakshatra positions"},"style":{"type":"string","description":"Chart style: \"north_indian\", \"south_indian\", \"east_indian\""},"varga":{"type":"integer","format":"int32","description":"Varga chart divisor (1=D1/Rashi, 9=D9/Navamsa, etc.)","minimum":0},"width":{"type":"integer","format":"int32","description":"Width in pixels","minimum":0}}},"VedicChartResponse":{"type":"object","description":"Vedic chart response","required":["svg","width","height","style","varga","varga_name","ayanamsa","ayanamsa_value","sidereal_planets"],"properties":{"ayanamsa":{"type":"string","description":"Ayanamsa used"},"ayanamsa_value":{"type":"number","format":"double","description":"Ayanamsa value in degrees"},"height":{"type":"integer","format":"int32","description":"Height","minimum":0},"sidereal_planets":{"type":"array","items":{"$ref":"#/components/schemas/SiderealPlanetPosition"},"description":"Sidereal planet positions"},"style":{"type":"string","description":"Style used"},"svg":{"type":"string","description":"SVG content"},"varga":{"type":"integer","format":"int32","description":"Varga chart type","minimum":0},"varga_name":{"type":"string","description":"Varga chart name"},"width":{"type":"integer","format":"int32","description":"Width","minimum":0}}},"VoidOfCourseInfo":{"type":"object","description":"Void of course details","required":["started_from","started_degree","ends_at","duration_hours"],"properties":{"duration_hours":{"type":"number","format":"double","description":"Duration in hours"},"ends_at":{"type":"string","description":"When VOC ends (Moon enters next sign)"},"started_degree":{"type":"number","format":"double","description":"Degree at start"},"started_from":{"type":"string","description":"When VOC period started"}}},"VoidOfCourseResponse":{"type":"object","description":"Void of course Moon interpretation","required":["general_guidance","favorable_activities","avoid_activities","duration_context","spiritual_meaning"],"properties":{"avoid_activities":{"type":"array","items":{"type":"string"},"description":"What to avoid during void"},"duration_context":{"type":"string","description":"Duration context"},"favorable_activities":{"type":"array","items":{"type":"string"},"description":"What to do during void"},"general_guidance":{"type":"string","description":"General guidance for void periods"},"spiritual_meaning":{"type":"string","description":"Spiritual meaning"}}},"VoidOfCourseTimingResponse":{"type":"object","description":"Response with Void of Course timing interpretation","required":["meaning","do_activities","avoid_activities","duration_advice","traditional_rule"],"properties":{"avoid_activities":{"type":"array","items":{"type":"string"},"description":"Activities to avoid during void periods"},"do_activities":{"type":"array","items":{"type":"string"},"description":"Activities suitable during void periods"},"duration_advice":{"type":"string","description":"Advice about duration"},"meaning":{"type":"string","description":"General meaning of void of course periods"},"traditional_rule":{"type":"string","description":"Traditional astrological rule"}}},"WebhookData":{"type":"object","description":"Webhook event data","required":["object_type"],"properties":{"amount":{"type":["integer","null"],"format":"int64","description":"Amount in cents"},"currency":{"type":["string","null"],"description":"Currency code"},"customer_id":{"type":["string","null"],"description":"Customer ID"},"invoice_id":{"type":["string","null"],"description":"Invoice ID"},"object_type":{"type":"string","description":"Object type"},"plan_id":{"type":["string","null"],"description":"Plan/price ID"},"status":{"type":["string","null"],"description":"Status"},"subscription_id":{"type":["string","null"],"description":"Subscription ID"}}},"WebhookEvent":{"type":"object","description":"Webhook event from payment provider","required":["id","event_type","created","data"],"properties":{"created":{"type":"integer","format":"int64","description":"Event timestamp (Unix)"},"data":{"$ref":"#/components/schemas/WebhookData","description":"Event data payload"},"event_type":{"type":"string","description":"Event type (e.g., \"subscription.created\", \"invoice.paid\")"},"id":{"type":"string","description":"Event ID"}}},"WebhookInfo":{"type":"object","description":"Registered webhook info","required":["id","url","events","active","created_at"],"properties":{"active":{"type":"boolean","description":"Whether the webhook is active"},"created_at":{"type":"string","description":"Creation timestamp"},"events":{"type":"array","items":{"type":"string"},"description":"Subscribed events"},"id":{"type":"string","description":"Webhook ID"},"secret":{"type":["string","null"],"description":"Secret for signature verification"},"url":{"type":"string","description":"Webhook URL"}}},"WebhookResponse":{"type":"object","description":"Webhook processing response","required":["received","event_id"],"properties":{"event_id":{"type":"string","description":"Event ID that was processed"},"message":{"type":["string","null"],"description":"Processing message"},"received":{"type":"boolean","description":"Whether the webhook was processed successfully"}}},"WeeklyHoroscopeRequest":{"type":"object","description":"Request for weekly horoscope","required":["sun_sign"],"properties":{"language":{"type":"string","description":"Language"},"style":{"type":"string","description":"Style"},"sun_sign":{"type":"string","description":"Sun sign (1-12) or sign name"},"week_start":{"type":["string","null"],"description":"Start date of the week (ISO format, optional - defaults to current week)"}}},"YearlyHoroscopeRequest":{"type":"object","description":"Request for yearly horoscope","required":["sun_sign"],"properties":{"language":{"type":"string","description":"Language"},"style":{"type":"string","description":"Style"},"sun_sign":{"type":"string","description":"Sun sign (1-12) or sign name"},"year":{"type":["integer","null"],"format":"int32","description":"Year (defaults to current year)"}}},"YogaCategorySummary":{"type":"object","description":"Summary of yogas by category","required":["category","count","yoga_names"],"properties":{"category":{"type":"string","description":"Category name"},"count":{"type":"integer","format":"int32","description":"Count of yogas in this category","minimum":0},"yoga_names":{"type":"array","items":{"type":"string"},"description":"Names of yogas in this category"}}},"YogaInfo":{"type":"object","description":"Information about a specific yoga","required":["name","category","is_auspicious","planets_involved","description","effects","strength"],"properties":{"category":{"type":"string","description":"Yoga type/category"},"description":{"type":"string","description":"Detailed description"},"effects":{"type":"string","description":"Effects and significations"},"is_auspicious":{"type":"boolean","description":"Whether this yoga is auspicious"},"name":{"type":"string","description":"Yoga name"},"planets_involved":{"type":"array","items":{"type":"string"},"description":"Planets involved"},"strength":{"type":"string","description":"Strength indicator (strong, moderate, weak)"}}},"YogaInterpretRequest":{"type":"object","description":"Request for Yoga interpretation","required":["yoga_name"],"properties":{"yoga_name":{"type":"string","description":"Yoga type name (e.g., \"RajaYoga\", \"DhanaYoga\", \"GajakesariYoga\")","example":"GajakesariYoga"}}},"YogaInterpretResponse":{"type":"object","description":"Response with Yoga interpretation","required":["name","sanskrit_name","category","formation","effects","strength_factors"],"properties":{"category":{"type":"string","description":"Category (Mahapurusha, Wealth, Power, etc.)"},"effects":{"type":"string","description":"Effects of the yoga"},"formation":{"type":"string","description":"How the yoga is formed"},"name":{"type":"string","description":"Yoga name"},"sanskrit_name":{"type":"string","description":"Sanskrit name"},"strength_factors":{"type":"string","description":"Factors that strengthen or weaken the yoga"}}},"YogaRequest":{"type":"object","description":"Request for Yoga (planetary combination) analysis","required":["birth_datetime","birth_latitude","birth_longitude"],"properties":{"birth_datetime":{"type":"string","description":"Birth date/time (ISO format)"},"birth_latitude":{"type":"number","format":"double","description":"Birth latitude"},"birth_longitude":{"type":"number","format":"double","description":"Birth longitude"},"categories":{"type":"array","items":{"type":"string"},"description":"Filter by yoga category (empty = all)"},"include_extended":{"type":"boolean","description":"Include extended yogas requiring ascendant analysis"}}},"YogaResponse":{"type":"object","description":"Yoga analysis response","required":["birth_datetime","ascendant_sign","moon_sign","total_yogas","auspicious_count","challenging_count","yogas","category_summary"],"properties":{"ascendant_sign":{"type":"string","description":"Ascendant sign (for extended yogas)"},"auspicious_count":{"type":"integer","format":"int32","description":"Auspicious yogas count","minimum":0},"birth_datetime":{"type":"string","description":"Birth date/time"},"category_summary":{"type":"array","items":{"$ref":"#/components/schemas/YogaCategorySummary"},"description":"Summary by category"},"challenging_count":{"type":"integer","format":"int32","description":"Challenging yogas count","minimum":0},"moon_sign":{"type":"string","description":"Moon sign"},"total_yogas":{"type":"integer","format":"int32","description":"Total yogas found","minimum":0},"yogas":{"type":"array","items":{"$ref":"#/components/schemas/YogaInfo"},"description":"List of yogas found"}}}},"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"API key, sent as `Authorization: Bearer <key>`"}}},"security":[{"bearer":[]}],"tags":[{"name":"health","description":"Health check endpoints"},{"name":"calculate","description":"Astronomical calculation endpoints"},{"name":"charts","description":"Chart rendering endpoints"},{"name":"interpret","description":"Interpretation and horoscope endpoints"},{"name":"astronomy","description":"Astronomical data endpoints"},{"name":"reports","description":"Report generation endpoints"},{"name":"account","description":"Account and API key management"},{"name":"billing","description":"Subscription and billing management"},{"name":"webhooks","description":"Webhook management"},{"name":"config","description":"Configuration and user preferences management"}]}