freeastroapi 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- freeastroapi/__init__.py +38 -0
- freeastroapi/_generated.py +4455 -0
- freeastroapi/client.py +309 -0
- freeastroapi/errors.py +123 -0
- freeastroapi/models.py +221 -0
- freeastroapi/py.typed +1 -0
- freeastroapi/resources.py +190 -0
- freeastroapi/schemas.py +7664 -0
- freeastroapi-0.2.0.dist-info/METADATA +158 -0
- freeastroapi-0.2.0.dist-info/RECORD +12 -0
- freeastroapi-0.2.0.dist-info/WHEEL +4 -0
- freeastroapi-0.2.0.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,4455 @@
|
|
|
1
|
+
# Generated by scripts/generate.py from spec/freeastro.json. Do not edit.
|
|
2
|
+
|
|
3
|
+
"""Resource classes for every public operation. See scripts/generate.py."""
|
|
4
|
+
|
|
5
|
+
# ruff: noqa: E501
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
from typing import TYPE_CHECKING, Any, Literal, cast
|
|
10
|
+
from urllib.parse import quote
|
|
11
|
+
|
|
12
|
+
from . import schemas
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from .client import AsyncFreeAstro, FreeAstro, RequestOptions
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _query(values: dict[str, Any]) -> dict[str, Any]:
|
|
19
|
+
return {key: value for key, value in values.items() if value is not None}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _path(value: object) -> str:
|
|
23
|
+
return quote(str(value), safe="")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class AiResource:
|
|
27
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
28
|
+
self._client = client
|
|
29
|
+
|
|
30
|
+
def generate(
|
|
31
|
+
self,
|
|
32
|
+
body: schemas.AtomicReportRequest,
|
|
33
|
+
*,
|
|
34
|
+
options: RequestOptions | None = None,
|
|
35
|
+
) -> Any:
|
|
36
|
+
"""Generate Atomic Report
|
|
37
|
+
|
|
38
|
+
Generates a full astrological report using the Atomic Interpretation System.
|
|
39
|
+
|
|
40
|
+
``POST /api/v1/ai/generate``
|
|
41
|
+
"""
|
|
42
|
+
return self._client.request("POST", "/api/v1/ai/generate", params=None, json=body, options=options)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class ChineseResource:
|
|
46
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
47
|
+
self._client = client
|
|
48
|
+
|
|
49
|
+
def bazi(
|
|
50
|
+
self,
|
|
51
|
+
body: schemas.BaziRequest,
|
|
52
|
+
*,
|
|
53
|
+
options: RequestOptions | None = None,
|
|
54
|
+
) -> Any:
|
|
55
|
+
"""Calculate BaZi (Four Pillars)
|
|
56
|
+
|
|
57
|
+
Calculate Chinese BaZi (Four Pillars of Destiny) chart.
|
|
58
|
+
Includes:
|
|
59
|
+
- 4 Pillars (GanZhi) for Year, Month, Day, Hour
|
|
60
|
+
- 5 Element Analysis (Wu Xing)
|
|
61
|
+
- Solar Term indicators
|
|
62
|
+
|
|
63
|
+
``POST /api/v1/chinese/bazi``
|
|
64
|
+
"""
|
|
65
|
+
return self._client.request("POST", "/api/v1/chinese/bazi", params=None, json=body, options=options)
|
|
66
|
+
|
|
67
|
+
def bazi_flow(
|
|
68
|
+
self,
|
|
69
|
+
body: schemas.BaziFlowRequest,
|
|
70
|
+
*,
|
|
71
|
+
options: RequestOptions | None = None,
|
|
72
|
+
) -> Any:
|
|
73
|
+
"""Calculate BaZi Flow (Annual/Monthly Pillars)
|
|
74
|
+
|
|
75
|
+
Calculate annual and monthly flow pillars for a specific target year.
|
|
76
|
+
Used for professional timing and predictive analysis.
|
|
77
|
+
|
|
78
|
+
``POST /api/v1/chinese/bazi/flow``
|
|
79
|
+
"""
|
|
80
|
+
return self._client.request("POST", "/api/v1/chinese/bazi/flow", params=None, json=body, options=options)
|
|
81
|
+
|
|
82
|
+
def bazi_dictionary(
|
|
83
|
+
self,
|
|
84
|
+
*,
|
|
85
|
+
lang: str | None = None,
|
|
86
|
+
options: RequestOptions | None = None,
|
|
87
|
+
) -> Any:
|
|
88
|
+
"""Get Bazi Interaction & Star Dictionary
|
|
89
|
+
|
|
90
|
+
Get the full mapping of Integer IDs to Interaction/Star definitions.
|
|
91
|
+
Clients should cache this response permanently (versioned by server version).
|
|
92
|
+
|
|
93
|
+
``GET /api/v1/chinese/bazi/dictionary``
|
|
94
|
+
"""
|
|
95
|
+
return self._client.request("GET", "/api/v1/chinese/bazi/dictionary", params=_query({"lang": lang}), json=None, options=options)
|
|
96
|
+
|
|
97
|
+
def today(
|
|
98
|
+
self,
|
|
99
|
+
*,
|
|
100
|
+
include_pinyin: bool | None = None,
|
|
101
|
+
lang: str | None = None,
|
|
102
|
+
options: RequestOptions | None = None,
|
|
103
|
+
) -> Any:
|
|
104
|
+
"""Get Current BaZi Pillars (Time Now)
|
|
105
|
+
|
|
106
|
+
Get current year, month, day, and hour pillars for the present moment.
|
|
107
|
+
Useful for "Today's energy" or quick transit checks.
|
|
108
|
+
|
|
109
|
+
``GET /api/v1/chinese/today``
|
|
110
|
+
"""
|
|
111
|
+
return self._client.request("GET", "/api/v1/chinese/today", params=_query({"include_pinyin": include_pinyin, "lang": lang}), json=None, options=options)
|
|
112
|
+
|
|
113
|
+
def calendar(
|
|
114
|
+
self,
|
|
115
|
+
date: str,
|
|
116
|
+
*,
|
|
117
|
+
lang: str | None = None,
|
|
118
|
+
options: RequestOptions | None = None,
|
|
119
|
+
) -> schemas.ChineseCalendarResponse:
|
|
120
|
+
"""Convert Gregorian Date to Chinese Calendar
|
|
121
|
+
|
|
122
|
+
Convert a Gregorian date to Chinese lunisolar calendar data.
|
|
123
|
+
Returns lunar date names, lunar-new-year and Li Chun year profiles,
|
|
124
|
+
sexagenary month/day cycles, solar terms, and festivals.
|
|
125
|
+
|
|
126
|
+
``GET /api/v1/chinese/calendar/{date}``
|
|
127
|
+
"""
|
|
128
|
+
return cast("schemas.ChineseCalendarResponse", self._client.request("GET", f"/api/v1/chinese/calendar/{_path(date)}", params=_query({"lang": lang}), json=None, options=options))
|
|
129
|
+
|
|
130
|
+
def bazi_time_correction(
|
|
131
|
+
self,
|
|
132
|
+
body: schemas.BaziTimeCorrectionRequest,
|
|
133
|
+
*,
|
|
134
|
+
options: RequestOptions | None = None,
|
|
135
|
+
) -> Any:
|
|
136
|
+
"""Calculate True Solar Time Corrections
|
|
137
|
+
|
|
138
|
+
Get detailed breakdown of True Solar Time corrections.
|
|
139
|
+
Returns Civil, LMT, and True Solar (Relative & Absolute).
|
|
140
|
+
|
|
141
|
+
``POST /api/v1/chinese/bazi/time-correction``
|
|
142
|
+
"""
|
|
143
|
+
return self._client.request("POST", "/api/v1/chinese/bazi/time-correction", params=None, json=body, options=options)
|
|
144
|
+
|
|
145
|
+
def bazi_synastry(
|
|
146
|
+
self,
|
|
147
|
+
body: schemas.BaziSynastryRequest,
|
|
148
|
+
*,
|
|
149
|
+
options: RequestOptions | None = None,
|
|
150
|
+
) -> Any:
|
|
151
|
+
"""Calculate Bazi Compatibility (Synastry)
|
|
152
|
+
|
|
153
|
+
Compare two charts for compatibility.
|
|
154
|
+
|
|
155
|
+
``POST /api/v1/chinese/bazi/synastry``
|
|
156
|
+
"""
|
|
157
|
+
return self._client.request("POST", "/api/v1/chinese/bazi/synastry", params=None, json=body, options=options)
|
|
158
|
+
|
|
159
|
+
def bazi_lifespan(
|
|
160
|
+
self,
|
|
161
|
+
body: schemas.BaziLifespanRequest,
|
|
162
|
+
*,
|
|
163
|
+
options: RequestOptions | None = None,
|
|
164
|
+
) -> Any:
|
|
165
|
+
"""Calculate Neijing Life Curve (Jing/Qi/Shen)
|
|
166
|
+
|
|
167
|
+
Experimental: Calculate energy trajectory (Jing, Qi, Shen) across 0-120y lifespan.
|
|
168
|
+
Based on Neijing 7/8 year cycles + DaYun/Annual modifier simulation.
|
|
169
|
+
|
|
170
|
+
``POST /api/v1/chinese/bazi/lifespan``
|
|
171
|
+
"""
|
|
172
|
+
return self._client.request("POST", "/api/v1/chinese/bazi/lifespan", params=None, json=body, options=options)
|
|
173
|
+
|
|
174
|
+
def bazi_health(
|
|
175
|
+
self,
|
|
176
|
+
body: schemas.BaziHealthRequest,
|
|
177
|
+
*,
|
|
178
|
+
options: RequestOptions | None = None,
|
|
179
|
+
) -> Any:
|
|
180
|
+
"""Analyze BaZi Constitution & Health Tendencies
|
|
181
|
+
|
|
182
|
+
Analyze BaZi chart for constitution and health tendency themes.
|
|
183
|
+
|
|
184
|
+
``POST /api/v1/chinese/bazi/health``
|
|
185
|
+
"""
|
|
186
|
+
return self._client.request("POST", "/api/v1/chinese/bazi/health", params=None, json=body, options=options)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
class EphemerisResource:
|
|
190
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
191
|
+
self._client = client
|
|
192
|
+
|
|
193
|
+
def calculate(
|
|
194
|
+
self,
|
|
195
|
+
body: schemas.EphemerisRequest,
|
|
196
|
+
*,
|
|
197
|
+
options: RequestOptions | None = None,
|
|
198
|
+
) -> Any:
|
|
199
|
+
"""Calculate Ephemeris
|
|
200
|
+
|
|
201
|
+
``POST /api/v1/ephemeris/calculate``
|
|
202
|
+
"""
|
|
203
|
+
return self._client.request("POST", "/api/v1/ephemeris/calculate", params=None, json=body, options=options)
|
|
204
|
+
|
|
205
|
+
def get(
|
|
206
|
+
self,
|
|
207
|
+
*,
|
|
208
|
+
start: str,
|
|
209
|
+
end: str | None = None,
|
|
210
|
+
step: str | None = None,
|
|
211
|
+
zodiac_type: Literal["tropical", "sidereal"] | None = None,
|
|
212
|
+
sidereal_ayanamsa: str | None = None,
|
|
213
|
+
house_system: str | None = None,
|
|
214
|
+
bodies: str | None = None,
|
|
215
|
+
include_angles: bool | None = None,
|
|
216
|
+
include_houses: bool | None = None,
|
|
217
|
+
include_speed: bool | None = None,
|
|
218
|
+
include_retrograde: bool | None = None,
|
|
219
|
+
include_dignity: bool | None = None,
|
|
220
|
+
include_sign_degree: bool | None = None,
|
|
221
|
+
include_aspects: bool | None = None,
|
|
222
|
+
include_minor_aspects: bool | None = None,
|
|
223
|
+
include_moon_void_of_course: bool | None = None,
|
|
224
|
+
include_fixed_stars: bool | None = None,
|
|
225
|
+
fixed_stars: str | None = None,
|
|
226
|
+
fixed_star_packs: str | None = None,
|
|
227
|
+
lat: float | None = None,
|
|
228
|
+
lng: float | None = None,
|
|
229
|
+
tz_str: str | None = None,
|
|
230
|
+
timezone: str | None = None,
|
|
231
|
+
dst_policy: Literal["reject", "earlier", "later", "shift_forward"] | None = None,
|
|
232
|
+
format: Literal["json", "table"] | None = None,
|
|
233
|
+
response_mode: Literal["json", "table"] | None = None,
|
|
234
|
+
table_style: Literal["rows", "columns", "grid"] | None = None,
|
|
235
|
+
include_sidereal_time: bool | None = None,
|
|
236
|
+
cell_format: Literal["parts", "text"] | None = None,
|
|
237
|
+
include_chart_links: bool | None = None,
|
|
238
|
+
sign_display: Literal["abbr", "full"] | None = None,
|
|
239
|
+
show_motion_markers: bool | None = None,
|
|
240
|
+
options: RequestOptions | None = None,
|
|
241
|
+
) -> Any:
|
|
242
|
+
"""Get Ephemeris
|
|
243
|
+
|
|
244
|
+
``GET /api/v1/ephemeris``
|
|
245
|
+
"""
|
|
246
|
+
return self._client.request("GET", "/api/v1/ephemeris", params=_query({"start": start, "end": end, "step": step, "zodiac_type": zodiac_type, "sidereal_ayanamsa": sidereal_ayanamsa, "house_system": house_system, "bodies": bodies, "include_angles": include_angles, "include_houses": include_houses, "include_speed": include_speed, "include_retrograde": include_retrograde, "include_dignity": include_dignity, "include_sign_degree": include_sign_degree, "include_aspects": include_aspects, "include_minor_aspects": include_minor_aspects, "include_moon_void_of_course": include_moon_void_of_course, "include_fixed_stars": include_fixed_stars, "fixed_stars": fixed_stars, "fixed_star_packs": fixed_star_packs, "lat": lat, "lng": lng, "tz_str": tz_str, "timezone": timezone, "dst_policy": dst_policy, "format": format, "response_mode": response_mode, "table_style": table_style, "include_sidereal_time": include_sidereal_time, "cell_format": cell_format, "include_chart_links": include_chart_links, "sign_display": sign_display, "show_motion_markers": show_motion_markers}), json=None, options=options)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
class GeoResourceBase:
|
|
250
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
251
|
+
self._client = client
|
|
252
|
+
|
|
253
|
+
def search_v1(
|
|
254
|
+
self,
|
|
255
|
+
*,
|
|
256
|
+
q: str | None = None,
|
|
257
|
+
city: str | None = None,
|
|
258
|
+
limit: int | None = None,
|
|
259
|
+
country: str | None = None,
|
|
260
|
+
options: RequestOptions | None = None,
|
|
261
|
+
) -> schemas.CitySearchResponse:
|
|
262
|
+
"""Search Cities (Free)
|
|
263
|
+
|
|
264
|
+
Search for cities by name prefix for autocomplete functionality.
|
|
265
|
+
|
|
266
|
+
``GET /api/v1/geo/search``
|
|
267
|
+
|
|
268
|
+
.. deprecated:: this operation is deprecated by the API.
|
|
269
|
+
"""
|
|
270
|
+
return cast("schemas.CitySearchResponse", self._client.request("GET", "/api/v1/geo/search", params=_query({"q": q, "city": city, "limit": limit, "country": country}), json=None, options=options))
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
class HoroscopeDailyResource:
|
|
274
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
275
|
+
self._client = client
|
|
276
|
+
|
|
277
|
+
def sign_v1(
|
|
278
|
+
self,
|
|
279
|
+
*,
|
|
280
|
+
sign: str,
|
|
281
|
+
date: str | None = None,
|
|
282
|
+
timezone: str | None = None,
|
|
283
|
+
tz_str: str | None = None,
|
|
284
|
+
lang: str | None = None,
|
|
285
|
+
locale: str | None = None,
|
|
286
|
+
type: str | None = None,
|
|
287
|
+
style: str | None = None,
|
|
288
|
+
variant: str | None = None,
|
|
289
|
+
options: RequestOptions | None = None,
|
|
290
|
+
) -> dict[str, Any]:
|
|
291
|
+
"""Get Sign Horoscope
|
|
292
|
+
|
|
293
|
+
Get generic daily horoscope for a specific sign.
|
|
294
|
+
|
|
295
|
+
``GET /api/v1/horoscope/daily/sign``
|
|
296
|
+
"""
|
|
297
|
+
return cast("dict[str, Any]", self._client.request("GET", "/api/v1/horoscope/daily/sign", params=_query({"sign": sign, "date": date, "timezone": timezone, "tz_str": tz_str, "lang": lang, "locale": locale, "type": type, "style": style, "variant": variant}), json=None, options=options))
|
|
298
|
+
|
|
299
|
+
def bulk(
|
|
300
|
+
self,
|
|
301
|
+
*,
|
|
302
|
+
date: str | None = None,
|
|
303
|
+
timezone: str | None = None,
|
|
304
|
+
tz_str: str | None = None,
|
|
305
|
+
locale: str | None = None,
|
|
306
|
+
options: RequestOptions | None = None,
|
|
307
|
+
) -> dict[str, Any]:
|
|
308
|
+
"""Get Bulk Horoscope
|
|
309
|
+
|
|
310
|
+
Get daily horoscope for ALL signs. Optimized for caching/newsletters.
|
|
311
|
+
|
|
312
|
+
``GET /api/v1/horoscope/daily/bulk``
|
|
313
|
+
"""
|
|
314
|
+
return cast("dict[str, Any]", self._client.request("GET", "/api/v1/horoscope/daily/bulk", params=_query({"date": date, "timezone": timezone, "tz_str": tz_str, "locale": locale}), json=None, options=options))
|
|
315
|
+
|
|
316
|
+
def personal_v1(
|
|
317
|
+
self,
|
|
318
|
+
body: schemas.PersonalHoroscopeRequestV1,
|
|
319
|
+
*,
|
|
320
|
+
options: RequestOptions | None = None,
|
|
321
|
+
) -> dict[str, Any]:
|
|
322
|
+
"""Get Personal Horoscope
|
|
323
|
+
|
|
324
|
+
Get personalized daily horoscope using natal chart + transits.
|
|
325
|
+
|
|
326
|
+
``POST /api/v1/horoscope/daily/personal``
|
|
327
|
+
"""
|
|
328
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v1/horoscope/daily/personal", params=None, json=body, options=options))
|
|
329
|
+
|
|
330
|
+
def sign_v2(
|
|
331
|
+
self,
|
|
332
|
+
*,
|
|
333
|
+
sign: str,
|
|
334
|
+
date: str | None = None,
|
|
335
|
+
tz_str: str | None = None,
|
|
336
|
+
lang: str | None = None,
|
|
337
|
+
locale: str | None = None,
|
|
338
|
+
options: RequestOptions | None = None,
|
|
339
|
+
) -> dict[str, Any]:
|
|
340
|
+
"""Get Sign Horoscope
|
|
341
|
+
|
|
342
|
+
``GET /api/v2/horoscope/daily/sign``
|
|
343
|
+
"""
|
|
344
|
+
return cast("dict[str, Any]", self._client.request("GET", "/api/v2/horoscope/daily/sign", params=_query({"sign": sign, "date": date, "tz_str": tz_str, "lang": lang, "locale": locale}), json=None, options=options))
|
|
345
|
+
|
|
346
|
+
def personal_v2(
|
|
347
|
+
self,
|
|
348
|
+
body: schemas.PersonalHoroscopeRequestV2,
|
|
349
|
+
*,
|
|
350
|
+
options: RequestOptions | None = None,
|
|
351
|
+
) -> dict[str, Any]:
|
|
352
|
+
"""Get Personal Horoscope
|
|
353
|
+
|
|
354
|
+
``POST /api/v2/horoscope/daily/personal``
|
|
355
|
+
"""
|
|
356
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v2/horoscope/daily/personal", params=None, json=body, options=options))
|
|
357
|
+
|
|
358
|
+
def sign(
|
|
359
|
+
self,
|
|
360
|
+
*,
|
|
361
|
+
sign: str,
|
|
362
|
+
date: str | None = None,
|
|
363
|
+
timezone: str | None = None,
|
|
364
|
+
tz_str: str | None = None,
|
|
365
|
+
lang: str | None = None,
|
|
366
|
+
locale: str | None = None,
|
|
367
|
+
type: str | None = None,
|
|
368
|
+
style: str | None = None,
|
|
369
|
+
variant: str | None = None,
|
|
370
|
+
options: RequestOptions | None = None,
|
|
371
|
+
) -> dict[str, Any]:
|
|
372
|
+
"""Get Sign Horoscope
|
|
373
|
+
|
|
374
|
+
Compatibility endpoint for playground clients that selected the V3 engine
|
|
375
|
+
while using the generic sign horoscope. V3 is personal-only today, so this
|
|
376
|
+
returns the V2 sign engine shape under the V3 route instead of 404ing.
|
|
377
|
+
|
|
378
|
+
``GET /api/v3/horoscope/daily/sign``
|
|
379
|
+
"""
|
|
380
|
+
return cast("dict[str, Any]", self._client.request("GET", "/api/v3/horoscope/daily/sign", params=_query({"sign": sign, "date": date, "timezone": timezone, "tz_str": tz_str, "lang": lang, "locale": locale, "type": type, "style": style, "variant": variant}), json=None, options=options))
|
|
381
|
+
|
|
382
|
+
def personal(
|
|
383
|
+
self,
|
|
384
|
+
body: schemas.PersonalHoroscopeRequestV3,
|
|
385
|
+
*,
|
|
386
|
+
options: RequestOptions | None = None,
|
|
387
|
+
) -> dict[str, Any]:
|
|
388
|
+
"""Get Personal Horoscope
|
|
389
|
+
|
|
390
|
+
``POST /api/v3/horoscope/daily/personal``
|
|
391
|
+
"""
|
|
392
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v3/horoscope/daily/personal", params=None, json=body, options=options))
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
class HoroscopeWeeklyResource:
|
|
396
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
397
|
+
self._client = client
|
|
398
|
+
|
|
399
|
+
def personal(
|
|
400
|
+
self,
|
|
401
|
+
body: schemas.WeeklyPersonalHoroscopeRequest,
|
|
402
|
+
*,
|
|
403
|
+
options: RequestOptions | None = None,
|
|
404
|
+
) -> dict[str, Any]:
|
|
405
|
+
"""Get Weekly Personal Horoscope
|
|
406
|
+
|
|
407
|
+
``POST /api/v3/horoscope/weekly/personal``
|
|
408
|
+
"""
|
|
409
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v3/horoscope/weekly/personal", params=None, json=body, options=options))
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
class HoroscopeResource:
|
|
413
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
414
|
+
self._client = client
|
|
415
|
+
self.daily = HoroscopeDailyResource(client)
|
|
416
|
+
self.weekly = HoroscopeWeeklyResource(client)
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
class MoonResourceBase:
|
|
420
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
421
|
+
self._client = client
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
class NatalExperimentalResource:
|
|
425
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
426
|
+
self._client = client
|
|
427
|
+
|
|
428
|
+
def transits(
|
|
429
|
+
self,
|
|
430
|
+
body: schemas.ExperimentalTransitChartRequest,
|
|
431
|
+
*,
|
|
432
|
+
options: RequestOptions | None = None,
|
|
433
|
+
) -> Any:
|
|
434
|
+
"""Experimental Transits Chart
|
|
435
|
+
|
|
436
|
+
Generate a bi-wheel chart with natal planets inside and transits outside.
|
|
437
|
+
|
|
438
|
+
``POST /api/v1/natal/experimental/transits``
|
|
439
|
+
|
|
440
|
+
.. deprecated:: this operation is deprecated by the API.
|
|
441
|
+
"""
|
|
442
|
+
return self._client.request("POST", "/api/v1/natal/experimental/transits", params=None, json=body, options=options)
|
|
443
|
+
|
|
444
|
+
def solar_return(
|
|
445
|
+
self,
|
|
446
|
+
body: schemas.ExperimentalSolarReturnChartRequest,
|
|
447
|
+
*,
|
|
448
|
+
options: RequestOptions | None = None,
|
|
449
|
+
) -> Any:
|
|
450
|
+
"""Experimental Solar Return Chart
|
|
451
|
+
|
|
452
|
+
Generate a bi-wheel or standalone chart for the exact solar return in a target year.
|
|
453
|
+
|
|
454
|
+
``POST /api/v1/natal/experimental/solar-return``
|
|
455
|
+
|
|
456
|
+
.. deprecated:: this operation is deprecated by the API.
|
|
457
|
+
"""
|
|
458
|
+
return self._client.request("POST", "/api/v1/natal/experimental/solar-return", params=None, json=body, options=options)
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
class NatalResource:
|
|
462
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
463
|
+
self._client = client
|
|
464
|
+
self.experimental = NatalExperimentalResource(client)
|
|
465
|
+
|
|
466
|
+
def simple(
|
|
467
|
+
self,
|
|
468
|
+
body: schemas.SimpleNatalRequest,
|
|
469
|
+
*,
|
|
470
|
+
options: RequestOptions | None = None,
|
|
471
|
+
) -> Any:
|
|
472
|
+
"""Calculate Simple Natal
|
|
473
|
+
|
|
474
|
+
A simplified natal endpoint for developer-facing apps.
|
|
475
|
+
Returns a compact response with curated planets, houses, and useful summary fields.
|
|
476
|
+
|
|
477
|
+
``POST /natal``
|
|
478
|
+
"""
|
|
479
|
+
return self._client.request("POST", "/natal", params=None, json=body, options=options)
|
|
480
|
+
|
|
481
|
+
def calculate(
|
|
482
|
+
self,
|
|
483
|
+
body: schemas.NatalChartRequest,
|
|
484
|
+
*,
|
|
485
|
+
include_minor: bool | None = None,
|
|
486
|
+
include_stelliums: bool | None = None,
|
|
487
|
+
options: RequestOptions | None = None,
|
|
488
|
+
) -> Any:
|
|
489
|
+
"""Calculate Natal
|
|
490
|
+
|
|
491
|
+
Calculate natal chart with planetary positions, houses, and aspects.
|
|
492
|
+
|
|
493
|
+
``POST /api/v1/natal/calculate``
|
|
494
|
+
"""
|
|
495
|
+
return self._client.request("POST", "/api/v1/natal/calculate", params=_query({"include_minor": include_minor, "include_stelliums": include_stelliums}), json=body, options=options)
|
|
496
|
+
|
|
497
|
+
def report_credits(
|
|
498
|
+
self,
|
|
499
|
+
*,
|
|
500
|
+
options: RequestOptions | None = None,
|
|
501
|
+
) -> Any:
|
|
502
|
+
"""Get Report Credits For Api Key
|
|
503
|
+
|
|
504
|
+
``GET /api/v1/natal/report-credits``
|
|
505
|
+
"""
|
|
506
|
+
return self._client.request("GET", "/api/v1/natal/report-credits", params=None, json=None, options=options)
|
|
507
|
+
|
|
508
|
+
def report(
|
|
509
|
+
self,
|
|
510
|
+
job_id: str,
|
|
511
|
+
*,
|
|
512
|
+
format: Literal["json", "pdf"] | None = None,
|
|
513
|
+
include_profile_branding_logo: bool | None = None,
|
|
514
|
+
options: RequestOptions | None = None,
|
|
515
|
+
) -> Any:
|
|
516
|
+
"""Get Psychological Report
|
|
517
|
+
|
|
518
|
+
``GET /api/v1/natal/report/{job_id}``
|
|
519
|
+
"""
|
|
520
|
+
return self._client.request("GET", f"/api/v1/natal/report/{_path(job_id)}", params=_query({"format": format, "include_profile_branding_logo": include_profile_branding_logo}), json=None, options=options)
|
|
521
|
+
|
|
522
|
+
def chart(
|
|
523
|
+
self,
|
|
524
|
+
body: schemas.ExperimentalNatalChartRequest,
|
|
525
|
+
*,
|
|
526
|
+
options: RequestOptions | None = None,
|
|
527
|
+
) -> Any:
|
|
528
|
+
"""Experimental Natal Chart
|
|
529
|
+
|
|
530
|
+
Render a natal chart using the bundled natal library.
|
|
531
|
+
|
|
532
|
+
``POST /api/v1/natal/chart/``
|
|
533
|
+
"""
|
|
534
|
+
return self._client.request("POST", "/api/v1/natal/chart/", params=None, json=body, options=options)
|
|
535
|
+
|
|
536
|
+
def chart_transits(
|
|
537
|
+
self,
|
|
538
|
+
body: schemas.ExperimentalTransitChartRequest,
|
|
539
|
+
*,
|
|
540
|
+
options: RequestOptions | None = None,
|
|
541
|
+
) -> Any:
|
|
542
|
+
"""Experimental Transits Chart
|
|
543
|
+
|
|
544
|
+
Generate a bi-wheel chart with natal planets inside and transits outside.
|
|
545
|
+
|
|
546
|
+
``POST /api/v1/natal/chart/transits``
|
|
547
|
+
"""
|
|
548
|
+
return self._client.request("POST", "/api/v1/natal/chart/transits", params=None, json=body, options=options)
|
|
549
|
+
|
|
550
|
+
def chart_solar_return(
|
|
551
|
+
self,
|
|
552
|
+
body: schemas.ExperimentalSolarReturnChartRequest,
|
|
553
|
+
*,
|
|
554
|
+
options: RequestOptions | None = None,
|
|
555
|
+
) -> Any:
|
|
556
|
+
"""Experimental Solar Return Chart
|
|
557
|
+
|
|
558
|
+
Generate a bi-wheel or standalone chart for the exact solar return in a target year.
|
|
559
|
+
|
|
560
|
+
``POST /api/v1/natal/chart/solar-return``
|
|
561
|
+
"""
|
|
562
|
+
return self._client.request("POST", "/api/v1/natal/chart/solar-return", params=None, json=body, options=options)
|
|
563
|
+
|
|
564
|
+
def chart_secondary_progressions(
|
|
565
|
+
self,
|
|
566
|
+
body: schemas.ExperimentalSecondaryProgressionsChartRequest,
|
|
567
|
+
*,
|
|
568
|
+
options: RequestOptions | None = None,
|
|
569
|
+
) -> Any:
|
|
570
|
+
"""Experimental Secondary Progressions Chart
|
|
571
|
+
|
|
572
|
+
Generate a bi-wheel chart with natal planets inside and secondary progressed planets outside.
|
|
573
|
+
|
|
574
|
+
``POST /api/v1/natal/chart/secondary-progressions``
|
|
575
|
+
"""
|
|
576
|
+
return self._client.request("POST", "/api/v1/natal/chart/secondary-progressions", params=None, json=body, options=options)
|
|
577
|
+
|
|
578
|
+
def chart_progressions(
|
|
579
|
+
self,
|
|
580
|
+
body: schemas.ExperimentalSecondaryProgressionsChartRequest,
|
|
581
|
+
*,
|
|
582
|
+
options: RequestOptions | None = None,
|
|
583
|
+
) -> Any:
|
|
584
|
+
"""Experimental Secondary Progressions Chart
|
|
585
|
+
|
|
586
|
+
Generate a bi-wheel chart with natal planets inside and secondary progressed planets outside.
|
|
587
|
+
|
|
588
|
+
``POST /api/v1/natal/chart/progressions``
|
|
589
|
+
"""
|
|
590
|
+
return self._client.request("POST", "/api/v1/natal/chart/progressions", params=None, json=body, options=options)
|
|
591
|
+
|
|
592
|
+
def chart_composite(
|
|
593
|
+
self,
|
|
594
|
+
body: schemas.ExperimentalCompositeChartRequest,
|
|
595
|
+
*,
|
|
596
|
+
options: RequestOptions | None = None,
|
|
597
|
+
) -> Any:
|
|
598
|
+
"""Experimental Composite Chart
|
|
599
|
+
|
|
600
|
+
Midpoint composite single-wheel chart endpoint.
|
|
601
|
+
Renders a standalone composite chart from two people, reusing the natal SVG renderer.
|
|
602
|
+
|
|
603
|
+
``POST /api/v1/natal/chart/composite``
|
|
604
|
+
"""
|
|
605
|
+
return self._client.request("POST", "/api/v1/natal/chart/composite", params=None, json=body, options=options)
|
|
606
|
+
|
|
607
|
+
def chart_synastry(
|
|
608
|
+
self,
|
|
609
|
+
body: schemas.ExperimentalSynastryChartRequest,
|
|
610
|
+
*,
|
|
611
|
+
options: RequestOptions | None = None,
|
|
612
|
+
) -> Any:
|
|
613
|
+
"""Experimental Synastry Chart
|
|
614
|
+
|
|
615
|
+
Synastry bi-wheel chart endpoint.
|
|
616
|
+
Renders person A (outer) and person B (inner) with optional B house ring and inter-aspects.
|
|
617
|
+
|
|
618
|
+
``POST /api/v1/natal/chart/synastry``
|
|
619
|
+
"""
|
|
620
|
+
return self._client.request("POST", "/api/v1/natal/chart/synastry", params=None, json=body, options=options)
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
class NumerologyResource:
|
|
624
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
625
|
+
self._client = client
|
|
626
|
+
|
|
627
|
+
def methods(
|
|
628
|
+
self,
|
|
629
|
+
*,
|
|
630
|
+
options: RequestOptions | None = None,
|
|
631
|
+
) -> schemas.NumerologyMethodsResponse:
|
|
632
|
+
"""List supported numerology methods and policies
|
|
633
|
+
|
|
634
|
+
``GET /api/v1/numerology/methods``
|
|
635
|
+
"""
|
|
636
|
+
return cast("schemas.NumerologyMethodsResponse", self._client.request("GET", "/api/v1/numerology/methods", params=None, json=None, options=options))
|
|
637
|
+
|
|
638
|
+
def alphabets(
|
|
639
|
+
self,
|
|
640
|
+
*,
|
|
641
|
+
options: RequestOptions | None = None,
|
|
642
|
+
) -> schemas.NumerologyAlphabetsResponse:
|
|
643
|
+
"""List immutable numerology alphabet and Gematria tables
|
|
644
|
+
|
|
645
|
+
``GET /api/v1/numerology/alphabets``
|
|
646
|
+
"""
|
|
647
|
+
return cast("schemas.NumerologyAlphabetsResponse", self._client.request("GET", "/api/v1/numerology/alphabets", params=None, json=None, options=options))
|
|
648
|
+
|
|
649
|
+
def profile(
|
|
650
|
+
self,
|
|
651
|
+
body: schemas.NumerologyProfileRequest,
|
|
652
|
+
*,
|
|
653
|
+
options: RequestOptions | None = None,
|
|
654
|
+
) -> schemas.NumerologyProfileResponse:
|
|
655
|
+
"""Calculate a versioned numerology profile
|
|
656
|
+
|
|
657
|
+
Calculate without persisting subject names, dates, or derived results.
|
|
658
|
+
|
|
659
|
+
``POST /api/v1/numerology/profile``
|
|
660
|
+
"""
|
|
661
|
+
return cast("schemas.NumerologyProfileResponse", self._client.request("POST", "/api/v1/numerology/profile", params=None, json=body, options=options))
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
class SkyEventsResourceBase:
|
|
665
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
666
|
+
self._client = client
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
class SpaceResource:
|
|
670
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
671
|
+
self._client = client
|
|
672
|
+
|
|
673
|
+
def chart(
|
|
674
|
+
self,
|
|
675
|
+
body: schemas.SpaceChartRequest,
|
|
676
|
+
*,
|
|
677
|
+
options: RequestOptions | None = None,
|
|
678
|
+
) -> Any:
|
|
679
|
+
"""Space Chart
|
|
680
|
+
|
|
681
|
+
``POST /api/v1/space/chart``
|
|
682
|
+
"""
|
|
683
|
+
return self._client.request("POST", "/api/v1/space/chart", params=None, json=body, options=options)
|
|
684
|
+
|
|
685
|
+
def chart_svg(
|
|
686
|
+
self,
|
|
687
|
+
body: schemas.SpaceChartSvgRequest,
|
|
688
|
+
*,
|
|
689
|
+
options: RequestOptions | None = None,
|
|
690
|
+
) -> Any:
|
|
691
|
+
"""Space Chart Svg
|
|
692
|
+
|
|
693
|
+
The chart wheel, drawn by the natal chart renderer with the same themes and options.
|
|
694
|
+
|
|
695
|
+
``POST /api/v1/space/chart/svg``
|
|
696
|
+
"""
|
|
697
|
+
return self._client.request("POST", "/api/v1/space/chart/svg", params=None, json=body, options=options)
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
class TransitsResource:
|
|
701
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
702
|
+
self._client = client
|
|
703
|
+
|
|
704
|
+
def calculate(
|
|
705
|
+
self,
|
|
706
|
+
body: schemas.TransitRequest,
|
|
707
|
+
*,
|
|
708
|
+
include_minor: bool | None = None,
|
|
709
|
+
options: RequestOptions | None = None,
|
|
710
|
+
) -> Any:
|
|
711
|
+
"""Calculate Transits
|
|
712
|
+
|
|
713
|
+
Calculate planetary transits relative to natal chart.
|
|
714
|
+
|
|
715
|
+
``POST /api/v1/transits/calculate``
|
|
716
|
+
"""
|
|
717
|
+
return self._client.request("POST", "/api/v1/transits/calculate", params=_query({"include_minor": include_minor}), json=body, options=options)
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
class VedicTransitsResource:
|
|
721
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
722
|
+
self._client = client
|
|
723
|
+
|
|
724
|
+
def insights(
|
|
725
|
+
self,
|
|
726
|
+
body: schemas.VedicTransitInsightsRequest,
|
|
727
|
+
*,
|
|
728
|
+
options: RequestOptions | None = None,
|
|
729
|
+
) -> schemas.VedicTransitInsightsResponse:
|
|
730
|
+
"""Get Transit Insights
|
|
731
|
+
|
|
732
|
+
Get Vedic gochar snapshot facts comparing a transit date against the natal chart.
|
|
733
|
+
|
|
734
|
+
``POST /api/v1/vedic/transits/insights``
|
|
735
|
+
"""
|
|
736
|
+
return cast("schemas.VedicTransitInsightsResponse", self._client.request("POST", "/api/v1/vedic/transits/insights", params=None, json=body, options=options))
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
class VedicGocharResource:
|
|
740
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
741
|
+
self._client = client
|
|
742
|
+
|
|
743
|
+
def timeline_v1(
|
|
744
|
+
self,
|
|
745
|
+
body: schemas.VedicGocharTimelineRequest,
|
|
746
|
+
*,
|
|
747
|
+
options: RequestOptions | None = None,
|
|
748
|
+
) -> schemas.VedicGocharTimelineResponse:
|
|
749
|
+
"""Get Gochar Timeline
|
|
750
|
+
|
|
751
|
+
Get compact Vedic gochar timeline windows over a bounded date range.
|
|
752
|
+
|
|
753
|
+
``POST /api/v1/vedic/gochar/timeline``
|
|
754
|
+
"""
|
|
755
|
+
return cast("schemas.VedicGocharTimelineResponse", self._client.request("POST", "/api/v1/vedic/gochar/timeline", params=None, json=body, options=options))
|
|
756
|
+
|
|
757
|
+
def timeline_insights_v1(
|
|
758
|
+
self,
|
|
759
|
+
body: schemas.VedicGocharTimelineRequest,
|
|
760
|
+
*,
|
|
761
|
+
options: RequestOptions | None = None,
|
|
762
|
+
) -> schemas.VedicGocharTimelineInsightsResponse:
|
|
763
|
+
"""Get Gochar Timeline Insights
|
|
764
|
+
|
|
765
|
+
Get ranked Vedic gochar timeline insights derived from compact timeline windows.
|
|
766
|
+
|
|
767
|
+
``POST /api/v1/vedic/gochar/timeline/insights``
|
|
768
|
+
"""
|
|
769
|
+
return cast("schemas.VedicGocharTimelineInsightsResponse", self._client.request("POST", "/api/v1/vedic/gochar/timeline/insights", params=None, json=body, options=options))
|
|
770
|
+
|
|
771
|
+
def timeline(
|
|
772
|
+
self,
|
|
773
|
+
body: schemas.GocharTimelineRequest,
|
|
774
|
+
*,
|
|
775
|
+
options: RequestOptions | None = None,
|
|
776
|
+
) -> schemas.GocharTimelineV2Response:
|
|
777
|
+
"""Get Vedic Gochar Timeline (v2)
|
|
778
|
+
|
|
779
|
+
Return compact V2 Vedic gochar windows over a bounded date range.
|
|
780
|
+
|
|
781
|
+
``POST /api/v2/vedic/gochar/timeline``
|
|
782
|
+
"""
|
|
783
|
+
return cast("schemas.GocharTimelineV2Response", self._client.request("POST", "/api/v2/vedic/gochar/timeline", params=None, json=body, options=options))
|
|
784
|
+
|
|
785
|
+
def timeline_insights(
|
|
786
|
+
self,
|
|
787
|
+
body: schemas.GocharTimelineRequest,
|
|
788
|
+
*,
|
|
789
|
+
options: RequestOptions | None = None,
|
|
790
|
+
) -> schemas.VedicGocharTimelineInsightsV2Response:
|
|
791
|
+
"""Get Vedic Gochar Timeline Insights (v2)
|
|
792
|
+
|
|
793
|
+
Return ranked V2 Vedic gochar insight facts derived from the calibrated V2 timeline.
|
|
794
|
+
|
|
795
|
+
``POST /api/v2/vedic/gochar/timeline/insights``
|
|
796
|
+
"""
|
|
797
|
+
return cast("schemas.VedicGocharTimelineInsightsV2Response", self._client.request("POST", "/api/v2/vedic/gochar/timeline/insights", params=None, json=body, options=options))
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
class VedicVisualResource:
|
|
801
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
802
|
+
self._client = client
|
|
803
|
+
|
|
804
|
+
def chart(
|
|
805
|
+
self,
|
|
806
|
+
body: schemas.VedicVisualChartRequest,
|
|
807
|
+
*,
|
|
808
|
+
options: RequestOptions | None = None,
|
|
809
|
+
) -> str:
|
|
810
|
+
"""Render Vedic Visual Chart (v2)
|
|
811
|
+
|
|
812
|
+
Render requested V2 divisional charts as a raw SVG or PNG image.
|
|
813
|
+
|
|
814
|
+
``POST /api/v2/vedic/visual/chart``
|
|
815
|
+
|
|
816
|
+
Returns the image body as text; use ``request_raw`` for binary formats such as PNG.
|
|
817
|
+
"""
|
|
818
|
+
return cast("str", self._client.request("POST", "/api/v2/vedic/visual/chart", params=None, json=body, options=options))
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
class VedicHoroscopeResource:
|
|
822
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
823
|
+
self._client = client
|
|
824
|
+
|
|
825
|
+
def daily_sign(
|
|
826
|
+
self,
|
|
827
|
+
*,
|
|
828
|
+
sign: Literal["aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpio", "sagittarius", "capricorn", "aquarius", "pisces"],
|
|
829
|
+
target_date: str | None = None,
|
|
830
|
+
tz_str: str | None = None,
|
|
831
|
+
ayanamsha: Literal["lahiri", "raman", "kp", "yukteshwar", "fagan_bradley", "true_pushya", "pushya"] | None = None,
|
|
832
|
+
node_type: Literal["mean", "true"] | None = None,
|
|
833
|
+
include_interpretation: bool | None = None,
|
|
834
|
+
lang: Literal["en", "hi"] | None = None,
|
|
835
|
+
language: Literal["en", "hi"] | None = None,
|
|
836
|
+
options: RequestOptions | None = None,
|
|
837
|
+
) -> schemas.DailyRashifalSignResponse:
|
|
838
|
+
"""Get General Daily Vedic Rashifal for One Moon Sign (v2)
|
|
839
|
+
|
|
840
|
+
General Moon-sign forecast with calculated transits and optional English or Hindi readings. No birth details required.
|
|
841
|
+
|
|
842
|
+
``GET /api/v2/vedic/horoscope/daily/sign``
|
|
843
|
+
"""
|
|
844
|
+
return cast("schemas.DailyRashifalSignResponse", self._client.request("GET", "/api/v2/vedic/horoscope/daily/sign", params=_query({"sign": sign, "target_date": target_date, "tz_str": tz_str, "ayanamsha": ayanamsha, "node_type": node_type, "include_interpretation": include_interpretation, "lang": lang, "language": language}), json=None, options=options))
|
|
845
|
+
|
|
846
|
+
def daily_bulk(
|
|
847
|
+
self,
|
|
848
|
+
*,
|
|
849
|
+
target_date: str | None = None,
|
|
850
|
+
tz_str: str | None = None,
|
|
851
|
+
ayanamsha: Literal["lahiri", "raman", "kp", "yukteshwar", "fagan_bradley", "true_pushya", "pushya"] | None = None,
|
|
852
|
+
node_type: Literal["mean", "true"] | None = None,
|
|
853
|
+
include_interpretation: bool | None = None,
|
|
854
|
+
lang: Literal["en", "hi"] | None = None,
|
|
855
|
+
language: Literal["en", "hi"] | None = None,
|
|
856
|
+
options: RequestOptions | None = None,
|
|
857
|
+
) -> schemas.DailyRashifalBulkResponse:
|
|
858
|
+
"""Get General Daily Vedic Rashifal for All 12 Moon Signs (v2)
|
|
859
|
+
|
|
860
|
+
Return all 12 rashis from one shared noon sky snapshot, keyed by lowercase English sign names.
|
|
861
|
+
|
|
862
|
+
``GET /api/v2/vedic/horoscope/daily/bulk``
|
|
863
|
+
"""
|
|
864
|
+
return cast("schemas.DailyRashifalBulkResponse", self._client.request("GET", "/api/v2/vedic/horoscope/daily/bulk", params=_query({"target_date": target_date, "tz_str": tz_str, "ayanamsha": ayanamsha, "node_type": node_type, "include_interpretation": include_interpretation, "lang": lang, "language": language}), json=None, options=options))
|
|
865
|
+
|
|
866
|
+
def daily_personal(
|
|
867
|
+
self,
|
|
868
|
+
body: schemas.DailyVedicHoroscopeRequest,
|
|
869
|
+
*,
|
|
870
|
+
options: RequestOptions | None = None,
|
|
871
|
+
) -> schemas.DailyVedicHoroscopeV2Response:
|
|
872
|
+
"""Get Daily Vedic Horoscope (v2)
|
|
873
|
+
|
|
874
|
+
Return a premium deterministic daily Vedic horoscope composed from V2
|
|
875
|
+
chart context, one-day gochar insights, active Vimshottari dasha, and Panchang.
|
|
876
|
+
|
|
877
|
+
``POST /api/v2/vedic/horoscope/daily/personal``
|
|
878
|
+
"""
|
|
879
|
+
return cast("schemas.DailyVedicHoroscopeV2Response", self._client.request("POST", "/api/v2/vedic/horoscope/daily/personal", params=None, json=body, options=options))
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
class VedicMuhuratResource:
|
|
883
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
884
|
+
self._client = client
|
|
885
|
+
|
|
886
|
+
def search(
|
|
887
|
+
self,
|
|
888
|
+
body: schemas.VedicMuhuratSearchRequest,
|
|
889
|
+
*,
|
|
890
|
+
options: RequestOptions | None = None,
|
|
891
|
+
) -> schemas.VedicMuhuratSearchResponse:
|
|
892
|
+
"""Search auspicious Vedic windows (v2)
|
|
893
|
+
|
|
894
|
+
Search a monthly date range for auspicious windows.
|
|
895
|
+
|
|
896
|
+
``POST /api/v2/vedic/muhurat/search``
|
|
897
|
+
"""
|
|
898
|
+
return cast("schemas.VedicMuhuratSearchResponse", self._client.request("POST", "/api/v2/vedic/muhurat/search", params=None, json=body, options=options))
|
|
899
|
+
|
|
900
|
+
def personalized_search(
|
|
901
|
+
self,
|
|
902
|
+
body: schemas.VedicMuhuratPersonalizedSearchRequest,
|
|
903
|
+
*,
|
|
904
|
+
options: RequestOptions | None = None,
|
|
905
|
+
) -> schemas.VedicMuhuratSearchResponse:
|
|
906
|
+
"""Search auspicious Vedic windows with natal personalization (v2)
|
|
907
|
+
|
|
908
|
+
Search public muhurat windows, then re-rank them for a specific birth chart.
|
|
909
|
+
|
|
910
|
+
``POST /api/v2/vedic/muhurat/personalized-search``
|
|
911
|
+
"""
|
|
912
|
+
return cast("schemas.VedicMuhuratSearchResponse", self._client.request("POST", "/api/v2/vedic/muhurat/personalized-search", params=None, json=body, options=options))
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
class VedicResource:
|
|
916
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
917
|
+
self._client = client
|
|
918
|
+
self.transits = VedicTransitsResource(client)
|
|
919
|
+
self.gochar = VedicGocharResource(client)
|
|
920
|
+
self.visual = VedicVisualResource(client)
|
|
921
|
+
self.horoscope = VedicHoroscopeResource(client)
|
|
922
|
+
self.muhurat = VedicMuhuratResource(client)
|
|
923
|
+
|
|
924
|
+
def match_v1(
|
|
925
|
+
self,
|
|
926
|
+
body: schemas.MatchRequest,
|
|
927
|
+
*,
|
|
928
|
+
options: RequestOptions | None = None,
|
|
929
|
+
) -> Any:
|
|
930
|
+
"""Match Birth Details
|
|
931
|
+
|
|
932
|
+
Calculate compatibility using birth details directly.
|
|
933
|
+
Computes Moon Nakshatra/Sign internally to avoid ID lookup errors.
|
|
934
|
+
|
|
935
|
+
``POST /api/v1/vedic/match``
|
|
936
|
+
"""
|
|
937
|
+
return self._client.request("POST", "/api/v1/vedic/match", params=None, json=body, options=options)
|
|
938
|
+
|
|
939
|
+
def chart_v1(
|
|
940
|
+
self,
|
|
941
|
+
body: schemas.BaseChartRequestV1,
|
|
942
|
+
*,
|
|
943
|
+
options: RequestOptions | None = None,
|
|
944
|
+
) -> Any:
|
|
945
|
+
"""Get Basic Chart
|
|
946
|
+
|
|
947
|
+
Get basic Vedic chart: Planets + Houses + Ascendant.
|
|
948
|
+
Lightweight endpoint for essential data only.
|
|
949
|
+
|
|
950
|
+
``POST /api/v1/vedic/chart``
|
|
951
|
+
"""
|
|
952
|
+
return self._client.request("POST", "/api/v1/vedic/chart", params=None, json=body, options=options)
|
|
953
|
+
|
|
954
|
+
def calculate_v1(
|
|
955
|
+
self,
|
|
956
|
+
body: schemas.VedicChartRequest,
|
|
957
|
+
*,
|
|
958
|
+
options: RequestOptions | None = None,
|
|
959
|
+
) -> Any:
|
|
960
|
+
"""Calculate Full Chart
|
|
961
|
+
|
|
962
|
+
Full Vedic chart with all optional features.
|
|
963
|
+
Use feature toggles to customize response.
|
|
964
|
+
|
|
965
|
+
``POST /api/v1/vedic/calculate``
|
|
966
|
+
"""
|
|
967
|
+
return self._client.request("POST", "/api/v1/vedic/calculate", params=None, json=body, options=options)
|
|
968
|
+
|
|
969
|
+
def dasha_v1(
|
|
970
|
+
self,
|
|
971
|
+
body: schemas.DashaRequestV1,
|
|
972
|
+
*,
|
|
973
|
+
options: RequestOptions | None = None,
|
|
974
|
+
) -> Any:
|
|
975
|
+
"""Get Dasha
|
|
976
|
+
|
|
977
|
+
Get Vimshottari Dasha timeline only.
|
|
978
|
+
|
|
979
|
+
``POST /api/v1/vedic/dasha``
|
|
980
|
+
"""
|
|
981
|
+
return self._client.request("POST", "/api/v1/vedic/dasha", params=None, json=body, options=options)
|
|
982
|
+
|
|
983
|
+
def dasha_insights_v1(
|
|
984
|
+
self,
|
|
985
|
+
body: schemas.DashaRequestV1,
|
|
986
|
+
*,
|
|
987
|
+
options: RequestOptions | None = None,
|
|
988
|
+
) -> schemas.VedicDashaInsightsResponse:
|
|
989
|
+
"""Get Dasha Insights
|
|
990
|
+
|
|
991
|
+
Get index-ready Vimshottari Dasha facts for Vedic retrieval and bot use.
|
|
992
|
+
|
|
993
|
+
``POST /api/v1/vedic/dasha/insights``
|
|
994
|
+
"""
|
|
995
|
+
return cast("schemas.VedicDashaInsightsResponse", self._client.request("POST", "/api/v1/vedic/dasha/insights", params=None, json=body, options=options))
|
|
996
|
+
|
|
997
|
+
def yogas_v1(
|
|
998
|
+
self,
|
|
999
|
+
body: schemas.BaseChartRequestV1,
|
|
1000
|
+
*,
|
|
1001
|
+
options: RequestOptions | None = None,
|
|
1002
|
+
) -> Any:
|
|
1003
|
+
"""Get Yogas
|
|
1004
|
+
|
|
1005
|
+
Get detected Yogas only (Manglik, Kala Sarpa, Raj Yogas, etc).
|
|
1006
|
+
|
|
1007
|
+
``POST /api/v1/vedic/yogas``
|
|
1008
|
+
"""
|
|
1009
|
+
return self._client.request("POST", "/api/v1/vedic/yogas", params=None, json=body, options=options)
|
|
1010
|
+
|
|
1011
|
+
def strength_v1(
|
|
1012
|
+
self,
|
|
1013
|
+
body: schemas.BaseChartRequestV1,
|
|
1014
|
+
*,
|
|
1015
|
+
options: RequestOptions | None = None,
|
|
1016
|
+
) -> Any:
|
|
1017
|
+
"""Get Strength
|
|
1018
|
+
|
|
1019
|
+
Get planetary strength: Shadbala + Ashtakavarga.
|
|
1020
|
+
|
|
1021
|
+
``POST /api/v1/vedic/strength``
|
|
1022
|
+
"""
|
|
1023
|
+
return self._client.request("POST", "/api/v1/vedic/strength", params=None, json=body, options=options)
|
|
1024
|
+
|
|
1025
|
+
def vargas_v1(
|
|
1026
|
+
self,
|
|
1027
|
+
body: schemas.VargaRequest,
|
|
1028
|
+
*,
|
|
1029
|
+
options: RequestOptions | None = None,
|
|
1030
|
+
) -> Any:
|
|
1031
|
+
"""Get Vargas
|
|
1032
|
+
|
|
1033
|
+
Get divisional chart positions (D1, D9, D10, etc).
|
|
1034
|
+
|
|
1035
|
+
``POST /api/v1/vedic/vargas``
|
|
1036
|
+
"""
|
|
1037
|
+
return self._client.request("POST", "/api/v1/vedic/vargas", params=None, json=body, options=options)
|
|
1038
|
+
|
|
1039
|
+
def compatibility_v1(
|
|
1040
|
+
self,
|
|
1041
|
+
body: schemas.CompatibilityRequest,
|
|
1042
|
+
*,
|
|
1043
|
+
options: RequestOptions | None = None,
|
|
1044
|
+
) -> Any:
|
|
1045
|
+
"""Calculate Compatibility
|
|
1046
|
+
|
|
1047
|
+
Calculate Ashtakoota (8-point) compatibility.
|
|
1048
|
+
Returns score out of 36.
|
|
1049
|
+
|
|
1050
|
+
``POST /api/v1/vedic/compatibility``
|
|
1051
|
+
"""
|
|
1052
|
+
return self._client.request("POST", "/api/v1/vedic/compatibility", params=None, json=body, options=options)
|
|
1053
|
+
|
|
1054
|
+
def panchang_v1(
|
|
1055
|
+
self,
|
|
1056
|
+
body: schemas.PanchangRequestV1,
|
|
1057
|
+
*,
|
|
1058
|
+
options: RequestOptions | None = None,
|
|
1059
|
+
) -> Any:
|
|
1060
|
+
"""Get Panchang
|
|
1061
|
+
|
|
1062
|
+
Get Panchang (daily almanac): Tithi, Nakshatra, Yoga, Karana, Rahu Kalam.
|
|
1063
|
+
|
|
1064
|
+
``POST /api/v1/vedic/panchang``
|
|
1065
|
+
"""
|
|
1066
|
+
return self._client.request("POST", "/api/v1/vedic/panchang", params=None, json=body, options=options)
|
|
1067
|
+
|
|
1068
|
+
def batch(
|
|
1069
|
+
self,
|
|
1070
|
+
body: schemas.VedicBatchRequest,
|
|
1071
|
+
*,
|
|
1072
|
+
options: RequestOptions | None = None,
|
|
1073
|
+
) -> Any:
|
|
1074
|
+
"""Run Vedic Batch
|
|
1075
|
+
|
|
1076
|
+
Run up to 6 single-person Vedic endpoint calls in one HTTP request.
|
|
1077
|
+
Items execute sequentially to keep compute bounded and preserve per-item order.
|
|
1078
|
+
|
|
1079
|
+
``POST /api/v1/vedic/batch``
|
|
1080
|
+
"""
|
|
1081
|
+
return self._client.request("POST", "/api/v1/vedic/batch", params=None, json=body, options=options)
|
|
1082
|
+
|
|
1083
|
+
def chat(
|
|
1084
|
+
self,
|
|
1085
|
+
body: schemas.VedicChatRequest,
|
|
1086
|
+
*,
|
|
1087
|
+
options: RequestOptions | None = None,
|
|
1088
|
+
) -> schemas.VedicChatResponse:
|
|
1089
|
+
"""Hosted Vedic Chat (v2)
|
|
1090
|
+
|
|
1091
|
+
Hosted Vedic Chat orchestration.
|
|
1092
|
+
|
|
1093
|
+
``POST /api/v2/vedic/chat``
|
|
1094
|
+
"""
|
|
1095
|
+
return cast("schemas.VedicChatResponse", self._client.request("POST", "/api/v2/vedic/chat", params=None, json=body, options=options))
|
|
1096
|
+
|
|
1097
|
+
def calculate(
|
|
1098
|
+
self,
|
|
1099
|
+
body: schemas.CalculateRequest,
|
|
1100
|
+
*,
|
|
1101
|
+
options: RequestOptions | None = None,
|
|
1102
|
+
) -> schemas.CalculateV2Response:
|
|
1103
|
+
"""Get Full Vedic Calculate (v2)
|
|
1104
|
+
|
|
1105
|
+
Return a full V2 Vedic chart payload composed from calibrated V2 component engines.
|
|
1106
|
+
|
|
1107
|
+
``POST /api/v2/vedic/calculate``
|
|
1108
|
+
"""
|
|
1109
|
+
return cast("schemas.CalculateV2Response", self._client.request("POST", "/api/v2/vedic/calculate", params=None, json=body, options=options))
|
|
1110
|
+
|
|
1111
|
+
def kp(
|
|
1112
|
+
self,
|
|
1113
|
+
body: schemas.KPChartRequest,
|
|
1114
|
+
*,
|
|
1115
|
+
options: RequestOptions | None = None,
|
|
1116
|
+
) -> schemas.KPChartResponse:
|
|
1117
|
+
"""Get Complete KP Chart (v2)
|
|
1118
|
+
|
|
1119
|
+
Return a complete Krishnamurti Paddhati calculation contract.
|
|
1120
|
+
|
|
1121
|
+
``POST /api/v2/vedic/kp``
|
|
1122
|
+
"""
|
|
1123
|
+
return cast("schemas.KPChartResponse", self._client.request("POST", "/api/v2/vedic/kp", params=None, json=body, options=options))
|
|
1124
|
+
|
|
1125
|
+
def kp_render(
|
|
1126
|
+
self,
|
|
1127
|
+
body: schemas.KPChartRenderRequest,
|
|
1128
|
+
*,
|
|
1129
|
+
options: RequestOptions | None = None,
|
|
1130
|
+
) -> str:
|
|
1131
|
+
"""Render KP Chart and Tables (v2)
|
|
1132
|
+
|
|
1133
|
+
Render the same complete KP calculation as an accessible SVG or PNG.
|
|
1134
|
+
|
|
1135
|
+
``POST /api/v2/vedic/kp/render``
|
|
1136
|
+
|
|
1137
|
+
Returns the image body as text; use ``request_raw`` for binary formats such as PNG.
|
|
1138
|
+
"""
|
|
1139
|
+
return cast("str", self._client.request("POST", "/api/v2/vedic/kp/render", params=None, json=body, options=options))
|
|
1140
|
+
|
|
1141
|
+
def chart(
|
|
1142
|
+
self,
|
|
1143
|
+
body: schemas.ChartRequest,
|
|
1144
|
+
*,
|
|
1145
|
+
options: RequestOptions | None = None,
|
|
1146
|
+
) -> schemas.ChartV2Response:
|
|
1147
|
+
"""Get Vedic Chart (v2)
|
|
1148
|
+
|
|
1149
|
+
Return a clean V2 D1 chart payload built from the shared sidereal chart engine.
|
|
1150
|
+
|
|
1151
|
+
``POST /api/v2/vedic/chart``
|
|
1152
|
+
"""
|
|
1153
|
+
return cast("schemas.ChartV2Response", self._client.request("POST", "/api/v2/vedic/chart", params=None, json=body, options=options))
|
|
1154
|
+
|
|
1155
|
+
def vargas(
|
|
1156
|
+
self,
|
|
1157
|
+
body: schemas.VargasRequest,
|
|
1158
|
+
*,
|
|
1159
|
+
options: RequestOptions | None = None,
|
|
1160
|
+
) -> schemas.VargasV2Response:
|
|
1161
|
+
"""Get Vedic Vargas (v2)
|
|
1162
|
+
|
|
1163
|
+
Return V2 divisional chart rows and whole-sign divisional layouts.
|
|
1164
|
+
|
|
1165
|
+
``POST /api/v2/vedic/vargas``
|
|
1166
|
+
"""
|
|
1167
|
+
return cast("schemas.VargasV2Response", self._client.request("POST", "/api/v2/vedic/vargas", params=None, json=body, options=options))
|
|
1168
|
+
|
|
1169
|
+
def dasha(
|
|
1170
|
+
self,
|
|
1171
|
+
body: schemas.DashaRequestV2,
|
|
1172
|
+
*,
|
|
1173
|
+
options: RequestOptions | None = None,
|
|
1174
|
+
) -> schemas.DashaV2Response:
|
|
1175
|
+
"""Get Vimshottari Dasha (v2)
|
|
1176
|
+
|
|
1177
|
+
Return a V2 Vimshottari Dasha contract with birth balance, active stack, and timeline.
|
|
1178
|
+
|
|
1179
|
+
``POST /api/v2/vedic/dasha``
|
|
1180
|
+
"""
|
|
1181
|
+
return cast("schemas.DashaV2Response", self._client.request("POST", "/api/v2/vedic/dasha", params=None, json=body, options=options))
|
|
1182
|
+
|
|
1183
|
+
def dasha_insights(
|
|
1184
|
+
self,
|
|
1185
|
+
body: schemas.DashaRequestV2,
|
|
1186
|
+
*,
|
|
1187
|
+
options: RequestOptions | None = None,
|
|
1188
|
+
) -> schemas.VedicDashaInsightsResponse:
|
|
1189
|
+
"""Get Vimshottari Dasha Insights (v2)
|
|
1190
|
+
|
|
1191
|
+
Return ranked dasha insight facts derived from the calibrated V2 Vimshottari timeline.
|
|
1192
|
+
|
|
1193
|
+
``POST /api/v2/vedic/dasha/insights``
|
|
1194
|
+
"""
|
|
1195
|
+
return cast("schemas.VedicDashaInsightsResponse", self._client.request("POST", "/api/v2/vedic/dasha/insights", params=None, json=body, options=options))
|
|
1196
|
+
|
|
1197
|
+
def yogas(
|
|
1198
|
+
self,
|
|
1199
|
+
body: schemas.BaseChartRequestV2,
|
|
1200
|
+
*,
|
|
1201
|
+
options: RequestOptions | None = None,
|
|
1202
|
+
) -> schemas.YogasV2Response:
|
|
1203
|
+
"""Get Vedic Yogas (v2)
|
|
1204
|
+
|
|
1205
|
+
Evaluate a classical V2 yoga catalog and return active and inactive results with evidence.
|
|
1206
|
+
|
|
1207
|
+
``POST /api/v2/vedic/yogas``
|
|
1208
|
+
"""
|
|
1209
|
+
return cast("schemas.YogasV2Response", self._client.request("POST", "/api/v2/vedic/yogas", params=None, json=body, options=options))
|
|
1210
|
+
|
|
1211
|
+
def strength(
|
|
1212
|
+
self,
|
|
1213
|
+
body: schemas.BaseChartRequestV2,
|
|
1214
|
+
*,
|
|
1215
|
+
options: RequestOptions | None = None,
|
|
1216
|
+
) -> schemas.StrengthV2Response:
|
|
1217
|
+
"""Get Vedic Strength (v2)
|
|
1218
|
+
|
|
1219
|
+
Return V2 strength data with classical Shadbala and classical Ashtakavarga.
|
|
1220
|
+
|
|
1221
|
+
``POST /api/v2/vedic/strength``
|
|
1222
|
+
"""
|
|
1223
|
+
return cast("schemas.StrengthV2Response", self._client.request("POST", "/api/v2/vedic/strength", params=None, json=body, options=options))
|
|
1224
|
+
|
|
1225
|
+
def compatibility(
|
|
1226
|
+
self,
|
|
1227
|
+
body: schemas.CompatibilityV2Request,
|
|
1228
|
+
*,
|
|
1229
|
+
options: RequestOptions | None = None,
|
|
1230
|
+
) -> schemas.CompatibilityV2Response:
|
|
1231
|
+
"""Get Vedic Compatibility (v2)
|
|
1232
|
+
|
|
1233
|
+
Return an AstroSage-style V2 Ashtakoota compatibility payload.
|
|
1234
|
+
|
|
1235
|
+
``POST /api/v2/vedic/compatibility``
|
|
1236
|
+
"""
|
|
1237
|
+
return cast("schemas.CompatibilityV2Response", self._client.request("POST", "/api/v2/vedic/compatibility", params=None, json=body, options=options))
|
|
1238
|
+
|
|
1239
|
+
def match(
|
|
1240
|
+
self,
|
|
1241
|
+
body: schemas.MatchV2Request,
|
|
1242
|
+
*,
|
|
1243
|
+
options: RequestOptions | None = None,
|
|
1244
|
+
) -> schemas.CompatibilityV2Response:
|
|
1245
|
+
"""Get Vedic Match by Birth Details (v2)
|
|
1246
|
+
|
|
1247
|
+
Return the calibrated V2 compatibility payload from two birth charts.
|
|
1248
|
+
|
|
1249
|
+
``POST /api/v2/vedic/match``
|
|
1250
|
+
"""
|
|
1251
|
+
return cast("schemas.CompatibilityV2Response", self._client.request("POST", "/api/v2/vedic/match", params=None, json=body, options=options))
|
|
1252
|
+
|
|
1253
|
+
def panchang(
|
|
1254
|
+
self,
|
|
1255
|
+
body: schemas.PanchangRequestV2,
|
|
1256
|
+
*,
|
|
1257
|
+
options: RequestOptions | None = None,
|
|
1258
|
+
) -> schemas.PanchangV2Response:
|
|
1259
|
+
"""Get Panchang (v2)
|
|
1260
|
+
|
|
1261
|
+
Return a sunrise-based daily Panchang with transition times calibrated toward
|
|
1262
|
+
AstroSage's public daily Panchang presentation.
|
|
1263
|
+
|
|
1264
|
+
``POST /api/v2/vedic/panchang``
|
|
1265
|
+
"""
|
|
1266
|
+
return cast("schemas.PanchangV2Response", self._client.request("POST", "/api/v2/vedic/panchang", params=None, json=body, options=options))
|
|
1267
|
+
|
|
1268
|
+
def qa(
|
|
1269
|
+
self,
|
|
1270
|
+
body: schemas.VedicQARequest,
|
|
1271
|
+
*,
|
|
1272
|
+
options: RequestOptions | None = None,
|
|
1273
|
+
) -> schemas.VedicQAResponse:
|
|
1274
|
+
"""Answer Vedic question (v2)
|
|
1275
|
+
|
|
1276
|
+
Answer a constrained Vedic question with structured calculation evidence.
|
|
1277
|
+
|
|
1278
|
+
``POST /api/v2/vedic/qa``
|
|
1279
|
+
"""
|
|
1280
|
+
return cast("schemas.VedicQAResponse", self._client.request("POST", "/api/v2/vedic/qa", params=None, json=body, options=options))
|
|
1281
|
+
|
|
1282
|
+
|
|
1283
|
+
class WesternSolarResource:
|
|
1284
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1285
|
+
self._client = client
|
|
1286
|
+
|
|
1287
|
+
def calculate(
|
|
1288
|
+
self,
|
|
1289
|
+
body: schemas.SolarReturnRequest,
|
|
1290
|
+
*,
|
|
1291
|
+
options: RequestOptions | None = None,
|
|
1292
|
+
) -> schemas.SolarReturnResponse:
|
|
1293
|
+
"""Get Solar Return
|
|
1294
|
+
|
|
1295
|
+
Computes purely deterministic Solar Return chart against the Natal chart.
|
|
1296
|
+
Returns structurally identical core chart blocks (planets, aspects) as
|
|
1297
|
+
well as exact cross-aspects and angularity, without scoring or archetype models.
|
|
1298
|
+
|
|
1299
|
+
``POST /api/v1/western/solar/calculate``
|
|
1300
|
+
"""
|
|
1301
|
+
return cast("schemas.SolarReturnResponse", self._client.request("POST", "/api/v1/western/solar/calculate", params=None, json=body, options=options))
|
|
1302
|
+
|
|
1303
|
+
|
|
1304
|
+
class WesternReturnsResource:
|
|
1305
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1306
|
+
self._client = client
|
|
1307
|
+
|
|
1308
|
+
def calculate(
|
|
1309
|
+
self,
|
|
1310
|
+
body: schemas.PlanetReturnRequest,
|
|
1311
|
+
*,
|
|
1312
|
+
options: RequestOptions | None = None,
|
|
1313
|
+
) -> schemas.PlanetReturnResponse:
|
|
1314
|
+
"""Get Planet Return
|
|
1315
|
+
|
|
1316
|
+
Computes a deterministic planetary return chart against the natal chart.
|
|
1317
|
+
The return target is selected by body plus a date anchor and selection mode.
|
|
1318
|
+
|
|
1319
|
+
``POST /api/v1/western/returns/calculate``
|
|
1320
|
+
"""
|
|
1321
|
+
return cast("schemas.PlanetReturnResponse", self._client.request("POST", "/api/v1/western/returns/calculate", params=None, json=body, options=options))
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
class WesternAstrocartographyResource:
|
|
1325
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1326
|
+
self._client = client
|
|
1327
|
+
|
|
1328
|
+
def lines(
|
|
1329
|
+
self,
|
|
1330
|
+
body: schemas.AstrocartographyLinesRequest,
|
|
1331
|
+
*,
|
|
1332
|
+
options: RequestOptions | None = None,
|
|
1333
|
+
) -> dict[str, Any]:
|
|
1334
|
+
"""Get Astrocartography Lines
|
|
1335
|
+
|
|
1336
|
+
Compute astrocartography map lines for a natal chart.
|
|
1337
|
+
|
|
1338
|
+
``POST /api/v1/western/astrocartography/lines``
|
|
1339
|
+
"""
|
|
1340
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v1/western/astrocartography/lines", params=None, json=body, options=options))
|
|
1341
|
+
|
|
1342
|
+
def recommendations(
|
|
1343
|
+
self,
|
|
1344
|
+
body: schemas.AstrocartographyRecommendationsRequest,
|
|
1345
|
+
*,
|
|
1346
|
+
options: RequestOptions | None = None,
|
|
1347
|
+
) -> dict[str, Any]:
|
|
1348
|
+
"""Get Astrocartography Recommendations
|
|
1349
|
+
|
|
1350
|
+
Rank candidate cities for a focus-oriented astrocartography search.
|
|
1351
|
+
|
|
1352
|
+
``POST /api/v1/western/astrocartography/recommendations``
|
|
1353
|
+
"""
|
|
1354
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v1/western/astrocartography/recommendations", params=None, json=body, options=options))
|
|
1355
|
+
|
|
1356
|
+
def parans(
|
|
1357
|
+
self,
|
|
1358
|
+
body: schemas.AstrocartographyParansRequest,
|
|
1359
|
+
*,
|
|
1360
|
+
options: RequestOptions | None = None,
|
|
1361
|
+
) -> dict[str, Any]:
|
|
1362
|
+
"""Get Astrocartography Parans
|
|
1363
|
+
|
|
1364
|
+
Compute classical in-mundo astrocartography parans for a natal chart.
|
|
1365
|
+
|
|
1366
|
+
``POST /api/v1/western/astrocartography/parans``
|
|
1367
|
+
"""
|
|
1368
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v1/western/astrocartography/parans", params=None, json=body, options=options))
|
|
1369
|
+
|
|
1370
|
+
def relocation(
|
|
1371
|
+
self,
|
|
1372
|
+
body: schemas.AstrocartographyRelocationRequest,
|
|
1373
|
+
*,
|
|
1374
|
+
options: RequestOptions | None = None,
|
|
1375
|
+
) -> dict[str, Any]:
|
|
1376
|
+
"""Get Astrocartography Relocation
|
|
1377
|
+
|
|
1378
|
+
Build a full relocated chart for the natal instant at a target city.
|
|
1379
|
+
|
|
1380
|
+
``POST /api/v1/western/astrocartography/relocation``
|
|
1381
|
+
"""
|
|
1382
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v1/western/astrocartography/relocation", params=None, json=body, options=options))
|
|
1383
|
+
|
|
1384
|
+
def city_check(
|
|
1385
|
+
self,
|
|
1386
|
+
body: schemas.AstrocartographyCityCheckRequest,
|
|
1387
|
+
*,
|
|
1388
|
+
options: RequestOptions | None = None,
|
|
1389
|
+
) -> dict[str, Any]:
|
|
1390
|
+
"""Get Astrocartography City Check
|
|
1391
|
+
|
|
1392
|
+
Score a single city across the five primary relocation-oriented focus areas.
|
|
1393
|
+
|
|
1394
|
+
``POST /api/v1/western/astrocartography/city-check``
|
|
1395
|
+
"""
|
|
1396
|
+
return cast("dict[str, Any]", self._client.request("POST", "/api/v1/western/astrocartography/city-check", params=None, json=body, options=options))
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
class WesternNatalResource:
|
|
1400
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1401
|
+
self._client = client
|
|
1402
|
+
|
|
1403
|
+
def insights(
|
|
1404
|
+
self,
|
|
1405
|
+
body: schemas.NatalInsightsRequest,
|
|
1406
|
+
*,
|
|
1407
|
+
options: RequestOptions | None = None,
|
|
1408
|
+
) -> schemas.NatalInsightsResponse:
|
|
1409
|
+
"""Get Natal Insights
|
|
1410
|
+
|
|
1411
|
+
Return machine-readable natal insight facts, with optional canonical grouping and French display text.
|
|
1412
|
+
|
|
1413
|
+
``POST /api/v1/western/natal/insights``
|
|
1414
|
+
"""
|
|
1415
|
+
return cast("schemas.NatalInsightsResponse", self._client.request("POST", "/api/v1/western/natal/insights", params=None, json=body, options=options))
|
|
1416
|
+
|
|
1417
|
+
def insights_index_documents(
|
|
1418
|
+
self,
|
|
1419
|
+
body: schemas.NatalInsightsRequest,
|
|
1420
|
+
*,
|
|
1421
|
+
options: RequestOptions | None = None,
|
|
1422
|
+
) -> schemas.NatalInsightsIndexDocumentsResponse:
|
|
1423
|
+
"""Get Natal Insight Index Documents
|
|
1424
|
+
|
|
1425
|
+
Return one denormalized search document per natal insight fact for external indexing systems.
|
|
1426
|
+
|
|
1427
|
+
``POST /api/v1/western/natal/insights/index-documents``
|
|
1428
|
+
"""
|
|
1429
|
+
return cast("schemas.NatalInsightsIndexDocumentsResponse", self._client.request("POST", "/api/v1/western/natal/insights/index-documents", params=None, json=body, options=options))
|
|
1430
|
+
|
|
1431
|
+
|
|
1432
|
+
class WesternTransitsResource:
|
|
1433
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1434
|
+
self._client = client
|
|
1435
|
+
|
|
1436
|
+
def insights(
|
|
1437
|
+
self,
|
|
1438
|
+
body: schemas.TransitTimelineRequest,
|
|
1439
|
+
*,
|
|
1440
|
+
options: RequestOptions | None = None,
|
|
1441
|
+
) -> schemas.TransitInsightsResponse:
|
|
1442
|
+
"""Get Transit Insights
|
|
1443
|
+
|
|
1444
|
+
Compute derived transit insight windows from the transit timeline engine.
|
|
1445
|
+
|
|
1446
|
+
``POST /api/v1/western/transits/insights``
|
|
1447
|
+
"""
|
|
1448
|
+
return cast("schemas.TransitInsightsResponse", self._client.request("POST", "/api/v1/western/transits/insights", params=None, json=body, options=options))
|
|
1449
|
+
|
|
1450
|
+
def timeline(
|
|
1451
|
+
self,
|
|
1452
|
+
body: schemas.TransitTimelineRequest,
|
|
1453
|
+
*,
|
|
1454
|
+
options: RequestOptions | None = None,
|
|
1455
|
+
) -> schemas.TransitTimelineResponse:
|
|
1456
|
+
"""Get Transits Timeline
|
|
1457
|
+
|
|
1458
|
+
Compute transit-to-natal interval passes across a date range for calendar and timeline rendering.
|
|
1459
|
+
|
|
1460
|
+
``POST /api/v1/western/transits/timeline``
|
|
1461
|
+
"""
|
|
1462
|
+
return cast("schemas.TransitTimelineResponse", self._client.request("POST", "/api/v1/western/transits/timeline", params=None, json=body, options=options))
|
|
1463
|
+
|
|
1464
|
+
def timeline_index_documents(
|
|
1465
|
+
self,
|
|
1466
|
+
body: schemas.TransitTimelineRequest,
|
|
1467
|
+
*,
|
|
1468
|
+
options: RequestOptions | None = None,
|
|
1469
|
+
) -> schemas.TransitTimelineIndexDocumentsResponse:
|
|
1470
|
+
"""Get Transits Timeline Index Documents
|
|
1471
|
+
|
|
1472
|
+
Compute timeline passes and return one denormalized search document per pass.
|
|
1473
|
+
|
|
1474
|
+
``POST /api/v1/western/transits/timeline/index-documents``
|
|
1475
|
+
"""
|
|
1476
|
+
return cast("schemas.TransitTimelineIndexDocumentsResponse", self._client.request("POST", "/api/v1/western/transits/timeline/index-documents", params=None, json=body, options=options))
|
|
1477
|
+
|
|
1478
|
+
def search(
|
|
1479
|
+
self,
|
|
1480
|
+
body: schemas.TransitSearchRequest,
|
|
1481
|
+
*,
|
|
1482
|
+
options: RequestOptions | None = None,
|
|
1483
|
+
) -> schemas.TransitSearchResponse:
|
|
1484
|
+
"""Search Transits
|
|
1485
|
+
|
|
1486
|
+
Search a long-range date or age window for all passes of one transit planet against one natal point.
|
|
1487
|
+
|
|
1488
|
+
``POST /api/v1/western/transits/search``
|
|
1489
|
+
"""
|
|
1490
|
+
return cast("schemas.TransitSearchResponse", self._client.request("POST", "/api/v1/western/transits/search", params=None, json=body, options=options))
|
|
1491
|
+
|
|
1492
|
+
|
|
1493
|
+
class WesternProfectionsResource:
|
|
1494
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1495
|
+
self._client = client
|
|
1496
|
+
|
|
1497
|
+
def annual(
|
|
1498
|
+
self,
|
|
1499
|
+
body: schemas.AnnualProfectionRequest,
|
|
1500
|
+
*,
|
|
1501
|
+
include: list[str] | None = None,
|
|
1502
|
+
options: RequestOptions | None = None,
|
|
1503
|
+
) -> schemas.AnnualProfectionResponse:
|
|
1504
|
+
"""Get Annual Profections
|
|
1505
|
+
|
|
1506
|
+
Annual profections endpoint with a solar-return-style envelope and a timing-oriented body.
|
|
1507
|
+
|
|
1508
|
+
``POST /api/v1/western/profections/annual``
|
|
1509
|
+
"""
|
|
1510
|
+
return cast("schemas.AnnualProfectionResponse", self._client.request("POST", "/api/v1/western/profections/annual", params=_query({"include": include}), json=body, options=options))
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
class WesternProgressionsResource:
|
|
1514
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1515
|
+
self._client = client
|
|
1516
|
+
|
|
1517
|
+
def secondary(
|
|
1518
|
+
self,
|
|
1519
|
+
body: schemas.SecondaryProgressionsRequest,
|
|
1520
|
+
*,
|
|
1521
|
+
include: list[str] | None = None,
|
|
1522
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
1523
|
+
options: RequestOptions | None = None,
|
|
1524
|
+
) -> schemas.SecondaryProgressionsResponse | schemas.ProgressionTableResponse:
|
|
1525
|
+
"""Get Secondary Progressions
|
|
1526
|
+
|
|
1527
|
+
Compute a secondary progressed chart using the classic symbolic timing rule:
|
|
1528
|
+
1 day after birth = 1 year of life.
|
|
1529
|
+
|
|
1530
|
+
``POST /api/v1/western/progressions/secondary``
|
|
1531
|
+
"""
|
|
1532
|
+
return cast("schemas.SecondaryProgressionsResponse | schemas.ProgressionTableResponse", self._client.request("POST", "/api/v1/western/progressions/secondary", params=_query({"include": include, "response_mode": response_mode}), json=body, options=options))
|
|
1533
|
+
|
|
1534
|
+
def converse_secondary(
|
|
1535
|
+
self,
|
|
1536
|
+
body: schemas.ConverseSecondaryProgressionsRequest,
|
|
1537
|
+
*,
|
|
1538
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
1539
|
+
options: RequestOptions | None = None,
|
|
1540
|
+
) -> schemas.ProgressionChartResponse | schemas.ProgressionTableResponse:
|
|
1541
|
+
"""Get Converse Secondary Progressions
|
|
1542
|
+
|
|
1543
|
+
``POST /api/v1/western/progressions/converse-secondary``
|
|
1544
|
+
"""
|
|
1545
|
+
return cast("schemas.ProgressionChartResponse | schemas.ProgressionTableResponse", self._client.request("POST", "/api/v1/western/progressions/converse-secondary", params=_query({"response_mode": response_mode}), json=body, options=options))
|
|
1546
|
+
|
|
1547
|
+
def tertiary(
|
|
1548
|
+
self,
|
|
1549
|
+
body: schemas.TertiaryProgressionsRequest,
|
|
1550
|
+
*,
|
|
1551
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
1552
|
+
options: RequestOptions | None = None,
|
|
1553
|
+
) -> schemas.ProgressionChartResponse | schemas.ProgressionTableResponse:
|
|
1554
|
+
"""Get Tertiary Progressions
|
|
1555
|
+
|
|
1556
|
+
``POST /api/v1/western/progressions/tertiary``
|
|
1557
|
+
"""
|
|
1558
|
+
return cast("schemas.ProgressionChartResponse | schemas.ProgressionTableResponse", self._client.request("POST", "/api/v1/western/progressions/tertiary", params=_query({"response_mode": response_mode}), json=body, options=options))
|
|
1559
|
+
|
|
1560
|
+
def quotidian(
|
|
1561
|
+
self,
|
|
1562
|
+
body: schemas.QuotidianProgressionsRequest,
|
|
1563
|
+
*,
|
|
1564
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
1565
|
+
options: RequestOptions | None = None,
|
|
1566
|
+
) -> schemas.ProgressionChartResponse | schemas.ProgressionTableResponse:
|
|
1567
|
+
"""Get Quotidian Progressions
|
|
1568
|
+
|
|
1569
|
+
``POST /api/v1/western/progressions/quotidian``
|
|
1570
|
+
"""
|
|
1571
|
+
return cast("schemas.ProgressionChartResponse | schemas.ProgressionTableResponse", self._client.request("POST", "/api/v1/western/progressions/quotidian", params=_query({"response_mode": response_mode}), json=body, options=options))
|
|
1572
|
+
|
|
1573
|
+
def quaternary(
|
|
1574
|
+
self,
|
|
1575
|
+
body: schemas.QuaternaryProgressionsRequest,
|
|
1576
|
+
*,
|
|
1577
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
1578
|
+
options: RequestOptions | None = None,
|
|
1579
|
+
) -> schemas.ProgressionChartResponse | schemas.ProgressionTableResponse:
|
|
1580
|
+
"""Get Quaternary Progressions
|
|
1581
|
+
|
|
1582
|
+
``POST /api/v1/western/progressions/quaternary``
|
|
1583
|
+
"""
|
|
1584
|
+
return cast("schemas.ProgressionChartResponse | schemas.ProgressionTableResponse", self._client.request("POST", "/api/v1/western/progressions/quaternary", params=_query({"response_mode": response_mode}), json=body, options=options))
|
|
1585
|
+
|
|
1586
|
+
def secondary_exact_ingresses(
|
|
1587
|
+
self,
|
|
1588
|
+
body: schemas.ExactIngressSearchRequest,
|
|
1589
|
+
*,
|
|
1590
|
+
options: RequestOptions | None = None,
|
|
1591
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
1592
|
+
"""Search Secondary Exact Ingresses
|
|
1593
|
+
|
|
1594
|
+
``POST /api/v1/western/progressions/secondary/exact-ingresses``
|
|
1595
|
+
"""
|
|
1596
|
+
return cast("schemas.ExactIngressSearchResponse", self._client.request("POST", "/api/v1/western/progressions/secondary/exact-ingresses", params=None, json=body, options=options))
|
|
1597
|
+
|
|
1598
|
+
def converse_secondary_exact_ingresses(
|
|
1599
|
+
self,
|
|
1600
|
+
body: schemas.ExactIngressSearchRequest,
|
|
1601
|
+
*,
|
|
1602
|
+
options: RequestOptions | None = None,
|
|
1603
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
1604
|
+
"""Search Converse Secondary Exact Ingresses
|
|
1605
|
+
|
|
1606
|
+
``POST /api/v1/western/progressions/converse-secondary/exact-ingresses``
|
|
1607
|
+
"""
|
|
1608
|
+
return cast("schemas.ExactIngressSearchResponse", self._client.request("POST", "/api/v1/western/progressions/converse-secondary/exact-ingresses", params=None, json=body, options=options))
|
|
1609
|
+
|
|
1610
|
+
def tertiary_exact_ingresses(
|
|
1611
|
+
self,
|
|
1612
|
+
body: schemas.ExactIngressSearchRequest,
|
|
1613
|
+
*,
|
|
1614
|
+
options: RequestOptions | None = None,
|
|
1615
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
1616
|
+
"""Search Tertiary Exact Ingresses
|
|
1617
|
+
|
|
1618
|
+
``POST /api/v1/western/progressions/tertiary/exact-ingresses``
|
|
1619
|
+
"""
|
|
1620
|
+
return cast("schemas.ExactIngressSearchResponse", self._client.request("POST", "/api/v1/western/progressions/tertiary/exact-ingresses", params=None, json=body, options=options))
|
|
1621
|
+
|
|
1622
|
+
def quotidian_exact_ingresses(
|
|
1623
|
+
self,
|
|
1624
|
+
body: schemas.ExactIngressSearchRequest,
|
|
1625
|
+
*,
|
|
1626
|
+
options: RequestOptions | None = None,
|
|
1627
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
1628
|
+
"""Search Quotidian Exact Ingresses
|
|
1629
|
+
|
|
1630
|
+
``POST /api/v1/western/progressions/quotidian/exact-ingresses``
|
|
1631
|
+
"""
|
|
1632
|
+
return cast("schemas.ExactIngressSearchResponse", self._client.request("POST", "/api/v1/western/progressions/quotidian/exact-ingresses", params=None, json=body, options=options))
|
|
1633
|
+
|
|
1634
|
+
def quaternary_exact_ingresses(
|
|
1635
|
+
self,
|
|
1636
|
+
body: schemas.ExactIngressSearchRequest,
|
|
1637
|
+
*,
|
|
1638
|
+
options: RequestOptions | None = None,
|
|
1639
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
1640
|
+
"""Search Quaternary Exact Ingresses
|
|
1641
|
+
|
|
1642
|
+
``POST /api/v1/western/progressions/quaternary/exact-ingresses``
|
|
1643
|
+
"""
|
|
1644
|
+
return cast("schemas.ExactIngressSearchResponse", self._client.request("POST", "/api/v1/western/progressions/quaternary/exact-ingresses", params=None, json=body, options=options))
|
|
1645
|
+
|
|
1646
|
+
def secondary_exact_aspects(
|
|
1647
|
+
self,
|
|
1648
|
+
body: schemas.ExactAspectSearchRequest,
|
|
1649
|
+
*,
|
|
1650
|
+
options: RequestOptions | None = None,
|
|
1651
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
1652
|
+
"""Search Secondary Exact Aspects
|
|
1653
|
+
|
|
1654
|
+
``POST /api/v1/western/progressions/secondary/exact-aspects``
|
|
1655
|
+
"""
|
|
1656
|
+
return cast("schemas.ExactAspectSearchResponse", self._client.request("POST", "/api/v1/western/progressions/secondary/exact-aspects", params=None, json=body, options=options))
|
|
1657
|
+
|
|
1658
|
+
def converse_secondary_exact_aspects(
|
|
1659
|
+
self,
|
|
1660
|
+
body: schemas.ExactAspectSearchRequest,
|
|
1661
|
+
*,
|
|
1662
|
+
options: RequestOptions | None = None,
|
|
1663
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
1664
|
+
"""Search Converse Secondary Exact Aspects
|
|
1665
|
+
|
|
1666
|
+
``POST /api/v1/western/progressions/converse-secondary/exact-aspects``
|
|
1667
|
+
"""
|
|
1668
|
+
return cast("schemas.ExactAspectSearchResponse", self._client.request("POST", "/api/v1/western/progressions/converse-secondary/exact-aspects", params=None, json=body, options=options))
|
|
1669
|
+
|
|
1670
|
+
def tertiary_exact_aspects(
|
|
1671
|
+
self,
|
|
1672
|
+
body: schemas.ExactAspectSearchRequest,
|
|
1673
|
+
*,
|
|
1674
|
+
options: RequestOptions | None = None,
|
|
1675
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
1676
|
+
"""Search Tertiary Exact Aspects
|
|
1677
|
+
|
|
1678
|
+
``POST /api/v1/western/progressions/tertiary/exact-aspects``
|
|
1679
|
+
"""
|
|
1680
|
+
return cast("schemas.ExactAspectSearchResponse", self._client.request("POST", "/api/v1/western/progressions/tertiary/exact-aspects", params=None, json=body, options=options))
|
|
1681
|
+
|
|
1682
|
+
def quotidian_exact_aspects(
|
|
1683
|
+
self,
|
|
1684
|
+
body: schemas.ExactAspectSearchRequest,
|
|
1685
|
+
*,
|
|
1686
|
+
options: RequestOptions | None = None,
|
|
1687
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
1688
|
+
"""Search Quotidian Exact Aspects
|
|
1689
|
+
|
|
1690
|
+
``POST /api/v1/western/progressions/quotidian/exact-aspects``
|
|
1691
|
+
"""
|
|
1692
|
+
return cast("schemas.ExactAspectSearchResponse", self._client.request("POST", "/api/v1/western/progressions/quotidian/exact-aspects", params=None, json=body, options=options))
|
|
1693
|
+
|
|
1694
|
+
def quaternary_exact_aspects(
|
|
1695
|
+
self,
|
|
1696
|
+
body: schemas.ExactAspectSearchRequest,
|
|
1697
|
+
*,
|
|
1698
|
+
options: RequestOptions | None = None,
|
|
1699
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
1700
|
+
"""Search Quaternary Exact Aspects
|
|
1701
|
+
|
|
1702
|
+
``POST /api/v1/western/progressions/quaternary/exact-aspects``
|
|
1703
|
+
"""
|
|
1704
|
+
return cast("schemas.ExactAspectSearchResponse", self._client.request("POST", "/api/v1/western/progressions/quaternary/exact-aspects", params=None, json=body, options=options))
|
|
1705
|
+
|
|
1706
|
+
def secondary_calendar(
|
|
1707
|
+
self,
|
|
1708
|
+
body: schemas.ProgressionCalendarRequest,
|
|
1709
|
+
*,
|
|
1710
|
+
options: RequestOptions | None = None,
|
|
1711
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
1712
|
+
"""Get Secondary Progressions Calendar
|
|
1713
|
+
|
|
1714
|
+
``POST /api/v1/western/progressions/secondary/calendar``
|
|
1715
|
+
"""
|
|
1716
|
+
return cast("schemas.ProgressionCalendarResponse", self._client.request("POST", "/api/v1/western/progressions/secondary/calendar", params=None, json=body, options=options))
|
|
1717
|
+
|
|
1718
|
+
def converse_secondary_calendar(
|
|
1719
|
+
self,
|
|
1720
|
+
body: schemas.ProgressionCalendarRequest,
|
|
1721
|
+
*,
|
|
1722
|
+
options: RequestOptions | None = None,
|
|
1723
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
1724
|
+
"""Get Converse Secondary Progressions Calendar
|
|
1725
|
+
|
|
1726
|
+
``POST /api/v1/western/progressions/converse-secondary/calendar``
|
|
1727
|
+
"""
|
|
1728
|
+
return cast("schemas.ProgressionCalendarResponse", self._client.request("POST", "/api/v1/western/progressions/converse-secondary/calendar", params=None, json=body, options=options))
|
|
1729
|
+
|
|
1730
|
+
def tertiary_calendar(
|
|
1731
|
+
self,
|
|
1732
|
+
body: schemas.ProgressionCalendarRequest,
|
|
1733
|
+
*,
|
|
1734
|
+
options: RequestOptions | None = None,
|
|
1735
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
1736
|
+
"""Get Tertiary Progressions Calendar
|
|
1737
|
+
|
|
1738
|
+
``POST /api/v1/western/progressions/tertiary/calendar``
|
|
1739
|
+
"""
|
|
1740
|
+
return cast("schemas.ProgressionCalendarResponse", self._client.request("POST", "/api/v1/western/progressions/tertiary/calendar", params=None, json=body, options=options))
|
|
1741
|
+
|
|
1742
|
+
def quotidian_calendar(
|
|
1743
|
+
self,
|
|
1744
|
+
body: schemas.ProgressionCalendarRequest,
|
|
1745
|
+
*,
|
|
1746
|
+
options: RequestOptions | None = None,
|
|
1747
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
1748
|
+
"""Get Quotidian Progressions Calendar
|
|
1749
|
+
|
|
1750
|
+
``POST /api/v1/western/progressions/quotidian/calendar``
|
|
1751
|
+
"""
|
|
1752
|
+
return cast("schemas.ProgressionCalendarResponse", self._client.request("POST", "/api/v1/western/progressions/quotidian/calendar", params=None, json=body, options=options))
|
|
1753
|
+
|
|
1754
|
+
def quaternary_calendar(
|
|
1755
|
+
self,
|
|
1756
|
+
body: schemas.ProgressionCalendarRequest,
|
|
1757
|
+
*,
|
|
1758
|
+
options: RequestOptions | None = None,
|
|
1759
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
1760
|
+
"""Get Quaternary Progressions Calendar
|
|
1761
|
+
|
|
1762
|
+
``POST /api/v1/western/progressions/quaternary/calendar``
|
|
1763
|
+
"""
|
|
1764
|
+
return cast("schemas.ProgressionCalendarResponse", self._client.request("POST", "/api/v1/western/progressions/quaternary/calendar", params=None, json=body, options=options))
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
class WesternDirectionsResource:
|
|
1768
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1769
|
+
self._client = client
|
|
1770
|
+
|
|
1771
|
+
def primary(
|
|
1772
|
+
self,
|
|
1773
|
+
body: schemas.PrimaryDirectionsRequest,
|
|
1774
|
+
*,
|
|
1775
|
+
options: RequestOptions | None = None,
|
|
1776
|
+
) -> schemas.PrimaryDirectionsResponse:
|
|
1777
|
+
"""Get Primary Directions
|
|
1778
|
+
|
|
1779
|
+
Compute primary directions for a natal chart over a date range.
|
|
1780
|
+
|
|
1781
|
+
``POST /api/v1/western/directions/primary``
|
|
1782
|
+
"""
|
|
1783
|
+
return cast("schemas.PrimaryDirectionsResponse", self._client.request("POST", "/api/v1/western/directions/primary", params=None, json=body, options=options))
|
|
1784
|
+
|
|
1785
|
+
def primary_exact_aspects(
|
|
1786
|
+
self,
|
|
1787
|
+
body: schemas.PrimaryDirectionsRequest,
|
|
1788
|
+
*,
|
|
1789
|
+
options: RequestOptions | None = None,
|
|
1790
|
+
) -> schemas.PrimaryDirectionsResponse:
|
|
1791
|
+
"""Get Primary Directions Exact Aspects
|
|
1792
|
+
|
|
1793
|
+
``POST /api/v1/western/directions/primary/exact-aspects``
|
|
1794
|
+
"""
|
|
1795
|
+
return cast("schemas.PrimaryDirectionsResponse", self._client.request("POST", "/api/v1/western/directions/primary/exact-aspects", params=None, json=body, options=options))
|
|
1796
|
+
|
|
1797
|
+
def primary_search(
|
|
1798
|
+
self,
|
|
1799
|
+
body: schemas.PrimaryDirectionsRequest,
|
|
1800
|
+
*,
|
|
1801
|
+
options: RequestOptions | None = None,
|
|
1802
|
+
) -> schemas.PrimaryDirectionsResponse:
|
|
1803
|
+
"""Search Primary Directions
|
|
1804
|
+
|
|
1805
|
+
``POST /api/v1/western/directions/primary/search``
|
|
1806
|
+
"""
|
|
1807
|
+
return cast("schemas.PrimaryDirectionsResponse", self._client.request("POST", "/api/v1/western/directions/primary/search", params=None, json=body, options=options))
|
|
1808
|
+
|
|
1809
|
+
def primary_calendar(
|
|
1810
|
+
self,
|
|
1811
|
+
body: schemas.PrimaryDirectionsRequest,
|
|
1812
|
+
*,
|
|
1813
|
+
options: RequestOptions | None = None,
|
|
1814
|
+
) -> schemas.PrimaryDirectionsCalendarResponse:
|
|
1815
|
+
"""Get Primary Directions Calendar
|
|
1816
|
+
|
|
1817
|
+
``POST /api/v1/western/directions/primary/calendar``
|
|
1818
|
+
"""
|
|
1819
|
+
return cast("schemas.PrimaryDirectionsCalendarResponse", self._client.request("POST", "/api/v1/western/directions/primary/calendar", params=None, json=body, options=options))
|
|
1820
|
+
|
|
1821
|
+
|
|
1822
|
+
class WesternChartSimilarityResource:
|
|
1823
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1824
|
+
self._client = client
|
|
1825
|
+
|
|
1826
|
+
def famous_people(
|
|
1827
|
+
self,
|
|
1828
|
+
body: schemas.FamousPeopleChartSimilarityRequest,
|
|
1829
|
+
*,
|
|
1830
|
+
options: RequestOptions | None = None,
|
|
1831
|
+
) -> schemas.ChartSimilarityResponse:
|
|
1832
|
+
"""Compare Famous People Chart Similarity
|
|
1833
|
+
|
|
1834
|
+
``POST /api/v2/western/chart-similarity/famous-people``
|
|
1835
|
+
"""
|
|
1836
|
+
return cast("schemas.ChartSimilarityResponse", self._client.request("POST", "/api/v2/western/chart-similarity/famous-people", params=None, json=body, options=options))
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
class WesternElectionalResource:
|
|
1840
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1841
|
+
self._client = client
|
|
1842
|
+
|
|
1843
|
+
def wedding_search(
|
|
1844
|
+
self,
|
|
1845
|
+
body: schemas.WeddingElectionSearchRequest,
|
|
1846
|
+
*,
|
|
1847
|
+
options: RequestOptions | None = None,
|
|
1848
|
+
) -> schemas.WeddingElectionSearchResponse:
|
|
1849
|
+
"""Search Wedding Elections
|
|
1850
|
+
|
|
1851
|
+
``POST /api/v2/western/electional/wedding/search``
|
|
1852
|
+
"""
|
|
1853
|
+
return cast("schemas.WeddingElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/wedding/search", params=None, json=body, options=options))
|
|
1854
|
+
|
|
1855
|
+
def making_contracts_search(
|
|
1856
|
+
self,
|
|
1857
|
+
body: schemas.MakingContractsElectionSearchRequest,
|
|
1858
|
+
*,
|
|
1859
|
+
options: RequestOptions | None = None,
|
|
1860
|
+
) -> schemas.MakingContractsElectionSearchResponse:
|
|
1861
|
+
"""Search Making Contracts Elections
|
|
1862
|
+
|
|
1863
|
+
``POST /api/v2/western/electional/making-contracts/search``
|
|
1864
|
+
"""
|
|
1865
|
+
return cast("schemas.MakingContractsElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/making-contracts/search", params=None, json=body, options=options))
|
|
1866
|
+
|
|
1867
|
+
def job_audition_search(
|
|
1868
|
+
self,
|
|
1869
|
+
body: schemas.JobAuditionElectionSearchRequest,
|
|
1870
|
+
*,
|
|
1871
|
+
options: RequestOptions | None = None,
|
|
1872
|
+
) -> schemas.JobAuditionElectionSearchResponse:
|
|
1873
|
+
"""Search Job Audition Elections
|
|
1874
|
+
|
|
1875
|
+
``POST /api/v2/western/electional/job-audition/search``
|
|
1876
|
+
"""
|
|
1877
|
+
return cast("schemas.JobAuditionElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/job-audition/search", params=None, json=body, options=options))
|
|
1878
|
+
|
|
1879
|
+
def purchase_property_search(
|
|
1880
|
+
self,
|
|
1881
|
+
body: schemas.PurchasePropertyElectionSearchRequest,
|
|
1882
|
+
*,
|
|
1883
|
+
options: RequestOptions | None = None,
|
|
1884
|
+
) -> schemas.PurchasePropertyElectionSearchResponse:
|
|
1885
|
+
"""Search Purchase Property Elections
|
|
1886
|
+
|
|
1887
|
+
``POST /api/v2/western/electional/purchase-property/search``
|
|
1888
|
+
"""
|
|
1889
|
+
return cast("schemas.PurchasePropertyElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/purchase-property/search", params=None, json=body, options=options))
|
|
1890
|
+
|
|
1891
|
+
def purchase_car_search(
|
|
1892
|
+
self,
|
|
1893
|
+
body: schemas.PurchaseCarElectionSearchRequest,
|
|
1894
|
+
*,
|
|
1895
|
+
options: RequestOptions | None = None,
|
|
1896
|
+
) -> schemas.PurchaseCarElectionSearchResponse:
|
|
1897
|
+
"""Search Purchase Car Elections
|
|
1898
|
+
|
|
1899
|
+
``POST /api/v2/western/electional/purchase-car/search``
|
|
1900
|
+
"""
|
|
1901
|
+
return cast("schemas.PurchaseCarElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/purchase-car/search", params=None, json=body, options=options))
|
|
1902
|
+
|
|
1903
|
+
def move_into_new_home_search(
|
|
1904
|
+
self,
|
|
1905
|
+
body: schemas.MoveIntoNewHomeElectionSearchRequest,
|
|
1906
|
+
*,
|
|
1907
|
+
options: RequestOptions | None = None,
|
|
1908
|
+
) -> schemas.MoveIntoNewHomeElectionSearchResponse:
|
|
1909
|
+
"""Search Move Into New Home Elections
|
|
1910
|
+
|
|
1911
|
+
``POST /api/v2/western/electional/move-into-new-home/search``
|
|
1912
|
+
"""
|
|
1913
|
+
return cast("schemas.MoveIntoNewHomeElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/move-into-new-home/search", params=None, json=body, options=options))
|
|
1914
|
+
|
|
1915
|
+
def starting_journey_search(
|
|
1916
|
+
self,
|
|
1917
|
+
body: schemas.StartingJourneyElectionSearchRequest,
|
|
1918
|
+
*,
|
|
1919
|
+
options: RequestOptions | None = None,
|
|
1920
|
+
) -> schemas.StartingJourneyElectionSearchResponse:
|
|
1921
|
+
"""Search Starting Journey Elections
|
|
1922
|
+
|
|
1923
|
+
``POST /api/v2/western/electional/starting-journey/search``
|
|
1924
|
+
"""
|
|
1925
|
+
return cast("schemas.StartingJourneyElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/starting-journey/search", params=None, json=body, options=options))
|
|
1926
|
+
|
|
1927
|
+
def legal_proceedings_search(
|
|
1928
|
+
self,
|
|
1929
|
+
body: schemas.LegalProceedingsElectionSearchRequest,
|
|
1930
|
+
*,
|
|
1931
|
+
options: RequestOptions | None = None,
|
|
1932
|
+
) -> schemas.LegalProceedingsElectionSearchResponse:
|
|
1933
|
+
"""Search Legal Proceedings Elections
|
|
1934
|
+
|
|
1935
|
+
``POST /api/v2/western/electional/legal-proceedings/search``
|
|
1936
|
+
"""
|
|
1937
|
+
return cast("schemas.LegalProceedingsElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/legal-proceedings/search", params=None, json=body, options=options))
|
|
1938
|
+
|
|
1939
|
+
def physical_examination_search(
|
|
1940
|
+
self,
|
|
1941
|
+
body: schemas.PhysicalExaminationElectionSearchRequest,
|
|
1942
|
+
*,
|
|
1943
|
+
options: RequestOptions | None = None,
|
|
1944
|
+
) -> schemas.PhysicalExaminationElectionSearchResponse:
|
|
1945
|
+
"""Search Physical Examination Elections
|
|
1946
|
+
|
|
1947
|
+
``POST /api/v2/western/electional/physical-examination/search``
|
|
1948
|
+
"""
|
|
1949
|
+
return cast("schemas.PhysicalExaminationElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/physical-examination/search", params=None, json=body, options=options))
|
|
1950
|
+
|
|
1951
|
+
def invest_money_search(
|
|
1952
|
+
self,
|
|
1953
|
+
body: schemas.InvestMoneyElectionSearchRequest,
|
|
1954
|
+
*,
|
|
1955
|
+
options: RequestOptions | None = None,
|
|
1956
|
+
) -> schemas.InvestMoneyElectionSearchResponse:
|
|
1957
|
+
"""Search Invest Money Elections
|
|
1958
|
+
|
|
1959
|
+
``POST /api/v2/western/electional/invest-money/search``
|
|
1960
|
+
"""
|
|
1961
|
+
return cast("schemas.InvestMoneyElectionSearchResponse", self._client.request("POST", "/api/v2/western/electional/invest-money/search", params=None, json=body, options=options))
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
class WesternResourceBase:
|
|
1965
|
+
def __init__(self, client: FreeAstro) -> None:
|
|
1966
|
+
self._client = client
|
|
1967
|
+
self.solar = WesternSolarResource(client)
|
|
1968
|
+
self.returns = WesternReturnsResource(client)
|
|
1969
|
+
self.astrocartography = WesternAstrocartographyResource(client)
|
|
1970
|
+
self.natal = WesternNatalResource(client)
|
|
1971
|
+
self.transits = WesternTransitsResource(client)
|
|
1972
|
+
self.profections = WesternProfectionsResource(client)
|
|
1973
|
+
self.progressions = WesternProgressionsResource(client)
|
|
1974
|
+
self.directions = WesternDirectionsResource(client)
|
|
1975
|
+
self.chart_similarity = WesternChartSimilarityResource(client)
|
|
1976
|
+
self.electional = WesternElectionalResource(client)
|
|
1977
|
+
|
|
1978
|
+
def synastry_v1(
|
|
1979
|
+
self,
|
|
1980
|
+
body: schemas.SynastryRequest,
|
|
1981
|
+
*,
|
|
1982
|
+
aspects: bool | None = None,
|
|
1983
|
+
overlays: bool | None = None,
|
|
1984
|
+
scores: bool | None = None,
|
|
1985
|
+
archetypes: bool | None = None,
|
|
1986
|
+
text: bool | None = None,
|
|
1987
|
+
display_point_labels: bool | None = None,
|
|
1988
|
+
display_aspect_labels: bool | None = None,
|
|
1989
|
+
strength_labels: bool | None = None,
|
|
1990
|
+
ranges: bool | None = None,
|
|
1991
|
+
scoring_bucket_definitions: bool | None = None,
|
|
1992
|
+
options: RequestOptions | None = None,
|
|
1993
|
+
) -> schemas.SynastryResponse:
|
|
1994
|
+
"""Get Synastry
|
|
1995
|
+
|
|
1996
|
+
Detailed Western Synastry analysis.
|
|
1997
|
+
Deterministic, data-rich output including aspects, overlays, scoring, and archetypes.
|
|
1998
|
+
Use query parameters to filter the response size.
|
|
1999
|
+
|
|
2000
|
+
``POST /api/v1/western/synastry``
|
|
2001
|
+
"""
|
|
2002
|
+
return cast("schemas.SynastryResponse", self._client.request("POST", "/api/v1/western/synastry", params=_query({"aspects": aspects, "overlays": overlays, "scores": scores, "archetypes": archetypes, "text": text, "display_point_labels": display_point_labels, "display_aspect_labels": display_aspect_labels, "strength_labels": strength_labels, "ranges": ranges, "scoring_bucket_definitions": scoring_bucket_definitions}), json=body, options=options))
|
|
2003
|
+
|
|
2004
|
+
def synastry_simplified(
|
|
2005
|
+
self,
|
|
2006
|
+
body: schemas.SynastryRequest,
|
|
2007
|
+
*,
|
|
2008
|
+
options: RequestOptions | None = None,
|
|
2009
|
+
) -> schemas.SynastrySimplifiedResponse:
|
|
2010
|
+
"""Get Synastry Simplified
|
|
2011
|
+
|
|
2012
|
+
Simplified Synastry analysis.
|
|
2013
|
+
Returns highlights, top aspects, scores, and archetype without full aspect/overlay lists.
|
|
2014
|
+
|
|
2015
|
+
``POST /api/v1/western/synastry/simplified``
|
|
2016
|
+
"""
|
|
2017
|
+
return cast("schemas.SynastrySimplifiedResponse", self._client.request("POST", "/api/v1/western/synastry/simplified", params=None, json=body, options=options))
|
|
2018
|
+
|
|
2019
|
+
def synastry_summary(
|
|
2020
|
+
self,
|
|
2021
|
+
body: schemas.SynastryRequest,
|
|
2022
|
+
*,
|
|
2023
|
+
options: RequestOptions | None = None,
|
|
2024
|
+
) -> schemas.SynastrySummaryResponse:
|
|
2025
|
+
"""Get Synastry Summary
|
|
2026
|
+
|
|
2027
|
+
Simplified summary of the synastry chart for general audiences.
|
|
2028
|
+
|
|
2029
|
+
``POST /api/v1/western/synastry/summary``
|
|
2030
|
+
"""
|
|
2031
|
+
return cast("schemas.SynastrySummaryResponse", self._client.request("POST", "/api/v1/western/synastry/summary", params=None, json=body, options=options))
|
|
2032
|
+
|
|
2033
|
+
def synastrycards_v1(
|
|
2034
|
+
self,
|
|
2035
|
+
body: schemas.SynastryRequest,
|
|
2036
|
+
*,
|
|
2037
|
+
relationship_context: Literal["romantic", "friendship"] | None = None,
|
|
2038
|
+
include_minor_cards: bool | None = None,
|
|
2039
|
+
options: RequestOptions | None = None,
|
|
2040
|
+
) -> schemas.SynastryCardsResponse:
|
|
2041
|
+
"""Get Synastry Cards
|
|
2042
|
+
|
|
2043
|
+
Card-oriented synastry response designed for mobile apps and compatibility features.
|
|
2044
|
+
- Implements a 5-step polarity scoring system (structure + planet-pair + strength)
|
|
2045
|
+
- Fetches rich interpretation blocks from Supabase based on relationship context
|
|
2046
|
+
- Minor aspect cards are excluded by default; opt in with include_minor_cards=true
|
|
2047
|
+
- Returns a summary (archetype, scores, top strengths / challenges + narrative)
|
|
2048
|
+
and up to 15 aspect cards, each with both supportive and challenging blocks.
|
|
2049
|
+
|
|
2050
|
+
``POST /api/v1/western/synastrycards``
|
|
2051
|
+
"""
|
|
2052
|
+
return cast("schemas.SynastryCardsResponse", self._client.request("POST", "/api/v1/western/synastrycards", params=_query({"relationship_context": relationship_context, "include_minor_cards": include_minor_cards}), json=body, options=options))
|
|
2053
|
+
|
|
2054
|
+
def synastry_horoscope_v1(
|
|
2055
|
+
self,
|
|
2056
|
+
body: schemas.CouplesHoroscopeRequest,
|
|
2057
|
+
*,
|
|
2058
|
+
relationship_context: Literal["romantic", "friendship"] | None = None,
|
|
2059
|
+
include_timing: bool | None = None,
|
|
2060
|
+
options: RequestOptions | None = None,
|
|
2061
|
+
) -> schemas.CouplesHoroscopeResponse:
|
|
2062
|
+
"""Get Couples Horoscope
|
|
2063
|
+
|
|
2064
|
+
Daily Couples Horoscope V2.
|
|
2065
|
+
- Multi-dimensional scoring (Romance, Stability, Tension, etc.)
|
|
2066
|
+
- Dual-perspective transits (Composite & Synastry)
|
|
2067
|
+
- Deterministic narrative bands (Theme, Core, Shadow)
|
|
2068
|
+
- Integrated relational rituals
|
|
2069
|
+
|
|
2070
|
+
``POST /api/v1/western/synastry/horoscope``
|
|
2071
|
+
"""
|
|
2072
|
+
return cast("schemas.CouplesHoroscopeResponse", self._client.request("POST", "/api/v1/western/synastry/horoscope", params=_query({"relationship_context": relationship_context, "include_timing": include_timing}), json=body, options=options))
|
|
2073
|
+
|
|
2074
|
+
def chat(
|
|
2075
|
+
self,
|
|
2076
|
+
body: schemas.WesternChatRequest,
|
|
2077
|
+
*,
|
|
2078
|
+
options: RequestOptions | None = None,
|
|
2079
|
+
) -> schemas.WesternChatResponse:
|
|
2080
|
+
"""Hosted Western Astrology Chat (v2)
|
|
2081
|
+
|
|
2082
|
+
Generate a grounded Western astrology answer from the scoped Western MCP tools.
|
|
2083
|
+
|
|
2084
|
+
``POST /api/v2/western/chat``
|
|
2085
|
+
"""
|
|
2086
|
+
return cast("schemas.WesternChatResponse", self._client.request("POST", "/api/v2/western/chat", params=None, json=body, options=options))
|
|
2087
|
+
|
|
2088
|
+
def synastry(
|
|
2089
|
+
self,
|
|
2090
|
+
body: schemas.SynastryRequest,
|
|
2091
|
+
*,
|
|
2092
|
+
aspects: bool | None = None,
|
|
2093
|
+
overlays: bool | None = None,
|
|
2094
|
+
scores: bool | None = None,
|
|
2095
|
+
archetypes: bool | None = None,
|
|
2096
|
+
text: bool | None = None,
|
|
2097
|
+
display_point_labels: bool | None = None,
|
|
2098
|
+
display_aspect_labels: bool | None = None,
|
|
2099
|
+
strength_labels: bool | None = None,
|
|
2100
|
+
ranges: bool | None = None,
|
|
2101
|
+
scoring_bucket_definitions: bool | None = None,
|
|
2102
|
+
options: RequestOptions | None = None,
|
|
2103
|
+
) -> schemas.SynastryResponse:
|
|
2104
|
+
"""Get Synastry V2
|
|
2105
|
+
|
|
2106
|
+
``POST /api/v2/western/synastry``
|
|
2107
|
+
"""
|
|
2108
|
+
return cast("schemas.SynastryResponse", self._client.request("POST", "/api/v2/western/synastry", params=_query({"aspects": aspects, "overlays": overlays, "scores": scores, "archetypes": archetypes, "text": text, "display_point_labels": display_point_labels, "display_aspect_labels": display_aspect_labels, "strength_labels": strength_labels, "ranges": ranges, "scoring_bucket_definitions": scoring_bucket_definitions}), json=body, options=options))
|
|
2109
|
+
|
|
2110
|
+
def synastrycards(
|
|
2111
|
+
self,
|
|
2112
|
+
body: schemas.SynastryRequest,
|
|
2113
|
+
*,
|
|
2114
|
+
relationship_context: Literal["romantic", "friendship"] | None = None,
|
|
2115
|
+
include_minor_cards: bool | None = None,
|
|
2116
|
+
options: RequestOptions | None = None,
|
|
2117
|
+
) -> schemas.SynastryCardsResponse:
|
|
2118
|
+
"""Get Synastry Cards V2
|
|
2119
|
+
|
|
2120
|
+
``POST /api/v2/western/synastrycards``
|
|
2121
|
+
"""
|
|
2122
|
+
return cast("schemas.SynastryCardsResponse", self._client.request("POST", "/api/v2/western/synastrycards", params=_query({"relationship_context": relationship_context, "include_minor_cards": include_minor_cards}), json=body, options=options))
|
|
2123
|
+
|
|
2124
|
+
def synastry_horoscope(
|
|
2125
|
+
self,
|
|
2126
|
+
body: schemas.CouplesHoroscopeV2Request,
|
|
2127
|
+
*,
|
|
2128
|
+
include_timing: bool | None = None,
|
|
2129
|
+
options: RequestOptions | None = None,
|
|
2130
|
+
) -> schemas.CouplesHoroscopeV2Response:
|
|
2131
|
+
"""Get Couples Horoscope V2
|
|
2132
|
+
|
|
2133
|
+
``POST /api/v2/western/synastry/horoscope``
|
|
2134
|
+
"""
|
|
2135
|
+
return cast("schemas.CouplesHoroscopeV2Response", self._client.request("POST", "/api/v2/western/synastry/horoscope", params=_query({"include_timing": include_timing}), json=body, options=options))
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
class AsyncAiResource:
|
|
2139
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2140
|
+
self._client = client
|
|
2141
|
+
|
|
2142
|
+
async def generate(
|
|
2143
|
+
self,
|
|
2144
|
+
body: schemas.AtomicReportRequest,
|
|
2145
|
+
*,
|
|
2146
|
+
options: RequestOptions | None = None,
|
|
2147
|
+
) -> Any:
|
|
2148
|
+
"""Generate Atomic Report
|
|
2149
|
+
|
|
2150
|
+
Generates a full astrological report using the Atomic Interpretation System.
|
|
2151
|
+
|
|
2152
|
+
``POST /api/v1/ai/generate``
|
|
2153
|
+
"""
|
|
2154
|
+
return await self._client.request("POST", "/api/v1/ai/generate", params=None, json=body, options=options)
|
|
2155
|
+
|
|
2156
|
+
|
|
2157
|
+
class AsyncChineseResource:
|
|
2158
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2159
|
+
self._client = client
|
|
2160
|
+
|
|
2161
|
+
async def bazi(
|
|
2162
|
+
self,
|
|
2163
|
+
body: schemas.BaziRequest,
|
|
2164
|
+
*,
|
|
2165
|
+
options: RequestOptions | None = None,
|
|
2166
|
+
) -> Any:
|
|
2167
|
+
"""Calculate BaZi (Four Pillars)
|
|
2168
|
+
|
|
2169
|
+
Calculate Chinese BaZi (Four Pillars of Destiny) chart.
|
|
2170
|
+
Includes:
|
|
2171
|
+
- 4 Pillars (GanZhi) for Year, Month, Day, Hour
|
|
2172
|
+
- 5 Element Analysis (Wu Xing)
|
|
2173
|
+
- Solar Term indicators
|
|
2174
|
+
|
|
2175
|
+
``POST /api/v1/chinese/bazi``
|
|
2176
|
+
"""
|
|
2177
|
+
return await self._client.request("POST", "/api/v1/chinese/bazi", params=None, json=body, options=options)
|
|
2178
|
+
|
|
2179
|
+
async def bazi_flow(
|
|
2180
|
+
self,
|
|
2181
|
+
body: schemas.BaziFlowRequest,
|
|
2182
|
+
*,
|
|
2183
|
+
options: RequestOptions | None = None,
|
|
2184
|
+
) -> Any:
|
|
2185
|
+
"""Calculate BaZi Flow (Annual/Monthly Pillars)
|
|
2186
|
+
|
|
2187
|
+
Calculate annual and monthly flow pillars for a specific target year.
|
|
2188
|
+
Used for professional timing and predictive analysis.
|
|
2189
|
+
|
|
2190
|
+
``POST /api/v1/chinese/bazi/flow``
|
|
2191
|
+
"""
|
|
2192
|
+
return await self._client.request("POST", "/api/v1/chinese/bazi/flow", params=None, json=body, options=options)
|
|
2193
|
+
|
|
2194
|
+
async def bazi_dictionary(
|
|
2195
|
+
self,
|
|
2196
|
+
*,
|
|
2197
|
+
lang: str | None = None,
|
|
2198
|
+
options: RequestOptions | None = None,
|
|
2199
|
+
) -> Any:
|
|
2200
|
+
"""Get Bazi Interaction & Star Dictionary
|
|
2201
|
+
|
|
2202
|
+
Get the full mapping of Integer IDs to Interaction/Star definitions.
|
|
2203
|
+
Clients should cache this response permanently (versioned by server version).
|
|
2204
|
+
|
|
2205
|
+
``GET /api/v1/chinese/bazi/dictionary``
|
|
2206
|
+
"""
|
|
2207
|
+
return await self._client.request("GET", "/api/v1/chinese/bazi/dictionary", params=_query({"lang": lang}), json=None, options=options)
|
|
2208
|
+
|
|
2209
|
+
async def today(
|
|
2210
|
+
self,
|
|
2211
|
+
*,
|
|
2212
|
+
include_pinyin: bool | None = None,
|
|
2213
|
+
lang: str | None = None,
|
|
2214
|
+
options: RequestOptions | None = None,
|
|
2215
|
+
) -> Any:
|
|
2216
|
+
"""Get Current BaZi Pillars (Time Now)
|
|
2217
|
+
|
|
2218
|
+
Get current year, month, day, and hour pillars for the present moment.
|
|
2219
|
+
Useful for "Today's energy" or quick transit checks.
|
|
2220
|
+
|
|
2221
|
+
``GET /api/v1/chinese/today``
|
|
2222
|
+
"""
|
|
2223
|
+
return await self._client.request("GET", "/api/v1/chinese/today", params=_query({"include_pinyin": include_pinyin, "lang": lang}), json=None, options=options)
|
|
2224
|
+
|
|
2225
|
+
async def calendar(
|
|
2226
|
+
self,
|
|
2227
|
+
date: str,
|
|
2228
|
+
*,
|
|
2229
|
+
lang: str | None = None,
|
|
2230
|
+
options: RequestOptions | None = None,
|
|
2231
|
+
) -> schemas.ChineseCalendarResponse:
|
|
2232
|
+
"""Convert Gregorian Date to Chinese Calendar
|
|
2233
|
+
|
|
2234
|
+
Convert a Gregorian date to Chinese lunisolar calendar data.
|
|
2235
|
+
Returns lunar date names, lunar-new-year and Li Chun year profiles,
|
|
2236
|
+
sexagenary month/day cycles, solar terms, and festivals.
|
|
2237
|
+
|
|
2238
|
+
``GET /api/v1/chinese/calendar/{date}``
|
|
2239
|
+
"""
|
|
2240
|
+
return cast("schemas.ChineseCalendarResponse", await self._client.request("GET", f"/api/v1/chinese/calendar/{_path(date)}", params=_query({"lang": lang}), json=None, options=options))
|
|
2241
|
+
|
|
2242
|
+
async def bazi_time_correction(
|
|
2243
|
+
self,
|
|
2244
|
+
body: schemas.BaziTimeCorrectionRequest,
|
|
2245
|
+
*,
|
|
2246
|
+
options: RequestOptions | None = None,
|
|
2247
|
+
) -> Any:
|
|
2248
|
+
"""Calculate True Solar Time Corrections
|
|
2249
|
+
|
|
2250
|
+
Get detailed breakdown of True Solar Time corrections.
|
|
2251
|
+
Returns Civil, LMT, and True Solar (Relative & Absolute).
|
|
2252
|
+
|
|
2253
|
+
``POST /api/v1/chinese/bazi/time-correction``
|
|
2254
|
+
"""
|
|
2255
|
+
return await self._client.request("POST", "/api/v1/chinese/bazi/time-correction", params=None, json=body, options=options)
|
|
2256
|
+
|
|
2257
|
+
async def bazi_synastry(
|
|
2258
|
+
self,
|
|
2259
|
+
body: schemas.BaziSynastryRequest,
|
|
2260
|
+
*,
|
|
2261
|
+
options: RequestOptions | None = None,
|
|
2262
|
+
) -> Any:
|
|
2263
|
+
"""Calculate Bazi Compatibility (Synastry)
|
|
2264
|
+
|
|
2265
|
+
Compare two charts for compatibility.
|
|
2266
|
+
|
|
2267
|
+
``POST /api/v1/chinese/bazi/synastry``
|
|
2268
|
+
"""
|
|
2269
|
+
return await self._client.request("POST", "/api/v1/chinese/bazi/synastry", params=None, json=body, options=options)
|
|
2270
|
+
|
|
2271
|
+
async def bazi_lifespan(
|
|
2272
|
+
self,
|
|
2273
|
+
body: schemas.BaziLifespanRequest,
|
|
2274
|
+
*,
|
|
2275
|
+
options: RequestOptions | None = None,
|
|
2276
|
+
) -> Any:
|
|
2277
|
+
"""Calculate Neijing Life Curve (Jing/Qi/Shen)
|
|
2278
|
+
|
|
2279
|
+
Experimental: Calculate energy trajectory (Jing, Qi, Shen) across 0-120y lifespan.
|
|
2280
|
+
Based on Neijing 7/8 year cycles + DaYun/Annual modifier simulation.
|
|
2281
|
+
|
|
2282
|
+
``POST /api/v1/chinese/bazi/lifespan``
|
|
2283
|
+
"""
|
|
2284
|
+
return await self._client.request("POST", "/api/v1/chinese/bazi/lifespan", params=None, json=body, options=options)
|
|
2285
|
+
|
|
2286
|
+
async def bazi_health(
|
|
2287
|
+
self,
|
|
2288
|
+
body: schemas.BaziHealthRequest,
|
|
2289
|
+
*,
|
|
2290
|
+
options: RequestOptions | None = None,
|
|
2291
|
+
) -> Any:
|
|
2292
|
+
"""Analyze BaZi Constitution & Health Tendencies
|
|
2293
|
+
|
|
2294
|
+
Analyze BaZi chart for constitution and health tendency themes.
|
|
2295
|
+
|
|
2296
|
+
``POST /api/v1/chinese/bazi/health``
|
|
2297
|
+
"""
|
|
2298
|
+
return await self._client.request("POST", "/api/v1/chinese/bazi/health", params=None, json=body, options=options)
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
class AsyncEphemerisResource:
|
|
2302
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2303
|
+
self._client = client
|
|
2304
|
+
|
|
2305
|
+
async def calculate(
|
|
2306
|
+
self,
|
|
2307
|
+
body: schemas.EphemerisRequest,
|
|
2308
|
+
*,
|
|
2309
|
+
options: RequestOptions | None = None,
|
|
2310
|
+
) -> Any:
|
|
2311
|
+
"""Calculate Ephemeris
|
|
2312
|
+
|
|
2313
|
+
``POST /api/v1/ephemeris/calculate``
|
|
2314
|
+
"""
|
|
2315
|
+
return await self._client.request("POST", "/api/v1/ephemeris/calculate", params=None, json=body, options=options)
|
|
2316
|
+
|
|
2317
|
+
async def get(
|
|
2318
|
+
self,
|
|
2319
|
+
*,
|
|
2320
|
+
start: str,
|
|
2321
|
+
end: str | None = None,
|
|
2322
|
+
step: str | None = None,
|
|
2323
|
+
zodiac_type: Literal["tropical", "sidereal"] | None = None,
|
|
2324
|
+
sidereal_ayanamsa: str | None = None,
|
|
2325
|
+
house_system: str | None = None,
|
|
2326
|
+
bodies: str | None = None,
|
|
2327
|
+
include_angles: bool | None = None,
|
|
2328
|
+
include_houses: bool | None = None,
|
|
2329
|
+
include_speed: bool | None = None,
|
|
2330
|
+
include_retrograde: bool | None = None,
|
|
2331
|
+
include_dignity: bool | None = None,
|
|
2332
|
+
include_sign_degree: bool | None = None,
|
|
2333
|
+
include_aspects: bool | None = None,
|
|
2334
|
+
include_minor_aspects: bool | None = None,
|
|
2335
|
+
include_moon_void_of_course: bool | None = None,
|
|
2336
|
+
include_fixed_stars: bool | None = None,
|
|
2337
|
+
fixed_stars: str | None = None,
|
|
2338
|
+
fixed_star_packs: str | None = None,
|
|
2339
|
+
lat: float | None = None,
|
|
2340
|
+
lng: float | None = None,
|
|
2341
|
+
tz_str: str | None = None,
|
|
2342
|
+
timezone: str | None = None,
|
|
2343
|
+
dst_policy: Literal["reject", "earlier", "later", "shift_forward"] | None = None,
|
|
2344
|
+
format: Literal["json", "table"] | None = None,
|
|
2345
|
+
response_mode: Literal["json", "table"] | None = None,
|
|
2346
|
+
table_style: Literal["rows", "columns", "grid"] | None = None,
|
|
2347
|
+
include_sidereal_time: bool | None = None,
|
|
2348
|
+
cell_format: Literal["parts", "text"] | None = None,
|
|
2349
|
+
include_chart_links: bool | None = None,
|
|
2350
|
+
sign_display: Literal["abbr", "full"] | None = None,
|
|
2351
|
+
show_motion_markers: bool | None = None,
|
|
2352
|
+
options: RequestOptions | None = None,
|
|
2353
|
+
) -> Any:
|
|
2354
|
+
"""Get Ephemeris
|
|
2355
|
+
|
|
2356
|
+
``GET /api/v1/ephemeris``
|
|
2357
|
+
"""
|
|
2358
|
+
return await self._client.request("GET", "/api/v1/ephemeris", params=_query({"start": start, "end": end, "step": step, "zodiac_type": zodiac_type, "sidereal_ayanamsa": sidereal_ayanamsa, "house_system": house_system, "bodies": bodies, "include_angles": include_angles, "include_houses": include_houses, "include_speed": include_speed, "include_retrograde": include_retrograde, "include_dignity": include_dignity, "include_sign_degree": include_sign_degree, "include_aspects": include_aspects, "include_minor_aspects": include_minor_aspects, "include_moon_void_of_course": include_moon_void_of_course, "include_fixed_stars": include_fixed_stars, "fixed_stars": fixed_stars, "fixed_star_packs": fixed_star_packs, "lat": lat, "lng": lng, "tz_str": tz_str, "timezone": timezone, "dst_policy": dst_policy, "format": format, "response_mode": response_mode, "table_style": table_style, "include_sidereal_time": include_sidereal_time, "cell_format": cell_format, "include_chart_links": include_chart_links, "sign_display": sign_display, "show_motion_markers": show_motion_markers}), json=None, options=options)
|
|
2359
|
+
|
|
2360
|
+
|
|
2361
|
+
class AsyncGeoResourceBase:
|
|
2362
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2363
|
+
self._client = client
|
|
2364
|
+
|
|
2365
|
+
async def search_v1(
|
|
2366
|
+
self,
|
|
2367
|
+
*,
|
|
2368
|
+
q: str | None = None,
|
|
2369
|
+
city: str | None = None,
|
|
2370
|
+
limit: int | None = None,
|
|
2371
|
+
country: str | None = None,
|
|
2372
|
+
options: RequestOptions | None = None,
|
|
2373
|
+
) -> schemas.CitySearchResponse:
|
|
2374
|
+
"""Search Cities (Free)
|
|
2375
|
+
|
|
2376
|
+
Search for cities by name prefix for autocomplete functionality.
|
|
2377
|
+
|
|
2378
|
+
``GET /api/v1/geo/search``
|
|
2379
|
+
|
|
2380
|
+
.. deprecated:: this operation is deprecated by the API.
|
|
2381
|
+
"""
|
|
2382
|
+
return cast("schemas.CitySearchResponse", await self._client.request("GET", "/api/v1/geo/search", params=_query({"q": q, "city": city, "limit": limit, "country": country}), json=None, options=options))
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
class AsyncHoroscopeDailyResource:
|
|
2386
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2387
|
+
self._client = client
|
|
2388
|
+
|
|
2389
|
+
async def sign_v1(
|
|
2390
|
+
self,
|
|
2391
|
+
*,
|
|
2392
|
+
sign: str,
|
|
2393
|
+
date: str | None = None,
|
|
2394
|
+
timezone: str | None = None,
|
|
2395
|
+
tz_str: str | None = None,
|
|
2396
|
+
lang: str | None = None,
|
|
2397
|
+
locale: str | None = None,
|
|
2398
|
+
type: str | None = None,
|
|
2399
|
+
style: str | None = None,
|
|
2400
|
+
variant: str | None = None,
|
|
2401
|
+
options: RequestOptions | None = None,
|
|
2402
|
+
) -> dict[str, Any]:
|
|
2403
|
+
"""Get Sign Horoscope
|
|
2404
|
+
|
|
2405
|
+
Get generic daily horoscope for a specific sign.
|
|
2406
|
+
|
|
2407
|
+
``GET /api/v1/horoscope/daily/sign``
|
|
2408
|
+
"""
|
|
2409
|
+
return cast("dict[str, Any]", await self._client.request("GET", "/api/v1/horoscope/daily/sign", params=_query({"sign": sign, "date": date, "timezone": timezone, "tz_str": tz_str, "lang": lang, "locale": locale, "type": type, "style": style, "variant": variant}), json=None, options=options))
|
|
2410
|
+
|
|
2411
|
+
async def bulk(
|
|
2412
|
+
self,
|
|
2413
|
+
*,
|
|
2414
|
+
date: str | None = None,
|
|
2415
|
+
timezone: str | None = None,
|
|
2416
|
+
tz_str: str | None = None,
|
|
2417
|
+
locale: str | None = None,
|
|
2418
|
+
options: RequestOptions | None = None,
|
|
2419
|
+
) -> dict[str, Any]:
|
|
2420
|
+
"""Get Bulk Horoscope
|
|
2421
|
+
|
|
2422
|
+
Get daily horoscope for ALL signs. Optimized for caching/newsletters.
|
|
2423
|
+
|
|
2424
|
+
``GET /api/v1/horoscope/daily/bulk``
|
|
2425
|
+
"""
|
|
2426
|
+
return cast("dict[str, Any]", await self._client.request("GET", "/api/v1/horoscope/daily/bulk", params=_query({"date": date, "timezone": timezone, "tz_str": tz_str, "locale": locale}), json=None, options=options))
|
|
2427
|
+
|
|
2428
|
+
async def personal_v1(
|
|
2429
|
+
self,
|
|
2430
|
+
body: schemas.PersonalHoroscopeRequestV1,
|
|
2431
|
+
*,
|
|
2432
|
+
options: RequestOptions | None = None,
|
|
2433
|
+
) -> dict[str, Any]:
|
|
2434
|
+
"""Get Personal Horoscope
|
|
2435
|
+
|
|
2436
|
+
Get personalized daily horoscope using natal chart + transits.
|
|
2437
|
+
|
|
2438
|
+
``POST /api/v1/horoscope/daily/personal``
|
|
2439
|
+
"""
|
|
2440
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v1/horoscope/daily/personal", params=None, json=body, options=options))
|
|
2441
|
+
|
|
2442
|
+
async def sign_v2(
|
|
2443
|
+
self,
|
|
2444
|
+
*,
|
|
2445
|
+
sign: str,
|
|
2446
|
+
date: str | None = None,
|
|
2447
|
+
tz_str: str | None = None,
|
|
2448
|
+
lang: str | None = None,
|
|
2449
|
+
locale: str | None = None,
|
|
2450
|
+
options: RequestOptions | None = None,
|
|
2451
|
+
) -> dict[str, Any]:
|
|
2452
|
+
"""Get Sign Horoscope
|
|
2453
|
+
|
|
2454
|
+
``GET /api/v2/horoscope/daily/sign``
|
|
2455
|
+
"""
|
|
2456
|
+
return cast("dict[str, Any]", await self._client.request("GET", "/api/v2/horoscope/daily/sign", params=_query({"sign": sign, "date": date, "tz_str": tz_str, "lang": lang, "locale": locale}), json=None, options=options))
|
|
2457
|
+
|
|
2458
|
+
async def personal_v2(
|
|
2459
|
+
self,
|
|
2460
|
+
body: schemas.PersonalHoroscopeRequestV2,
|
|
2461
|
+
*,
|
|
2462
|
+
options: RequestOptions | None = None,
|
|
2463
|
+
) -> dict[str, Any]:
|
|
2464
|
+
"""Get Personal Horoscope
|
|
2465
|
+
|
|
2466
|
+
``POST /api/v2/horoscope/daily/personal``
|
|
2467
|
+
"""
|
|
2468
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v2/horoscope/daily/personal", params=None, json=body, options=options))
|
|
2469
|
+
|
|
2470
|
+
async def sign(
|
|
2471
|
+
self,
|
|
2472
|
+
*,
|
|
2473
|
+
sign: str,
|
|
2474
|
+
date: str | None = None,
|
|
2475
|
+
timezone: str | None = None,
|
|
2476
|
+
tz_str: str | None = None,
|
|
2477
|
+
lang: str | None = None,
|
|
2478
|
+
locale: str | None = None,
|
|
2479
|
+
type: str | None = None,
|
|
2480
|
+
style: str | None = None,
|
|
2481
|
+
variant: str | None = None,
|
|
2482
|
+
options: RequestOptions | None = None,
|
|
2483
|
+
) -> dict[str, Any]:
|
|
2484
|
+
"""Get Sign Horoscope
|
|
2485
|
+
|
|
2486
|
+
Compatibility endpoint for playground clients that selected the V3 engine
|
|
2487
|
+
while using the generic sign horoscope. V3 is personal-only today, so this
|
|
2488
|
+
returns the V2 sign engine shape under the V3 route instead of 404ing.
|
|
2489
|
+
|
|
2490
|
+
``GET /api/v3/horoscope/daily/sign``
|
|
2491
|
+
"""
|
|
2492
|
+
return cast("dict[str, Any]", await self._client.request("GET", "/api/v3/horoscope/daily/sign", params=_query({"sign": sign, "date": date, "timezone": timezone, "tz_str": tz_str, "lang": lang, "locale": locale, "type": type, "style": style, "variant": variant}), json=None, options=options))
|
|
2493
|
+
|
|
2494
|
+
async def personal(
|
|
2495
|
+
self,
|
|
2496
|
+
body: schemas.PersonalHoroscopeRequestV3,
|
|
2497
|
+
*,
|
|
2498
|
+
options: RequestOptions | None = None,
|
|
2499
|
+
) -> dict[str, Any]:
|
|
2500
|
+
"""Get Personal Horoscope
|
|
2501
|
+
|
|
2502
|
+
``POST /api/v3/horoscope/daily/personal``
|
|
2503
|
+
"""
|
|
2504
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v3/horoscope/daily/personal", params=None, json=body, options=options))
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
class AsyncHoroscopeWeeklyResource:
|
|
2508
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2509
|
+
self._client = client
|
|
2510
|
+
|
|
2511
|
+
async def personal(
|
|
2512
|
+
self,
|
|
2513
|
+
body: schemas.WeeklyPersonalHoroscopeRequest,
|
|
2514
|
+
*,
|
|
2515
|
+
options: RequestOptions | None = None,
|
|
2516
|
+
) -> dict[str, Any]:
|
|
2517
|
+
"""Get Weekly Personal Horoscope
|
|
2518
|
+
|
|
2519
|
+
``POST /api/v3/horoscope/weekly/personal``
|
|
2520
|
+
"""
|
|
2521
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v3/horoscope/weekly/personal", params=None, json=body, options=options))
|
|
2522
|
+
|
|
2523
|
+
|
|
2524
|
+
class AsyncHoroscopeResource:
|
|
2525
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2526
|
+
self._client = client
|
|
2527
|
+
self.daily = AsyncHoroscopeDailyResource(client)
|
|
2528
|
+
self.weekly = AsyncHoroscopeWeeklyResource(client)
|
|
2529
|
+
|
|
2530
|
+
|
|
2531
|
+
class AsyncMoonResourceBase:
|
|
2532
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2533
|
+
self._client = client
|
|
2534
|
+
|
|
2535
|
+
|
|
2536
|
+
class AsyncNatalExperimentalResource:
|
|
2537
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2538
|
+
self._client = client
|
|
2539
|
+
|
|
2540
|
+
async def transits(
|
|
2541
|
+
self,
|
|
2542
|
+
body: schemas.ExperimentalTransitChartRequest,
|
|
2543
|
+
*,
|
|
2544
|
+
options: RequestOptions | None = None,
|
|
2545
|
+
) -> Any:
|
|
2546
|
+
"""Experimental Transits Chart
|
|
2547
|
+
|
|
2548
|
+
Generate a bi-wheel chart with natal planets inside and transits outside.
|
|
2549
|
+
|
|
2550
|
+
``POST /api/v1/natal/experimental/transits``
|
|
2551
|
+
|
|
2552
|
+
.. deprecated:: this operation is deprecated by the API.
|
|
2553
|
+
"""
|
|
2554
|
+
return await self._client.request("POST", "/api/v1/natal/experimental/transits", params=None, json=body, options=options)
|
|
2555
|
+
|
|
2556
|
+
async def solar_return(
|
|
2557
|
+
self,
|
|
2558
|
+
body: schemas.ExperimentalSolarReturnChartRequest,
|
|
2559
|
+
*,
|
|
2560
|
+
options: RequestOptions | None = None,
|
|
2561
|
+
) -> Any:
|
|
2562
|
+
"""Experimental Solar Return Chart
|
|
2563
|
+
|
|
2564
|
+
Generate a bi-wheel or standalone chart for the exact solar return in a target year.
|
|
2565
|
+
|
|
2566
|
+
``POST /api/v1/natal/experimental/solar-return``
|
|
2567
|
+
|
|
2568
|
+
.. deprecated:: this operation is deprecated by the API.
|
|
2569
|
+
"""
|
|
2570
|
+
return await self._client.request("POST", "/api/v1/natal/experimental/solar-return", params=None, json=body, options=options)
|
|
2571
|
+
|
|
2572
|
+
|
|
2573
|
+
class AsyncNatalResource:
|
|
2574
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2575
|
+
self._client = client
|
|
2576
|
+
self.experimental = AsyncNatalExperimentalResource(client)
|
|
2577
|
+
|
|
2578
|
+
async def simple(
|
|
2579
|
+
self,
|
|
2580
|
+
body: schemas.SimpleNatalRequest,
|
|
2581
|
+
*,
|
|
2582
|
+
options: RequestOptions | None = None,
|
|
2583
|
+
) -> Any:
|
|
2584
|
+
"""Calculate Simple Natal
|
|
2585
|
+
|
|
2586
|
+
A simplified natal endpoint for developer-facing apps.
|
|
2587
|
+
Returns a compact response with curated planets, houses, and useful summary fields.
|
|
2588
|
+
|
|
2589
|
+
``POST /natal``
|
|
2590
|
+
"""
|
|
2591
|
+
return await self._client.request("POST", "/natal", params=None, json=body, options=options)
|
|
2592
|
+
|
|
2593
|
+
async def calculate(
|
|
2594
|
+
self,
|
|
2595
|
+
body: schemas.NatalChartRequest,
|
|
2596
|
+
*,
|
|
2597
|
+
include_minor: bool | None = None,
|
|
2598
|
+
include_stelliums: bool | None = None,
|
|
2599
|
+
options: RequestOptions | None = None,
|
|
2600
|
+
) -> Any:
|
|
2601
|
+
"""Calculate Natal
|
|
2602
|
+
|
|
2603
|
+
Calculate natal chart with planetary positions, houses, and aspects.
|
|
2604
|
+
|
|
2605
|
+
``POST /api/v1/natal/calculate``
|
|
2606
|
+
"""
|
|
2607
|
+
return await self._client.request("POST", "/api/v1/natal/calculate", params=_query({"include_minor": include_minor, "include_stelliums": include_stelliums}), json=body, options=options)
|
|
2608
|
+
|
|
2609
|
+
async def report_credits(
|
|
2610
|
+
self,
|
|
2611
|
+
*,
|
|
2612
|
+
options: RequestOptions | None = None,
|
|
2613
|
+
) -> Any:
|
|
2614
|
+
"""Get Report Credits For Api Key
|
|
2615
|
+
|
|
2616
|
+
``GET /api/v1/natal/report-credits``
|
|
2617
|
+
"""
|
|
2618
|
+
return await self._client.request("GET", "/api/v1/natal/report-credits", params=None, json=None, options=options)
|
|
2619
|
+
|
|
2620
|
+
async def report(
|
|
2621
|
+
self,
|
|
2622
|
+
job_id: str,
|
|
2623
|
+
*,
|
|
2624
|
+
format: Literal["json", "pdf"] | None = None,
|
|
2625
|
+
include_profile_branding_logo: bool | None = None,
|
|
2626
|
+
options: RequestOptions | None = None,
|
|
2627
|
+
) -> Any:
|
|
2628
|
+
"""Get Psychological Report
|
|
2629
|
+
|
|
2630
|
+
``GET /api/v1/natal/report/{job_id}``
|
|
2631
|
+
"""
|
|
2632
|
+
return await self._client.request("GET", f"/api/v1/natal/report/{_path(job_id)}", params=_query({"format": format, "include_profile_branding_logo": include_profile_branding_logo}), json=None, options=options)
|
|
2633
|
+
|
|
2634
|
+
async def chart(
|
|
2635
|
+
self,
|
|
2636
|
+
body: schemas.ExperimentalNatalChartRequest,
|
|
2637
|
+
*,
|
|
2638
|
+
options: RequestOptions | None = None,
|
|
2639
|
+
) -> Any:
|
|
2640
|
+
"""Experimental Natal Chart
|
|
2641
|
+
|
|
2642
|
+
Render a natal chart using the bundled natal library.
|
|
2643
|
+
|
|
2644
|
+
``POST /api/v1/natal/chart/``
|
|
2645
|
+
"""
|
|
2646
|
+
return await self._client.request("POST", "/api/v1/natal/chart/", params=None, json=body, options=options)
|
|
2647
|
+
|
|
2648
|
+
async def chart_transits(
|
|
2649
|
+
self,
|
|
2650
|
+
body: schemas.ExperimentalTransitChartRequest,
|
|
2651
|
+
*,
|
|
2652
|
+
options: RequestOptions | None = None,
|
|
2653
|
+
) -> Any:
|
|
2654
|
+
"""Experimental Transits Chart
|
|
2655
|
+
|
|
2656
|
+
Generate a bi-wheel chart with natal planets inside and transits outside.
|
|
2657
|
+
|
|
2658
|
+
``POST /api/v1/natal/chart/transits``
|
|
2659
|
+
"""
|
|
2660
|
+
return await self._client.request("POST", "/api/v1/natal/chart/transits", params=None, json=body, options=options)
|
|
2661
|
+
|
|
2662
|
+
async def chart_solar_return(
|
|
2663
|
+
self,
|
|
2664
|
+
body: schemas.ExperimentalSolarReturnChartRequest,
|
|
2665
|
+
*,
|
|
2666
|
+
options: RequestOptions | None = None,
|
|
2667
|
+
) -> Any:
|
|
2668
|
+
"""Experimental Solar Return Chart
|
|
2669
|
+
|
|
2670
|
+
Generate a bi-wheel or standalone chart for the exact solar return in a target year.
|
|
2671
|
+
|
|
2672
|
+
``POST /api/v1/natal/chart/solar-return``
|
|
2673
|
+
"""
|
|
2674
|
+
return await self._client.request("POST", "/api/v1/natal/chart/solar-return", params=None, json=body, options=options)
|
|
2675
|
+
|
|
2676
|
+
async def chart_secondary_progressions(
|
|
2677
|
+
self,
|
|
2678
|
+
body: schemas.ExperimentalSecondaryProgressionsChartRequest,
|
|
2679
|
+
*,
|
|
2680
|
+
options: RequestOptions | None = None,
|
|
2681
|
+
) -> Any:
|
|
2682
|
+
"""Experimental Secondary Progressions Chart
|
|
2683
|
+
|
|
2684
|
+
Generate a bi-wheel chart with natal planets inside and secondary progressed planets outside.
|
|
2685
|
+
|
|
2686
|
+
``POST /api/v1/natal/chart/secondary-progressions``
|
|
2687
|
+
"""
|
|
2688
|
+
return await self._client.request("POST", "/api/v1/natal/chart/secondary-progressions", params=None, json=body, options=options)
|
|
2689
|
+
|
|
2690
|
+
async def chart_progressions(
|
|
2691
|
+
self,
|
|
2692
|
+
body: schemas.ExperimentalSecondaryProgressionsChartRequest,
|
|
2693
|
+
*,
|
|
2694
|
+
options: RequestOptions | None = None,
|
|
2695
|
+
) -> Any:
|
|
2696
|
+
"""Experimental Secondary Progressions Chart
|
|
2697
|
+
|
|
2698
|
+
Generate a bi-wheel chart with natal planets inside and secondary progressed planets outside.
|
|
2699
|
+
|
|
2700
|
+
``POST /api/v1/natal/chart/progressions``
|
|
2701
|
+
"""
|
|
2702
|
+
return await self._client.request("POST", "/api/v1/natal/chart/progressions", params=None, json=body, options=options)
|
|
2703
|
+
|
|
2704
|
+
async def chart_composite(
|
|
2705
|
+
self,
|
|
2706
|
+
body: schemas.ExperimentalCompositeChartRequest,
|
|
2707
|
+
*,
|
|
2708
|
+
options: RequestOptions | None = None,
|
|
2709
|
+
) -> Any:
|
|
2710
|
+
"""Experimental Composite Chart
|
|
2711
|
+
|
|
2712
|
+
Midpoint composite single-wheel chart endpoint.
|
|
2713
|
+
Renders a standalone composite chart from two people, reusing the natal SVG renderer.
|
|
2714
|
+
|
|
2715
|
+
``POST /api/v1/natal/chart/composite``
|
|
2716
|
+
"""
|
|
2717
|
+
return await self._client.request("POST", "/api/v1/natal/chart/composite", params=None, json=body, options=options)
|
|
2718
|
+
|
|
2719
|
+
async def chart_synastry(
|
|
2720
|
+
self,
|
|
2721
|
+
body: schemas.ExperimentalSynastryChartRequest,
|
|
2722
|
+
*,
|
|
2723
|
+
options: RequestOptions | None = None,
|
|
2724
|
+
) -> Any:
|
|
2725
|
+
"""Experimental Synastry Chart
|
|
2726
|
+
|
|
2727
|
+
Synastry bi-wheel chart endpoint.
|
|
2728
|
+
Renders person A (outer) and person B (inner) with optional B house ring and inter-aspects.
|
|
2729
|
+
|
|
2730
|
+
``POST /api/v1/natal/chart/synastry``
|
|
2731
|
+
"""
|
|
2732
|
+
return await self._client.request("POST", "/api/v1/natal/chart/synastry", params=None, json=body, options=options)
|
|
2733
|
+
|
|
2734
|
+
|
|
2735
|
+
class AsyncNumerologyResource:
|
|
2736
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2737
|
+
self._client = client
|
|
2738
|
+
|
|
2739
|
+
async def methods(
|
|
2740
|
+
self,
|
|
2741
|
+
*,
|
|
2742
|
+
options: RequestOptions | None = None,
|
|
2743
|
+
) -> schemas.NumerologyMethodsResponse:
|
|
2744
|
+
"""List supported numerology methods and policies
|
|
2745
|
+
|
|
2746
|
+
``GET /api/v1/numerology/methods``
|
|
2747
|
+
"""
|
|
2748
|
+
return cast("schemas.NumerologyMethodsResponse", await self._client.request("GET", "/api/v1/numerology/methods", params=None, json=None, options=options))
|
|
2749
|
+
|
|
2750
|
+
async def alphabets(
|
|
2751
|
+
self,
|
|
2752
|
+
*,
|
|
2753
|
+
options: RequestOptions | None = None,
|
|
2754
|
+
) -> schemas.NumerologyAlphabetsResponse:
|
|
2755
|
+
"""List immutable numerology alphabet and Gematria tables
|
|
2756
|
+
|
|
2757
|
+
``GET /api/v1/numerology/alphabets``
|
|
2758
|
+
"""
|
|
2759
|
+
return cast("schemas.NumerologyAlphabetsResponse", await self._client.request("GET", "/api/v1/numerology/alphabets", params=None, json=None, options=options))
|
|
2760
|
+
|
|
2761
|
+
async def profile(
|
|
2762
|
+
self,
|
|
2763
|
+
body: schemas.NumerologyProfileRequest,
|
|
2764
|
+
*,
|
|
2765
|
+
options: RequestOptions | None = None,
|
|
2766
|
+
) -> schemas.NumerologyProfileResponse:
|
|
2767
|
+
"""Calculate a versioned numerology profile
|
|
2768
|
+
|
|
2769
|
+
Calculate without persisting subject names, dates, or derived results.
|
|
2770
|
+
|
|
2771
|
+
``POST /api/v1/numerology/profile``
|
|
2772
|
+
"""
|
|
2773
|
+
return cast("schemas.NumerologyProfileResponse", await self._client.request("POST", "/api/v1/numerology/profile", params=None, json=body, options=options))
|
|
2774
|
+
|
|
2775
|
+
|
|
2776
|
+
class AsyncSkyEventsResourceBase:
|
|
2777
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2778
|
+
self._client = client
|
|
2779
|
+
|
|
2780
|
+
|
|
2781
|
+
class AsyncSpaceResource:
|
|
2782
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2783
|
+
self._client = client
|
|
2784
|
+
|
|
2785
|
+
async def chart(
|
|
2786
|
+
self,
|
|
2787
|
+
body: schemas.SpaceChartRequest,
|
|
2788
|
+
*,
|
|
2789
|
+
options: RequestOptions | None = None,
|
|
2790
|
+
) -> Any:
|
|
2791
|
+
"""Space Chart
|
|
2792
|
+
|
|
2793
|
+
``POST /api/v1/space/chart``
|
|
2794
|
+
"""
|
|
2795
|
+
return await self._client.request("POST", "/api/v1/space/chart", params=None, json=body, options=options)
|
|
2796
|
+
|
|
2797
|
+
async def chart_svg(
|
|
2798
|
+
self,
|
|
2799
|
+
body: schemas.SpaceChartSvgRequest,
|
|
2800
|
+
*,
|
|
2801
|
+
options: RequestOptions | None = None,
|
|
2802
|
+
) -> Any:
|
|
2803
|
+
"""Space Chart Svg
|
|
2804
|
+
|
|
2805
|
+
The chart wheel, drawn by the natal chart renderer with the same themes and options.
|
|
2806
|
+
|
|
2807
|
+
``POST /api/v1/space/chart/svg``
|
|
2808
|
+
"""
|
|
2809
|
+
return await self._client.request("POST", "/api/v1/space/chart/svg", params=None, json=body, options=options)
|
|
2810
|
+
|
|
2811
|
+
|
|
2812
|
+
class AsyncTransitsResource:
|
|
2813
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2814
|
+
self._client = client
|
|
2815
|
+
|
|
2816
|
+
async def calculate(
|
|
2817
|
+
self,
|
|
2818
|
+
body: schemas.TransitRequest,
|
|
2819
|
+
*,
|
|
2820
|
+
include_minor: bool | None = None,
|
|
2821
|
+
options: RequestOptions | None = None,
|
|
2822
|
+
) -> Any:
|
|
2823
|
+
"""Calculate Transits
|
|
2824
|
+
|
|
2825
|
+
Calculate planetary transits relative to natal chart.
|
|
2826
|
+
|
|
2827
|
+
``POST /api/v1/transits/calculate``
|
|
2828
|
+
"""
|
|
2829
|
+
return await self._client.request("POST", "/api/v1/transits/calculate", params=_query({"include_minor": include_minor}), json=body, options=options)
|
|
2830
|
+
|
|
2831
|
+
|
|
2832
|
+
class AsyncVedicTransitsResource:
|
|
2833
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2834
|
+
self._client = client
|
|
2835
|
+
|
|
2836
|
+
async def insights(
|
|
2837
|
+
self,
|
|
2838
|
+
body: schemas.VedicTransitInsightsRequest,
|
|
2839
|
+
*,
|
|
2840
|
+
options: RequestOptions | None = None,
|
|
2841
|
+
) -> schemas.VedicTransitInsightsResponse:
|
|
2842
|
+
"""Get Transit Insights
|
|
2843
|
+
|
|
2844
|
+
Get Vedic gochar snapshot facts comparing a transit date against the natal chart.
|
|
2845
|
+
|
|
2846
|
+
``POST /api/v1/vedic/transits/insights``
|
|
2847
|
+
"""
|
|
2848
|
+
return cast("schemas.VedicTransitInsightsResponse", await self._client.request("POST", "/api/v1/vedic/transits/insights", params=None, json=body, options=options))
|
|
2849
|
+
|
|
2850
|
+
|
|
2851
|
+
class AsyncVedicGocharResource:
|
|
2852
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2853
|
+
self._client = client
|
|
2854
|
+
|
|
2855
|
+
async def timeline_v1(
|
|
2856
|
+
self,
|
|
2857
|
+
body: schemas.VedicGocharTimelineRequest,
|
|
2858
|
+
*,
|
|
2859
|
+
options: RequestOptions | None = None,
|
|
2860
|
+
) -> schemas.VedicGocharTimelineResponse:
|
|
2861
|
+
"""Get Gochar Timeline
|
|
2862
|
+
|
|
2863
|
+
Get compact Vedic gochar timeline windows over a bounded date range.
|
|
2864
|
+
|
|
2865
|
+
``POST /api/v1/vedic/gochar/timeline``
|
|
2866
|
+
"""
|
|
2867
|
+
return cast("schemas.VedicGocharTimelineResponse", await self._client.request("POST", "/api/v1/vedic/gochar/timeline", params=None, json=body, options=options))
|
|
2868
|
+
|
|
2869
|
+
async def timeline_insights_v1(
|
|
2870
|
+
self,
|
|
2871
|
+
body: schemas.VedicGocharTimelineRequest,
|
|
2872
|
+
*,
|
|
2873
|
+
options: RequestOptions | None = None,
|
|
2874
|
+
) -> schemas.VedicGocharTimelineInsightsResponse:
|
|
2875
|
+
"""Get Gochar Timeline Insights
|
|
2876
|
+
|
|
2877
|
+
Get ranked Vedic gochar timeline insights derived from compact timeline windows.
|
|
2878
|
+
|
|
2879
|
+
``POST /api/v1/vedic/gochar/timeline/insights``
|
|
2880
|
+
"""
|
|
2881
|
+
return cast("schemas.VedicGocharTimelineInsightsResponse", await self._client.request("POST", "/api/v1/vedic/gochar/timeline/insights", params=None, json=body, options=options))
|
|
2882
|
+
|
|
2883
|
+
async def timeline(
|
|
2884
|
+
self,
|
|
2885
|
+
body: schemas.GocharTimelineRequest,
|
|
2886
|
+
*,
|
|
2887
|
+
options: RequestOptions | None = None,
|
|
2888
|
+
) -> schemas.GocharTimelineV2Response:
|
|
2889
|
+
"""Get Vedic Gochar Timeline (v2)
|
|
2890
|
+
|
|
2891
|
+
Return compact V2 Vedic gochar windows over a bounded date range.
|
|
2892
|
+
|
|
2893
|
+
``POST /api/v2/vedic/gochar/timeline``
|
|
2894
|
+
"""
|
|
2895
|
+
return cast("schemas.GocharTimelineV2Response", await self._client.request("POST", "/api/v2/vedic/gochar/timeline", params=None, json=body, options=options))
|
|
2896
|
+
|
|
2897
|
+
async def timeline_insights(
|
|
2898
|
+
self,
|
|
2899
|
+
body: schemas.GocharTimelineRequest,
|
|
2900
|
+
*,
|
|
2901
|
+
options: RequestOptions | None = None,
|
|
2902
|
+
) -> schemas.VedicGocharTimelineInsightsV2Response:
|
|
2903
|
+
"""Get Vedic Gochar Timeline Insights (v2)
|
|
2904
|
+
|
|
2905
|
+
Return ranked V2 Vedic gochar insight facts derived from the calibrated V2 timeline.
|
|
2906
|
+
|
|
2907
|
+
``POST /api/v2/vedic/gochar/timeline/insights``
|
|
2908
|
+
"""
|
|
2909
|
+
return cast("schemas.VedicGocharTimelineInsightsV2Response", await self._client.request("POST", "/api/v2/vedic/gochar/timeline/insights", params=None, json=body, options=options))
|
|
2910
|
+
|
|
2911
|
+
|
|
2912
|
+
class AsyncVedicVisualResource:
|
|
2913
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2914
|
+
self._client = client
|
|
2915
|
+
|
|
2916
|
+
async def chart(
|
|
2917
|
+
self,
|
|
2918
|
+
body: schemas.VedicVisualChartRequest,
|
|
2919
|
+
*,
|
|
2920
|
+
options: RequestOptions | None = None,
|
|
2921
|
+
) -> str:
|
|
2922
|
+
"""Render Vedic Visual Chart (v2)
|
|
2923
|
+
|
|
2924
|
+
Render requested V2 divisional charts as a raw SVG or PNG image.
|
|
2925
|
+
|
|
2926
|
+
``POST /api/v2/vedic/visual/chart``
|
|
2927
|
+
|
|
2928
|
+
Returns the image body as text; use ``request_raw`` for binary formats such as PNG.
|
|
2929
|
+
"""
|
|
2930
|
+
return cast("str", await self._client.request("POST", "/api/v2/vedic/visual/chart", params=None, json=body, options=options))
|
|
2931
|
+
|
|
2932
|
+
|
|
2933
|
+
class AsyncVedicHoroscopeResource:
|
|
2934
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2935
|
+
self._client = client
|
|
2936
|
+
|
|
2937
|
+
async def daily_sign(
|
|
2938
|
+
self,
|
|
2939
|
+
*,
|
|
2940
|
+
sign: Literal["aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpio", "sagittarius", "capricorn", "aquarius", "pisces"],
|
|
2941
|
+
target_date: str | None = None,
|
|
2942
|
+
tz_str: str | None = None,
|
|
2943
|
+
ayanamsha: Literal["lahiri", "raman", "kp", "yukteshwar", "fagan_bradley", "true_pushya", "pushya"] | None = None,
|
|
2944
|
+
node_type: Literal["mean", "true"] | None = None,
|
|
2945
|
+
include_interpretation: bool | None = None,
|
|
2946
|
+
lang: Literal["en", "hi"] | None = None,
|
|
2947
|
+
language: Literal["en", "hi"] | None = None,
|
|
2948
|
+
options: RequestOptions | None = None,
|
|
2949
|
+
) -> schemas.DailyRashifalSignResponse:
|
|
2950
|
+
"""Get General Daily Vedic Rashifal for One Moon Sign (v2)
|
|
2951
|
+
|
|
2952
|
+
General Moon-sign forecast with calculated transits and optional English or Hindi readings. No birth details required.
|
|
2953
|
+
|
|
2954
|
+
``GET /api/v2/vedic/horoscope/daily/sign``
|
|
2955
|
+
"""
|
|
2956
|
+
return cast("schemas.DailyRashifalSignResponse", await self._client.request("GET", "/api/v2/vedic/horoscope/daily/sign", params=_query({"sign": sign, "target_date": target_date, "tz_str": tz_str, "ayanamsha": ayanamsha, "node_type": node_type, "include_interpretation": include_interpretation, "lang": lang, "language": language}), json=None, options=options))
|
|
2957
|
+
|
|
2958
|
+
async def daily_bulk(
|
|
2959
|
+
self,
|
|
2960
|
+
*,
|
|
2961
|
+
target_date: str | None = None,
|
|
2962
|
+
tz_str: str | None = None,
|
|
2963
|
+
ayanamsha: Literal["lahiri", "raman", "kp", "yukteshwar", "fagan_bradley", "true_pushya", "pushya"] | None = None,
|
|
2964
|
+
node_type: Literal["mean", "true"] | None = None,
|
|
2965
|
+
include_interpretation: bool | None = None,
|
|
2966
|
+
lang: Literal["en", "hi"] | None = None,
|
|
2967
|
+
language: Literal["en", "hi"] | None = None,
|
|
2968
|
+
options: RequestOptions | None = None,
|
|
2969
|
+
) -> schemas.DailyRashifalBulkResponse:
|
|
2970
|
+
"""Get General Daily Vedic Rashifal for All 12 Moon Signs (v2)
|
|
2971
|
+
|
|
2972
|
+
Return all 12 rashis from one shared noon sky snapshot, keyed by lowercase English sign names.
|
|
2973
|
+
|
|
2974
|
+
``GET /api/v2/vedic/horoscope/daily/bulk``
|
|
2975
|
+
"""
|
|
2976
|
+
return cast("schemas.DailyRashifalBulkResponse", await self._client.request("GET", "/api/v2/vedic/horoscope/daily/bulk", params=_query({"target_date": target_date, "tz_str": tz_str, "ayanamsha": ayanamsha, "node_type": node_type, "include_interpretation": include_interpretation, "lang": lang, "language": language}), json=None, options=options))
|
|
2977
|
+
|
|
2978
|
+
async def daily_personal(
|
|
2979
|
+
self,
|
|
2980
|
+
body: schemas.DailyVedicHoroscopeRequest,
|
|
2981
|
+
*,
|
|
2982
|
+
options: RequestOptions | None = None,
|
|
2983
|
+
) -> schemas.DailyVedicHoroscopeV2Response:
|
|
2984
|
+
"""Get Daily Vedic Horoscope (v2)
|
|
2985
|
+
|
|
2986
|
+
Return a premium deterministic daily Vedic horoscope composed from V2
|
|
2987
|
+
chart context, one-day gochar insights, active Vimshottari dasha, and Panchang.
|
|
2988
|
+
|
|
2989
|
+
``POST /api/v2/vedic/horoscope/daily/personal``
|
|
2990
|
+
"""
|
|
2991
|
+
return cast("schemas.DailyVedicHoroscopeV2Response", await self._client.request("POST", "/api/v2/vedic/horoscope/daily/personal", params=None, json=body, options=options))
|
|
2992
|
+
|
|
2993
|
+
|
|
2994
|
+
class AsyncVedicMuhuratResource:
|
|
2995
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
2996
|
+
self._client = client
|
|
2997
|
+
|
|
2998
|
+
async def search(
|
|
2999
|
+
self,
|
|
3000
|
+
body: schemas.VedicMuhuratSearchRequest,
|
|
3001
|
+
*,
|
|
3002
|
+
options: RequestOptions | None = None,
|
|
3003
|
+
) -> schemas.VedicMuhuratSearchResponse:
|
|
3004
|
+
"""Search auspicious Vedic windows (v2)
|
|
3005
|
+
|
|
3006
|
+
Search a monthly date range for auspicious windows.
|
|
3007
|
+
|
|
3008
|
+
``POST /api/v2/vedic/muhurat/search``
|
|
3009
|
+
"""
|
|
3010
|
+
return cast("schemas.VedicMuhuratSearchResponse", await self._client.request("POST", "/api/v2/vedic/muhurat/search", params=None, json=body, options=options))
|
|
3011
|
+
|
|
3012
|
+
async def personalized_search(
|
|
3013
|
+
self,
|
|
3014
|
+
body: schemas.VedicMuhuratPersonalizedSearchRequest,
|
|
3015
|
+
*,
|
|
3016
|
+
options: RequestOptions | None = None,
|
|
3017
|
+
) -> schemas.VedicMuhuratSearchResponse:
|
|
3018
|
+
"""Search auspicious Vedic windows with natal personalization (v2)
|
|
3019
|
+
|
|
3020
|
+
Search public muhurat windows, then re-rank them for a specific birth chart.
|
|
3021
|
+
|
|
3022
|
+
``POST /api/v2/vedic/muhurat/personalized-search``
|
|
3023
|
+
"""
|
|
3024
|
+
return cast("schemas.VedicMuhuratSearchResponse", await self._client.request("POST", "/api/v2/vedic/muhurat/personalized-search", params=None, json=body, options=options))
|
|
3025
|
+
|
|
3026
|
+
|
|
3027
|
+
class AsyncVedicResource:
|
|
3028
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3029
|
+
self._client = client
|
|
3030
|
+
self.transits = AsyncVedicTransitsResource(client)
|
|
3031
|
+
self.gochar = AsyncVedicGocharResource(client)
|
|
3032
|
+
self.visual = AsyncVedicVisualResource(client)
|
|
3033
|
+
self.horoscope = AsyncVedicHoroscopeResource(client)
|
|
3034
|
+
self.muhurat = AsyncVedicMuhuratResource(client)
|
|
3035
|
+
|
|
3036
|
+
async def match_v1(
|
|
3037
|
+
self,
|
|
3038
|
+
body: schemas.MatchRequest,
|
|
3039
|
+
*,
|
|
3040
|
+
options: RequestOptions | None = None,
|
|
3041
|
+
) -> Any:
|
|
3042
|
+
"""Match Birth Details
|
|
3043
|
+
|
|
3044
|
+
Calculate compatibility using birth details directly.
|
|
3045
|
+
Computes Moon Nakshatra/Sign internally to avoid ID lookup errors.
|
|
3046
|
+
|
|
3047
|
+
``POST /api/v1/vedic/match``
|
|
3048
|
+
"""
|
|
3049
|
+
return await self._client.request("POST", "/api/v1/vedic/match", params=None, json=body, options=options)
|
|
3050
|
+
|
|
3051
|
+
async def chart_v1(
|
|
3052
|
+
self,
|
|
3053
|
+
body: schemas.BaseChartRequestV1,
|
|
3054
|
+
*,
|
|
3055
|
+
options: RequestOptions | None = None,
|
|
3056
|
+
) -> Any:
|
|
3057
|
+
"""Get Basic Chart
|
|
3058
|
+
|
|
3059
|
+
Get basic Vedic chart: Planets + Houses + Ascendant.
|
|
3060
|
+
Lightweight endpoint for essential data only.
|
|
3061
|
+
|
|
3062
|
+
``POST /api/v1/vedic/chart``
|
|
3063
|
+
"""
|
|
3064
|
+
return await self._client.request("POST", "/api/v1/vedic/chart", params=None, json=body, options=options)
|
|
3065
|
+
|
|
3066
|
+
async def calculate_v1(
|
|
3067
|
+
self,
|
|
3068
|
+
body: schemas.VedicChartRequest,
|
|
3069
|
+
*,
|
|
3070
|
+
options: RequestOptions | None = None,
|
|
3071
|
+
) -> Any:
|
|
3072
|
+
"""Calculate Full Chart
|
|
3073
|
+
|
|
3074
|
+
Full Vedic chart with all optional features.
|
|
3075
|
+
Use feature toggles to customize response.
|
|
3076
|
+
|
|
3077
|
+
``POST /api/v1/vedic/calculate``
|
|
3078
|
+
"""
|
|
3079
|
+
return await self._client.request("POST", "/api/v1/vedic/calculate", params=None, json=body, options=options)
|
|
3080
|
+
|
|
3081
|
+
async def dasha_v1(
|
|
3082
|
+
self,
|
|
3083
|
+
body: schemas.DashaRequestV1,
|
|
3084
|
+
*,
|
|
3085
|
+
options: RequestOptions | None = None,
|
|
3086
|
+
) -> Any:
|
|
3087
|
+
"""Get Dasha
|
|
3088
|
+
|
|
3089
|
+
Get Vimshottari Dasha timeline only.
|
|
3090
|
+
|
|
3091
|
+
``POST /api/v1/vedic/dasha``
|
|
3092
|
+
"""
|
|
3093
|
+
return await self._client.request("POST", "/api/v1/vedic/dasha", params=None, json=body, options=options)
|
|
3094
|
+
|
|
3095
|
+
async def dasha_insights_v1(
|
|
3096
|
+
self,
|
|
3097
|
+
body: schemas.DashaRequestV1,
|
|
3098
|
+
*,
|
|
3099
|
+
options: RequestOptions | None = None,
|
|
3100
|
+
) -> schemas.VedicDashaInsightsResponse:
|
|
3101
|
+
"""Get Dasha Insights
|
|
3102
|
+
|
|
3103
|
+
Get index-ready Vimshottari Dasha facts for Vedic retrieval and bot use.
|
|
3104
|
+
|
|
3105
|
+
``POST /api/v1/vedic/dasha/insights``
|
|
3106
|
+
"""
|
|
3107
|
+
return cast("schemas.VedicDashaInsightsResponse", await self._client.request("POST", "/api/v1/vedic/dasha/insights", params=None, json=body, options=options))
|
|
3108
|
+
|
|
3109
|
+
async def yogas_v1(
|
|
3110
|
+
self,
|
|
3111
|
+
body: schemas.BaseChartRequestV1,
|
|
3112
|
+
*,
|
|
3113
|
+
options: RequestOptions | None = None,
|
|
3114
|
+
) -> Any:
|
|
3115
|
+
"""Get Yogas
|
|
3116
|
+
|
|
3117
|
+
Get detected Yogas only (Manglik, Kala Sarpa, Raj Yogas, etc).
|
|
3118
|
+
|
|
3119
|
+
``POST /api/v1/vedic/yogas``
|
|
3120
|
+
"""
|
|
3121
|
+
return await self._client.request("POST", "/api/v1/vedic/yogas", params=None, json=body, options=options)
|
|
3122
|
+
|
|
3123
|
+
async def strength_v1(
|
|
3124
|
+
self,
|
|
3125
|
+
body: schemas.BaseChartRequestV1,
|
|
3126
|
+
*,
|
|
3127
|
+
options: RequestOptions | None = None,
|
|
3128
|
+
) -> Any:
|
|
3129
|
+
"""Get Strength
|
|
3130
|
+
|
|
3131
|
+
Get planetary strength: Shadbala + Ashtakavarga.
|
|
3132
|
+
|
|
3133
|
+
``POST /api/v1/vedic/strength``
|
|
3134
|
+
"""
|
|
3135
|
+
return await self._client.request("POST", "/api/v1/vedic/strength", params=None, json=body, options=options)
|
|
3136
|
+
|
|
3137
|
+
async def vargas_v1(
|
|
3138
|
+
self,
|
|
3139
|
+
body: schemas.VargaRequest,
|
|
3140
|
+
*,
|
|
3141
|
+
options: RequestOptions | None = None,
|
|
3142
|
+
) -> Any:
|
|
3143
|
+
"""Get Vargas
|
|
3144
|
+
|
|
3145
|
+
Get divisional chart positions (D1, D9, D10, etc).
|
|
3146
|
+
|
|
3147
|
+
``POST /api/v1/vedic/vargas``
|
|
3148
|
+
"""
|
|
3149
|
+
return await self._client.request("POST", "/api/v1/vedic/vargas", params=None, json=body, options=options)
|
|
3150
|
+
|
|
3151
|
+
async def compatibility_v1(
|
|
3152
|
+
self,
|
|
3153
|
+
body: schemas.CompatibilityRequest,
|
|
3154
|
+
*,
|
|
3155
|
+
options: RequestOptions | None = None,
|
|
3156
|
+
) -> Any:
|
|
3157
|
+
"""Calculate Compatibility
|
|
3158
|
+
|
|
3159
|
+
Calculate Ashtakoota (8-point) compatibility.
|
|
3160
|
+
Returns score out of 36.
|
|
3161
|
+
|
|
3162
|
+
``POST /api/v1/vedic/compatibility``
|
|
3163
|
+
"""
|
|
3164
|
+
return await self._client.request("POST", "/api/v1/vedic/compatibility", params=None, json=body, options=options)
|
|
3165
|
+
|
|
3166
|
+
async def panchang_v1(
|
|
3167
|
+
self,
|
|
3168
|
+
body: schemas.PanchangRequestV1,
|
|
3169
|
+
*,
|
|
3170
|
+
options: RequestOptions | None = None,
|
|
3171
|
+
) -> Any:
|
|
3172
|
+
"""Get Panchang
|
|
3173
|
+
|
|
3174
|
+
Get Panchang (daily almanac): Tithi, Nakshatra, Yoga, Karana, Rahu Kalam.
|
|
3175
|
+
|
|
3176
|
+
``POST /api/v1/vedic/panchang``
|
|
3177
|
+
"""
|
|
3178
|
+
return await self._client.request("POST", "/api/v1/vedic/panchang", params=None, json=body, options=options)
|
|
3179
|
+
|
|
3180
|
+
async def batch(
|
|
3181
|
+
self,
|
|
3182
|
+
body: schemas.VedicBatchRequest,
|
|
3183
|
+
*,
|
|
3184
|
+
options: RequestOptions | None = None,
|
|
3185
|
+
) -> Any:
|
|
3186
|
+
"""Run Vedic Batch
|
|
3187
|
+
|
|
3188
|
+
Run up to 6 single-person Vedic endpoint calls in one HTTP request.
|
|
3189
|
+
Items execute sequentially to keep compute bounded and preserve per-item order.
|
|
3190
|
+
|
|
3191
|
+
``POST /api/v1/vedic/batch``
|
|
3192
|
+
"""
|
|
3193
|
+
return await self._client.request("POST", "/api/v1/vedic/batch", params=None, json=body, options=options)
|
|
3194
|
+
|
|
3195
|
+
async def chat(
|
|
3196
|
+
self,
|
|
3197
|
+
body: schemas.VedicChatRequest,
|
|
3198
|
+
*,
|
|
3199
|
+
options: RequestOptions | None = None,
|
|
3200
|
+
) -> schemas.VedicChatResponse:
|
|
3201
|
+
"""Hosted Vedic Chat (v2)
|
|
3202
|
+
|
|
3203
|
+
Hosted Vedic Chat orchestration.
|
|
3204
|
+
|
|
3205
|
+
``POST /api/v2/vedic/chat``
|
|
3206
|
+
"""
|
|
3207
|
+
return cast("schemas.VedicChatResponse", await self._client.request("POST", "/api/v2/vedic/chat", params=None, json=body, options=options))
|
|
3208
|
+
|
|
3209
|
+
async def calculate(
|
|
3210
|
+
self,
|
|
3211
|
+
body: schemas.CalculateRequest,
|
|
3212
|
+
*,
|
|
3213
|
+
options: RequestOptions | None = None,
|
|
3214
|
+
) -> schemas.CalculateV2Response:
|
|
3215
|
+
"""Get Full Vedic Calculate (v2)
|
|
3216
|
+
|
|
3217
|
+
Return a full V2 Vedic chart payload composed from calibrated V2 component engines.
|
|
3218
|
+
|
|
3219
|
+
``POST /api/v2/vedic/calculate``
|
|
3220
|
+
"""
|
|
3221
|
+
return cast("schemas.CalculateV2Response", await self._client.request("POST", "/api/v2/vedic/calculate", params=None, json=body, options=options))
|
|
3222
|
+
|
|
3223
|
+
async def kp(
|
|
3224
|
+
self,
|
|
3225
|
+
body: schemas.KPChartRequest,
|
|
3226
|
+
*,
|
|
3227
|
+
options: RequestOptions | None = None,
|
|
3228
|
+
) -> schemas.KPChartResponse:
|
|
3229
|
+
"""Get Complete KP Chart (v2)
|
|
3230
|
+
|
|
3231
|
+
Return a complete Krishnamurti Paddhati calculation contract.
|
|
3232
|
+
|
|
3233
|
+
``POST /api/v2/vedic/kp``
|
|
3234
|
+
"""
|
|
3235
|
+
return cast("schemas.KPChartResponse", await self._client.request("POST", "/api/v2/vedic/kp", params=None, json=body, options=options))
|
|
3236
|
+
|
|
3237
|
+
async def kp_render(
|
|
3238
|
+
self,
|
|
3239
|
+
body: schemas.KPChartRenderRequest,
|
|
3240
|
+
*,
|
|
3241
|
+
options: RequestOptions | None = None,
|
|
3242
|
+
) -> str:
|
|
3243
|
+
"""Render KP Chart and Tables (v2)
|
|
3244
|
+
|
|
3245
|
+
Render the same complete KP calculation as an accessible SVG or PNG.
|
|
3246
|
+
|
|
3247
|
+
``POST /api/v2/vedic/kp/render``
|
|
3248
|
+
|
|
3249
|
+
Returns the image body as text; use ``request_raw`` for binary formats such as PNG.
|
|
3250
|
+
"""
|
|
3251
|
+
return cast("str", await self._client.request("POST", "/api/v2/vedic/kp/render", params=None, json=body, options=options))
|
|
3252
|
+
|
|
3253
|
+
async def chart(
|
|
3254
|
+
self,
|
|
3255
|
+
body: schemas.ChartRequest,
|
|
3256
|
+
*,
|
|
3257
|
+
options: RequestOptions | None = None,
|
|
3258
|
+
) -> schemas.ChartV2Response:
|
|
3259
|
+
"""Get Vedic Chart (v2)
|
|
3260
|
+
|
|
3261
|
+
Return a clean V2 D1 chart payload built from the shared sidereal chart engine.
|
|
3262
|
+
|
|
3263
|
+
``POST /api/v2/vedic/chart``
|
|
3264
|
+
"""
|
|
3265
|
+
return cast("schemas.ChartV2Response", await self._client.request("POST", "/api/v2/vedic/chart", params=None, json=body, options=options))
|
|
3266
|
+
|
|
3267
|
+
async def vargas(
|
|
3268
|
+
self,
|
|
3269
|
+
body: schemas.VargasRequest,
|
|
3270
|
+
*,
|
|
3271
|
+
options: RequestOptions | None = None,
|
|
3272
|
+
) -> schemas.VargasV2Response:
|
|
3273
|
+
"""Get Vedic Vargas (v2)
|
|
3274
|
+
|
|
3275
|
+
Return V2 divisional chart rows and whole-sign divisional layouts.
|
|
3276
|
+
|
|
3277
|
+
``POST /api/v2/vedic/vargas``
|
|
3278
|
+
"""
|
|
3279
|
+
return cast("schemas.VargasV2Response", await self._client.request("POST", "/api/v2/vedic/vargas", params=None, json=body, options=options))
|
|
3280
|
+
|
|
3281
|
+
async def dasha(
|
|
3282
|
+
self,
|
|
3283
|
+
body: schemas.DashaRequestV2,
|
|
3284
|
+
*,
|
|
3285
|
+
options: RequestOptions | None = None,
|
|
3286
|
+
) -> schemas.DashaV2Response:
|
|
3287
|
+
"""Get Vimshottari Dasha (v2)
|
|
3288
|
+
|
|
3289
|
+
Return a V2 Vimshottari Dasha contract with birth balance, active stack, and timeline.
|
|
3290
|
+
|
|
3291
|
+
``POST /api/v2/vedic/dasha``
|
|
3292
|
+
"""
|
|
3293
|
+
return cast("schemas.DashaV2Response", await self._client.request("POST", "/api/v2/vedic/dasha", params=None, json=body, options=options))
|
|
3294
|
+
|
|
3295
|
+
async def dasha_insights(
|
|
3296
|
+
self,
|
|
3297
|
+
body: schemas.DashaRequestV2,
|
|
3298
|
+
*,
|
|
3299
|
+
options: RequestOptions | None = None,
|
|
3300
|
+
) -> schemas.VedicDashaInsightsResponse:
|
|
3301
|
+
"""Get Vimshottari Dasha Insights (v2)
|
|
3302
|
+
|
|
3303
|
+
Return ranked dasha insight facts derived from the calibrated V2 Vimshottari timeline.
|
|
3304
|
+
|
|
3305
|
+
``POST /api/v2/vedic/dasha/insights``
|
|
3306
|
+
"""
|
|
3307
|
+
return cast("schemas.VedicDashaInsightsResponse", await self._client.request("POST", "/api/v2/vedic/dasha/insights", params=None, json=body, options=options))
|
|
3308
|
+
|
|
3309
|
+
async def yogas(
|
|
3310
|
+
self,
|
|
3311
|
+
body: schemas.BaseChartRequestV2,
|
|
3312
|
+
*,
|
|
3313
|
+
options: RequestOptions | None = None,
|
|
3314
|
+
) -> schemas.YogasV2Response:
|
|
3315
|
+
"""Get Vedic Yogas (v2)
|
|
3316
|
+
|
|
3317
|
+
Evaluate a classical V2 yoga catalog and return active and inactive results with evidence.
|
|
3318
|
+
|
|
3319
|
+
``POST /api/v2/vedic/yogas``
|
|
3320
|
+
"""
|
|
3321
|
+
return cast("schemas.YogasV2Response", await self._client.request("POST", "/api/v2/vedic/yogas", params=None, json=body, options=options))
|
|
3322
|
+
|
|
3323
|
+
async def strength(
|
|
3324
|
+
self,
|
|
3325
|
+
body: schemas.BaseChartRequestV2,
|
|
3326
|
+
*,
|
|
3327
|
+
options: RequestOptions | None = None,
|
|
3328
|
+
) -> schemas.StrengthV2Response:
|
|
3329
|
+
"""Get Vedic Strength (v2)
|
|
3330
|
+
|
|
3331
|
+
Return V2 strength data with classical Shadbala and classical Ashtakavarga.
|
|
3332
|
+
|
|
3333
|
+
``POST /api/v2/vedic/strength``
|
|
3334
|
+
"""
|
|
3335
|
+
return cast("schemas.StrengthV2Response", await self._client.request("POST", "/api/v2/vedic/strength", params=None, json=body, options=options))
|
|
3336
|
+
|
|
3337
|
+
async def compatibility(
|
|
3338
|
+
self,
|
|
3339
|
+
body: schemas.CompatibilityV2Request,
|
|
3340
|
+
*,
|
|
3341
|
+
options: RequestOptions | None = None,
|
|
3342
|
+
) -> schemas.CompatibilityV2Response:
|
|
3343
|
+
"""Get Vedic Compatibility (v2)
|
|
3344
|
+
|
|
3345
|
+
Return an AstroSage-style V2 Ashtakoota compatibility payload.
|
|
3346
|
+
|
|
3347
|
+
``POST /api/v2/vedic/compatibility``
|
|
3348
|
+
"""
|
|
3349
|
+
return cast("schemas.CompatibilityV2Response", await self._client.request("POST", "/api/v2/vedic/compatibility", params=None, json=body, options=options))
|
|
3350
|
+
|
|
3351
|
+
async def match(
|
|
3352
|
+
self,
|
|
3353
|
+
body: schemas.MatchV2Request,
|
|
3354
|
+
*,
|
|
3355
|
+
options: RequestOptions | None = None,
|
|
3356
|
+
) -> schemas.CompatibilityV2Response:
|
|
3357
|
+
"""Get Vedic Match by Birth Details (v2)
|
|
3358
|
+
|
|
3359
|
+
Return the calibrated V2 compatibility payload from two birth charts.
|
|
3360
|
+
|
|
3361
|
+
``POST /api/v2/vedic/match``
|
|
3362
|
+
"""
|
|
3363
|
+
return cast("schemas.CompatibilityV2Response", await self._client.request("POST", "/api/v2/vedic/match", params=None, json=body, options=options))
|
|
3364
|
+
|
|
3365
|
+
async def panchang(
|
|
3366
|
+
self,
|
|
3367
|
+
body: schemas.PanchangRequestV2,
|
|
3368
|
+
*,
|
|
3369
|
+
options: RequestOptions | None = None,
|
|
3370
|
+
) -> schemas.PanchangV2Response:
|
|
3371
|
+
"""Get Panchang (v2)
|
|
3372
|
+
|
|
3373
|
+
Return a sunrise-based daily Panchang with transition times calibrated toward
|
|
3374
|
+
AstroSage's public daily Panchang presentation.
|
|
3375
|
+
|
|
3376
|
+
``POST /api/v2/vedic/panchang``
|
|
3377
|
+
"""
|
|
3378
|
+
return cast("schemas.PanchangV2Response", await self._client.request("POST", "/api/v2/vedic/panchang", params=None, json=body, options=options))
|
|
3379
|
+
|
|
3380
|
+
async def qa(
|
|
3381
|
+
self,
|
|
3382
|
+
body: schemas.VedicQARequest,
|
|
3383
|
+
*,
|
|
3384
|
+
options: RequestOptions | None = None,
|
|
3385
|
+
) -> schemas.VedicQAResponse:
|
|
3386
|
+
"""Answer Vedic question (v2)
|
|
3387
|
+
|
|
3388
|
+
Answer a constrained Vedic question with structured calculation evidence.
|
|
3389
|
+
|
|
3390
|
+
``POST /api/v2/vedic/qa``
|
|
3391
|
+
"""
|
|
3392
|
+
return cast("schemas.VedicQAResponse", await self._client.request("POST", "/api/v2/vedic/qa", params=None, json=body, options=options))
|
|
3393
|
+
|
|
3394
|
+
|
|
3395
|
+
class AsyncWesternSolarResource:
|
|
3396
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3397
|
+
self._client = client
|
|
3398
|
+
|
|
3399
|
+
async def calculate(
|
|
3400
|
+
self,
|
|
3401
|
+
body: schemas.SolarReturnRequest,
|
|
3402
|
+
*,
|
|
3403
|
+
options: RequestOptions | None = None,
|
|
3404
|
+
) -> schemas.SolarReturnResponse:
|
|
3405
|
+
"""Get Solar Return
|
|
3406
|
+
|
|
3407
|
+
Computes purely deterministic Solar Return chart against the Natal chart.
|
|
3408
|
+
Returns structurally identical core chart blocks (planets, aspects) as
|
|
3409
|
+
well as exact cross-aspects and angularity, without scoring or archetype models.
|
|
3410
|
+
|
|
3411
|
+
``POST /api/v1/western/solar/calculate``
|
|
3412
|
+
"""
|
|
3413
|
+
return cast("schemas.SolarReturnResponse", await self._client.request("POST", "/api/v1/western/solar/calculate", params=None, json=body, options=options))
|
|
3414
|
+
|
|
3415
|
+
|
|
3416
|
+
class AsyncWesternReturnsResource:
|
|
3417
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3418
|
+
self._client = client
|
|
3419
|
+
|
|
3420
|
+
async def calculate(
|
|
3421
|
+
self,
|
|
3422
|
+
body: schemas.PlanetReturnRequest,
|
|
3423
|
+
*,
|
|
3424
|
+
options: RequestOptions | None = None,
|
|
3425
|
+
) -> schemas.PlanetReturnResponse:
|
|
3426
|
+
"""Get Planet Return
|
|
3427
|
+
|
|
3428
|
+
Computes a deterministic planetary return chart against the natal chart.
|
|
3429
|
+
The return target is selected by body plus a date anchor and selection mode.
|
|
3430
|
+
|
|
3431
|
+
``POST /api/v1/western/returns/calculate``
|
|
3432
|
+
"""
|
|
3433
|
+
return cast("schemas.PlanetReturnResponse", await self._client.request("POST", "/api/v1/western/returns/calculate", params=None, json=body, options=options))
|
|
3434
|
+
|
|
3435
|
+
|
|
3436
|
+
class AsyncWesternAstrocartographyResource:
|
|
3437
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3438
|
+
self._client = client
|
|
3439
|
+
|
|
3440
|
+
async def lines(
|
|
3441
|
+
self,
|
|
3442
|
+
body: schemas.AstrocartographyLinesRequest,
|
|
3443
|
+
*,
|
|
3444
|
+
options: RequestOptions | None = None,
|
|
3445
|
+
) -> dict[str, Any]:
|
|
3446
|
+
"""Get Astrocartography Lines
|
|
3447
|
+
|
|
3448
|
+
Compute astrocartography map lines for a natal chart.
|
|
3449
|
+
|
|
3450
|
+
``POST /api/v1/western/astrocartography/lines``
|
|
3451
|
+
"""
|
|
3452
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v1/western/astrocartography/lines", params=None, json=body, options=options))
|
|
3453
|
+
|
|
3454
|
+
async def recommendations(
|
|
3455
|
+
self,
|
|
3456
|
+
body: schemas.AstrocartographyRecommendationsRequest,
|
|
3457
|
+
*,
|
|
3458
|
+
options: RequestOptions | None = None,
|
|
3459
|
+
) -> dict[str, Any]:
|
|
3460
|
+
"""Get Astrocartography Recommendations
|
|
3461
|
+
|
|
3462
|
+
Rank candidate cities for a focus-oriented astrocartography search.
|
|
3463
|
+
|
|
3464
|
+
``POST /api/v1/western/astrocartography/recommendations``
|
|
3465
|
+
"""
|
|
3466
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v1/western/astrocartography/recommendations", params=None, json=body, options=options))
|
|
3467
|
+
|
|
3468
|
+
async def parans(
|
|
3469
|
+
self,
|
|
3470
|
+
body: schemas.AstrocartographyParansRequest,
|
|
3471
|
+
*,
|
|
3472
|
+
options: RequestOptions | None = None,
|
|
3473
|
+
) -> dict[str, Any]:
|
|
3474
|
+
"""Get Astrocartography Parans
|
|
3475
|
+
|
|
3476
|
+
Compute classical in-mundo astrocartography parans for a natal chart.
|
|
3477
|
+
|
|
3478
|
+
``POST /api/v1/western/astrocartography/parans``
|
|
3479
|
+
"""
|
|
3480
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v1/western/astrocartography/parans", params=None, json=body, options=options))
|
|
3481
|
+
|
|
3482
|
+
async def relocation(
|
|
3483
|
+
self,
|
|
3484
|
+
body: schemas.AstrocartographyRelocationRequest,
|
|
3485
|
+
*,
|
|
3486
|
+
options: RequestOptions | None = None,
|
|
3487
|
+
) -> dict[str, Any]:
|
|
3488
|
+
"""Get Astrocartography Relocation
|
|
3489
|
+
|
|
3490
|
+
Build a full relocated chart for the natal instant at a target city.
|
|
3491
|
+
|
|
3492
|
+
``POST /api/v1/western/astrocartography/relocation``
|
|
3493
|
+
"""
|
|
3494
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v1/western/astrocartography/relocation", params=None, json=body, options=options))
|
|
3495
|
+
|
|
3496
|
+
async def city_check(
|
|
3497
|
+
self,
|
|
3498
|
+
body: schemas.AstrocartographyCityCheckRequest,
|
|
3499
|
+
*,
|
|
3500
|
+
options: RequestOptions | None = None,
|
|
3501
|
+
) -> dict[str, Any]:
|
|
3502
|
+
"""Get Astrocartography City Check
|
|
3503
|
+
|
|
3504
|
+
Score a single city across the five primary relocation-oriented focus areas.
|
|
3505
|
+
|
|
3506
|
+
``POST /api/v1/western/astrocartography/city-check``
|
|
3507
|
+
"""
|
|
3508
|
+
return cast("dict[str, Any]", await self._client.request("POST", "/api/v1/western/astrocartography/city-check", params=None, json=body, options=options))
|
|
3509
|
+
|
|
3510
|
+
|
|
3511
|
+
class AsyncWesternNatalResource:
|
|
3512
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3513
|
+
self._client = client
|
|
3514
|
+
|
|
3515
|
+
async def insights(
|
|
3516
|
+
self,
|
|
3517
|
+
body: schemas.NatalInsightsRequest,
|
|
3518
|
+
*,
|
|
3519
|
+
options: RequestOptions | None = None,
|
|
3520
|
+
) -> schemas.NatalInsightsResponse:
|
|
3521
|
+
"""Get Natal Insights
|
|
3522
|
+
|
|
3523
|
+
Return machine-readable natal insight facts, with optional canonical grouping and French display text.
|
|
3524
|
+
|
|
3525
|
+
``POST /api/v1/western/natal/insights``
|
|
3526
|
+
"""
|
|
3527
|
+
return cast("schemas.NatalInsightsResponse", await self._client.request("POST", "/api/v1/western/natal/insights", params=None, json=body, options=options))
|
|
3528
|
+
|
|
3529
|
+
async def insights_index_documents(
|
|
3530
|
+
self,
|
|
3531
|
+
body: schemas.NatalInsightsRequest,
|
|
3532
|
+
*,
|
|
3533
|
+
options: RequestOptions | None = None,
|
|
3534
|
+
) -> schemas.NatalInsightsIndexDocumentsResponse:
|
|
3535
|
+
"""Get Natal Insight Index Documents
|
|
3536
|
+
|
|
3537
|
+
Return one denormalized search document per natal insight fact for external indexing systems.
|
|
3538
|
+
|
|
3539
|
+
``POST /api/v1/western/natal/insights/index-documents``
|
|
3540
|
+
"""
|
|
3541
|
+
return cast("schemas.NatalInsightsIndexDocumentsResponse", await self._client.request("POST", "/api/v1/western/natal/insights/index-documents", params=None, json=body, options=options))
|
|
3542
|
+
|
|
3543
|
+
|
|
3544
|
+
class AsyncWesternTransitsResource:
|
|
3545
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3546
|
+
self._client = client
|
|
3547
|
+
|
|
3548
|
+
async def insights(
|
|
3549
|
+
self,
|
|
3550
|
+
body: schemas.TransitTimelineRequest,
|
|
3551
|
+
*,
|
|
3552
|
+
options: RequestOptions | None = None,
|
|
3553
|
+
) -> schemas.TransitInsightsResponse:
|
|
3554
|
+
"""Get Transit Insights
|
|
3555
|
+
|
|
3556
|
+
Compute derived transit insight windows from the transit timeline engine.
|
|
3557
|
+
|
|
3558
|
+
``POST /api/v1/western/transits/insights``
|
|
3559
|
+
"""
|
|
3560
|
+
return cast("schemas.TransitInsightsResponse", await self._client.request("POST", "/api/v1/western/transits/insights", params=None, json=body, options=options))
|
|
3561
|
+
|
|
3562
|
+
async def timeline(
|
|
3563
|
+
self,
|
|
3564
|
+
body: schemas.TransitTimelineRequest,
|
|
3565
|
+
*,
|
|
3566
|
+
options: RequestOptions | None = None,
|
|
3567
|
+
) -> schemas.TransitTimelineResponse:
|
|
3568
|
+
"""Get Transits Timeline
|
|
3569
|
+
|
|
3570
|
+
Compute transit-to-natal interval passes across a date range for calendar and timeline rendering.
|
|
3571
|
+
|
|
3572
|
+
``POST /api/v1/western/transits/timeline``
|
|
3573
|
+
"""
|
|
3574
|
+
return cast("schemas.TransitTimelineResponse", await self._client.request("POST", "/api/v1/western/transits/timeline", params=None, json=body, options=options))
|
|
3575
|
+
|
|
3576
|
+
async def timeline_index_documents(
|
|
3577
|
+
self,
|
|
3578
|
+
body: schemas.TransitTimelineRequest,
|
|
3579
|
+
*,
|
|
3580
|
+
options: RequestOptions | None = None,
|
|
3581
|
+
) -> schemas.TransitTimelineIndexDocumentsResponse:
|
|
3582
|
+
"""Get Transits Timeline Index Documents
|
|
3583
|
+
|
|
3584
|
+
Compute timeline passes and return one denormalized search document per pass.
|
|
3585
|
+
|
|
3586
|
+
``POST /api/v1/western/transits/timeline/index-documents``
|
|
3587
|
+
"""
|
|
3588
|
+
return cast("schemas.TransitTimelineIndexDocumentsResponse", await self._client.request("POST", "/api/v1/western/transits/timeline/index-documents", params=None, json=body, options=options))
|
|
3589
|
+
|
|
3590
|
+
async def search(
|
|
3591
|
+
self,
|
|
3592
|
+
body: schemas.TransitSearchRequest,
|
|
3593
|
+
*,
|
|
3594
|
+
options: RequestOptions | None = None,
|
|
3595
|
+
) -> schemas.TransitSearchResponse:
|
|
3596
|
+
"""Search Transits
|
|
3597
|
+
|
|
3598
|
+
Search a long-range date or age window for all passes of one transit planet against one natal point.
|
|
3599
|
+
|
|
3600
|
+
``POST /api/v1/western/transits/search``
|
|
3601
|
+
"""
|
|
3602
|
+
return cast("schemas.TransitSearchResponse", await self._client.request("POST", "/api/v1/western/transits/search", params=None, json=body, options=options))
|
|
3603
|
+
|
|
3604
|
+
|
|
3605
|
+
class AsyncWesternProfectionsResource:
|
|
3606
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3607
|
+
self._client = client
|
|
3608
|
+
|
|
3609
|
+
async def annual(
|
|
3610
|
+
self,
|
|
3611
|
+
body: schemas.AnnualProfectionRequest,
|
|
3612
|
+
*,
|
|
3613
|
+
include: list[str] | None = None,
|
|
3614
|
+
options: RequestOptions | None = None,
|
|
3615
|
+
) -> schemas.AnnualProfectionResponse:
|
|
3616
|
+
"""Get Annual Profections
|
|
3617
|
+
|
|
3618
|
+
Annual profections endpoint with a solar-return-style envelope and a timing-oriented body.
|
|
3619
|
+
|
|
3620
|
+
``POST /api/v1/western/profections/annual``
|
|
3621
|
+
"""
|
|
3622
|
+
return cast("schemas.AnnualProfectionResponse", await self._client.request("POST", "/api/v1/western/profections/annual", params=_query({"include": include}), json=body, options=options))
|
|
3623
|
+
|
|
3624
|
+
|
|
3625
|
+
class AsyncWesternProgressionsResource:
|
|
3626
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3627
|
+
self._client = client
|
|
3628
|
+
|
|
3629
|
+
async def secondary(
|
|
3630
|
+
self,
|
|
3631
|
+
body: schemas.SecondaryProgressionsRequest,
|
|
3632
|
+
*,
|
|
3633
|
+
include: list[str] | None = None,
|
|
3634
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
3635
|
+
options: RequestOptions | None = None,
|
|
3636
|
+
) -> schemas.SecondaryProgressionsResponse | schemas.ProgressionTableResponse:
|
|
3637
|
+
"""Get Secondary Progressions
|
|
3638
|
+
|
|
3639
|
+
Compute a secondary progressed chart using the classic symbolic timing rule:
|
|
3640
|
+
1 day after birth = 1 year of life.
|
|
3641
|
+
|
|
3642
|
+
``POST /api/v1/western/progressions/secondary``
|
|
3643
|
+
"""
|
|
3644
|
+
return cast("schemas.SecondaryProgressionsResponse | schemas.ProgressionTableResponse", await self._client.request("POST", "/api/v1/western/progressions/secondary", params=_query({"include": include, "response_mode": response_mode}), json=body, options=options))
|
|
3645
|
+
|
|
3646
|
+
async def converse_secondary(
|
|
3647
|
+
self,
|
|
3648
|
+
body: schemas.ConverseSecondaryProgressionsRequest,
|
|
3649
|
+
*,
|
|
3650
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
3651
|
+
options: RequestOptions | None = None,
|
|
3652
|
+
) -> schemas.ProgressionChartResponse | schemas.ProgressionTableResponse:
|
|
3653
|
+
"""Get Converse Secondary Progressions
|
|
3654
|
+
|
|
3655
|
+
``POST /api/v1/western/progressions/converse-secondary``
|
|
3656
|
+
"""
|
|
3657
|
+
return cast("schemas.ProgressionChartResponse | schemas.ProgressionTableResponse", await self._client.request("POST", "/api/v1/western/progressions/converse-secondary", params=_query({"response_mode": response_mode}), json=body, options=options))
|
|
3658
|
+
|
|
3659
|
+
async def tertiary(
|
|
3660
|
+
self,
|
|
3661
|
+
body: schemas.TertiaryProgressionsRequest,
|
|
3662
|
+
*,
|
|
3663
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
3664
|
+
options: RequestOptions | None = None,
|
|
3665
|
+
) -> schemas.ProgressionChartResponse | schemas.ProgressionTableResponse:
|
|
3666
|
+
"""Get Tertiary Progressions
|
|
3667
|
+
|
|
3668
|
+
``POST /api/v1/western/progressions/tertiary``
|
|
3669
|
+
"""
|
|
3670
|
+
return cast("schemas.ProgressionChartResponse | schemas.ProgressionTableResponse", await self._client.request("POST", "/api/v1/western/progressions/tertiary", params=_query({"response_mode": response_mode}), json=body, options=options))
|
|
3671
|
+
|
|
3672
|
+
async def quotidian(
|
|
3673
|
+
self,
|
|
3674
|
+
body: schemas.QuotidianProgressionsRequest,
|
|
3675
|
+
*,
|
|
3676
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
3677
|
+
options: RequestOptions | None = None,
|
|
3678
|
+
) -> schemas.ProgressionChartResponse | schemas.ProgressionTableResponse:
|
|
3679
|
+
"""Get Quotidian Progressions
|
|
3680
|
+
|
|
3681
|
+
``POST /api/v1/western/progressions/quotidian``
|
|
3682
|
+
"""
|
|
3683
|
+
return cast("schemas.ProgressionChartResponse | schemas.ProgressionTableResponse", await self._client.request("POST", "/api/v1/western/progressions/quotidian", params=_query({"response_mode": response_mode}), json=body, options=options))
|
|
3684
|
+
|
|
3685
|
+
async def quaternary(
|
|
3686
|
+
self,
|
|
3687
|
+
body: schemas.QuaternaryProgressionsRequest,
|
|
3688
|
+
*,
|
|
3689
|
+
response_mode: Literal["full", "table"] | None = None,
|
|
3690
|
+
options: RequestOptions | None = None,
|
|
3691
|
+
) -> schemas.ProgressionChartResponse | schemas.ProgressionTableResponse:
|
|
3692
|
+
"""Get Quaternary Progressions
|
|
3693
|
+
|
|
3694
|
+
``POST /api/v1/western/progressions/quaternary``
|
|
3695
|
+
"""
|
|
3696
|
+
return cast("schemas.ProgressionChartResponse | schemas.ProgressionTableResponse", await self._client.request("POST", "/api/v1/western/progressions/quaternary", params=_query({"response_mode": response_mode}), json=body, options=options))
|
|
3697
|
+
|
|
3698
|
+
async def secondary_exact_ingresses(
|
|
3699
|
+
self,
|
|
3700
|
+
body: schemas.ExactIngressSearchRequest,
|
|
3701
|
+
*,
|
|
3702
|
+
options: RequestOptions | None = None,
|
|
3703
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
3704
|
+
"""Search Secondary Exact Ingresses
|
|
3705
|
+
|
|
3706
|
+
``POST /api/v1/western/progressions/secondary/exact-ingresses``
|
|
3707
|
+
"""
|
|
3708
|
+
return cast("schemas.ExactIngressSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/secondary/exact-ingresses", params=None, json=body, options=options))
|
|
3709
|
+
|
|
3710
|
+
async def converse_secondary_exact_ingresses(
|
|
3711
|
+
self,
|
|
3712
|
+
body: schemas.ExactIngressSearchRequest,
|
|
3713
|
+
*,
|
|
3714
|
+
options: RequestOptions | None = None,
|
|
3715
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
3716
|
+
"""Search Converse Secondary Exact Ingresses
|
|
3717
|
+
|
|
3718
|
+
``POST /api/v1/western/progressions/converse-secondary/exact-ingresses``
|
|
3719
|
+
"""
|
|
3720
|
+
return cast("schemas.ExactIngressSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/converse-secondary/exact-ingresses", params=None, json=body, options=options))
|
|
3721
|
+
|
|
3722
|
+
async def tertiary_exact_ingresses(
|
|
3723
|
+
self,
|
|
3724
|
+
body: schemas.ExactIngressSearchRequest,
|
|
3725
|
+
*,
|
|
3726
|
+
options: RequestOptions | None = None,
|
|
3727
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
3728
|
+
"""Search Tertiary Exact Ingresses
|
|
3729
|
+
|
|
3730
|
+
``POST /api/v1/western/progressions/tertiary/exact-ingresses``
|
|
3731
|
+
"""
|
|
3732
|
+
return cast("schemas.ExactIngressSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/tertiary/exact-ingresses", params=None, json=body, options=options))
|
|
3733
|
+
|
|
3734
|
+
async def quotidian_exact_ingresses(
|
|
3735
|
+
self,
|
|
3736
|
+
body: schemas.ExactIngressSearchRequest,
|
|
3737
|
+
*,
|
|
3738
|
+
options: RequestOptions | None = None,
|
|
3739
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
3740
|
+
"""Search Quotidian Exact Ingresses
|
|
3741
|
+
|
|
3742
|
+
``POST /api/v1/western/progressions/quotidian/exact-ingresses``
|
|
3743
|
+
"""
|
|
3744
|
+
return cast("schemas.ExactIngressSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/quotidian/exact-ingresses", params=None, json=body, options=options))
|
|
3745
|
+
|
|
3746
|
+
async def quaternary_exact_ingresses(
|
|
3747
|
+
self,
|
|
3748
|
+
body: schemas.ExactIngressSearchRequest,
|
|
3749
|
+
*,
|
|
3750
|
+
options: RequestOptions | None = None,
|
|
3751
|
+
) -> schemas.ExactIngressSearchResponse:
|
|
3752
|
+
"""Search Quaternary Exact Ingresses
|
|
3753
|
+
|
|
3754
|
+
``POST /api/v1/western/progressions/quaternary/exact-ingresses``
|
|
3755
|
+
"""
|
|
3756
|
+
return cast("schemas.ExactIngressSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/quaternary/exact-ingresses", params=None, json=body, options=options))
|
|
3757
|
+
|
|
3758
|
+
async def secondary_exact_aspects(
|
|
3759
|
+
self,
|
|
3760
|
+
body: schemas.ExactAspectSearchRequest,
|
|
3761
|
+
*,
|
|
3762
|
+
options: RequestOptions | None = None,
|
|
3763
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
3764
|
+
"""Search Secondary Exact Aspects
|
|
3765
|
+
|
|
3766
|
+
``POST /api/v1/western/progressions/secondary/exact-aspects``
|
|
3767
|
+
"""
|
|
3768
|
+
return cast("schemas.ExactAspectSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/secondary/exact-aspects", params=None, json=body, options=options))
|
|
3769
|
+
|
|
3770
|
+
async def converse_secondary_exact_aspects(
|
|
3771
|
+
self,
|
|
3772
|
+
body: schemas.ExactAspectSearchRequest,
|
|
3773
|
+
*,
|
|
3774
|
+
options: RequestOptions | None = None,
|
|
3775
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
3776
|
+
"""Search Converse Secondary Exact Aspects
|
|
3777
|
+
|
|
3778
|
+
``POST /api/v1/western/progressions/converse-secondary/exact-aspects``
|
|
3779
|
+
"""
|
|
3780
|
+
return cast("schemas.ExactAspectSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/converse-secondary/exact-aspects", params=None, json=body, options=options))
|
|
3781
|
+
|
|
3782
|
+
async def tertiary_exact_aspects(
|
|
3783
|
+
self,
|
|
3784
|
+
body: schemas.ExactAspectSearchRequest,
|
|
3785
|
+
*,
|
|
3786
|
+
options: RequestOptions | None = None,
|
|
3787
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
3788
|
+
"""Search Tertiary Exact Aspects
|
|
3789
|
+
|
|
3790
|
+
``POST /api/v1/western/progressions/tertiary/exact-aspects``
|
|
3791
|
+
"""
|
|
3792
|
+
return cast("schemas.ExactAspectSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/tertiary/exact-aspects", params=None, json=body, options=options))
|
|
3793
|
+
|
|
3794
|
+
async def quotidian_exact_aspects(
|
|
3795
|
+
self,
|
|
3796
|
+
body: schemas.ExactAspectSearchRequest,
|
|
3797
|
+
*,
|
|
3798
|
+
options: RequestOptions | None = None,
|
|
3799
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
3800
|
+
"""Search Quotidian Exact Aspects
|
|
3801
|
+
|
|
3802
|
+
``POST /api/v1/western/progressions/quotidian/exact-aspects``
|
|
3803
|
+
"""
|
|
3804
|
+
return cast("schemas.ExactAspectSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/quotidian/exact-aspects", params=None, json=body, options=options))
|
|
3805
|
+
|
|
3806
|
+
async def quaternary_exact_aspects(
|
|
3807
|
+
self,
|
|
3808
|
+
body: schemas.ExactAspectSearchRequest,
|
|
3809
|
+
*,
|
|
3810
|
+
options: RequestOptions | None = None,
|
|
3811
|
+
) -> schemas.ExactAspectSearchResponse:
|
|
3812
|
+
"""Search Quaternary Exact Aspects
|
|
3813
|
+
|
|
3814
|
+
``POST /api/v1/western/progressions/quaternary/exact-aspects``
|
|
3815
|
+
"""
|
|
3816
|
+
return cast("schemas.ExactAspectSearchResponse", await self._client.request("POST", "/api/v1/western/progressions/quaternary/exact-aspects", params=None, json=body, options=options))
|
|
3817
|
+
|
|
3818
|
+
async def secondary_calendar(
|
|
3819
|
+
self,
|
|
3820
|
+
body: schemas.ProgressionCalendarRequest,
|
|
3821
|
+
*,
|
|
3822
|
+
options: RequestOptions | None = None,
|
|
3823
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
3824
|
+
"""Get Secondary Progressions Calendar
|
|
3825
|
+
|
|
3826
|
+
``POST /api/v1/western/progressions/secondary/calendar``
|
|
3827
|
+
"""
|
|
3828
|
+
return cast("schemas.ProgressionCalendarResponse", await self._client.request("POST", "/api/v1/western/progressions/secondary/calendar", params=None, json=body, options=options))
|
|
3829
|
+
|
|
3830
|
+
async def converse_secondary_calendar(
|
|
3831
|
+
self,
|
|
3832
|
+
body: schemas.ProgressionCalendarRequest,
|
|
3833
|
+
*,
|
|
3834
|
+
options: RequestOptions | None = None,
|
|
3835
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
3836
|
+
"""Get Converse Secondary Progressions Calendar
|
|
3837
|
+
|
|
3838
|
+
``POST /api/v1/western/progressions/converse-secondary/calendar``
|
|
3839
|
+
"""
|
|
3840
|
+
return cast("schemas.ProgressionCalendarResponse", await self._client.request("POST", "/api/v1/western/progressions/converse-secondary/calendar", params=None, json=body, options=options))
|
|
3841
|
+
|
|
3842
|
+
async def tertiary_calendar(
|
|
3843
|
+
self,
|
|
3844
|
+
body: schemas.ProgressionCalendarRequest,
|
|
3845
|
+
*,
|
|
3846
|
+
options: RequestOptions | None = None,
|
|
3847
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
3848
|
+
"""Get Tertiary Progressions Calendar
|
|
3849
|
+
|
|
3850
|
+
``POST /api/v1/western/progressions/tertiary/calendar``
|
|
3851
|
+
"""
|
|
3852
|
+
return cast("schemas.ProgressionCalendarResponse", await self._client.request("POST", "/api/v1/western/progressions/tertiary/calendar", params=None, json=body, options=options))
|
|
3853
|
+
|
|
3854
|
+
async def quotidian_calendar(
|
|
3855
|
+
self,
|
|
3856
|
+
body: schemas.ProgressionCalendarRequest,
|
|
3857
|
+
*,
|
|
3858
|
+
options: RequestOptions | None = None,
|
|
3859
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
3860
|
+
"""Get Quotidian Progressions Calendar
|
|
3861
|
+
|
|
3862
|
+
``POST /api/v1/western/progressions/quotidian/calendar``
|
|
3863
|
+
"""
|
|
3864
|
+
return cast("schemas.ProgressionCalendarResponse", await self._client.request("POST", "/api/v1/western/progressions/quotidian/calendar", params=None, json=body, options=options))
|
|
3865
|
+
|
|
3866
|
+
async def quaternary_calendar(
|
|
3867
|
+
self,
|
|
3868
|
+
body: schemas.ProgressionCalendarRequest,
|
|
3869
|
+
*,
|
|
3870
|
+
options: RequestOptions | None = None,
|
|
3871
|
+
) -> schemas.ProgressionCalendarResponse:
|
|
3872
|
+
"""Get Quaternary Progressions Calendar
|
|
3873
|
+
|
|
3874
|
+
``POST /api/v1/western/progressions/quaternary/calendar``
|
|
3875
|
+
"""
|
|
3876
|
+
return cast("schemas.ProgressionCalendarResponse", await self._client.request("POST", "/api/v1/western/progressions/quaternary/calendar", params=None, json=body, options=options))
|
|
3877
|
+
|
|
3878
|
+
|
|
3879
|
+
class AsyncWesternDirectionsResource:
|
|
3880
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3881
|
+
self._client = client
|
|
3882
|
+
|
|
3883
|
+
async def primary(
|
|
3884
|
+
self,
|
|
3885
|
+
body: schemas.PrimaryDirectionsRequest,
|
|
3886
|
+
*,
|
|
3887
|
+
options: RequestOptions | None = None,
|
|
3888
|
+
) -> schemas.PrimaryDirectionsResponse:
|
|
3889
|
+
"""Get Primary Directions
|
|
3890
|
+
|
|
3891
|
+
Compute primary directions for a natal chart over a date range.
|
|
3892
|
+
|
|
3893
|
+
``POST /api/v1/western/directions/primary``
|
|
3894
|
+
"""
|
|
3895
|
+
return cast("schemas.PrimaryDirectionsResponse", await self._client.request("POST", "/api/v1/western/directions/primary", params=None, json=body, options=options))
|
|
3896
|
+
|
|
3897
|
+
async def primary_exact_aspects(
|
|
3898
|
+
self,
|
|
3899
|
+
body: schemas.PrimaryDirectionsRequest,
|
|
3900
|
+
*,
|
|
3901
|
+
options: RequestOptions | None = None,
|
|
3902
|
+
) -> schemas.PrimaryDirectionsResponse:
|
|
3903
|
+
"""Get Primary Directions Exact Aspects
|
|
3904
|
+
|
|
3905
|
+
``POST /api/v1/western/directions/primary/exact-aspects``
|
|
3906
|
+
"""
|
|
3907
|
+
return cast("schemas.PrimaryDirectionsResponse", await self._client.request("POST", "/api/v1/western/directions/primary/exact-aspects", params=None, json=body, options=options))
|
|
3908
|
+
|
|
3909
|
+
async def primary_search(
|
|
3910
|
+
self,
|
|
3911
|
+
body: schemas.PrimaryDirectionsRequest,
|
|
3912
|
+
*,
|
|
3913
|
+
options: RequestOptions | None = None,
|
|
3914
|
+
) -> schemas.PrimaryDirectionsResponse:
|
|
3915
|
+
"""Search Primary Directions
|
|
3916
|
+
|
|
3917
|
+
``POST /api/v1/western/directions/primary/search``
|
|
3918
|
+
"""
|
|
3919
|
+
return cast("schemas.PrimaryDirectionsResponse", await self._client.request("POST", "/api/v1/western/directions/primary/search", params=None, json=body, options=options))
|
|
3920
|
+
|
|
3921
|
+
async def primary_calendar(
|
|
3922
|
+
self,
|
|
3923
|
+
body: schemas.PrimaryDirectionsRequest,
|
|
3924
|
+
*,
|
|
3925
|
+
options: RequestOptions | None = None,
|
|
3926
|
+
) -> schemas.PrimaryDirectionsCalendarResponse:
|
|
3927
|
+
"""Get Primary Directions Calendar
|
|
3928
|
+
|
|
3929
|
+
``POST /api/v1/western/directions/primary/calendar``
|
|
3930
|
+
"""
|
|
3931
|
+
return cast("schemas.PrimaryDirectionsCalendarResponse", await self._client.request("POST", "/api/v1/western/directions/primary/calendar", params=None, json=body, options=options))
|
|
3932
|
+
|
|
3933
|
+
|
|
3934
|
+
class AsyncWesternChartSimilarityResource:
|
|
3935
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3936
|
+
self._client = client
|
|
3937
|
+
|
|
3938
|
+
async def famous_people(
|
|
3939
|
+
self,
|
|
3940
|
+
body: schemas.FamousPeopleChartSimilarityRequest,
|
|
3941
|
+
*,
|
|
3942
|
+
options: RequestOptions | None = None,
|
|
3943
|
+
) -> schemas.ChartSimilarityResponse:
|
|
3944
|
+
"""Compare Famous People Chart Similarity
|
|
3945
|
+
|
|
3946
|
+
``POST /api/v2/western/chart-similarity/famous-people``
|
|
3947
|
+
"""
|
|
3948
|
+
return cast("schemas.ChartSimilarityResponse", await self._client.request("POST", "/api/v2/western/chart-similarity/famous-people", params=None, json=body, options=options))
|
|
3949
|
+
|
|
3950
|
+
|
|
3951
|
+
class AsyncWesternElectionalResource:
|
|
3952
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
3953
|
+
self._client = client
|
|
3954
|
+
|
|
3955
|
+
async def wedding_search(
|
|
3956
|
+
self,
|
|
3957
|
+
body: schemas.WeddingElectionSearchRequest,
|
|
3958
|
+
*,
|
|
3959
|
+
options: RequestOptions | None = None,
|
|
3960
|
+
) -> schemas.WeddingElectionSearchResponse:
|
|
3961
|
+
"""Search Wedding Elections
|
|
3962
|
+
|
|
3963
|
+
``POST /api/v2/western/electional/wedding/search``
|
|
3964
|
+
"""
|
|
3965
|
+
return cast("schemas.WeddingElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/wedding/search", params=None, json=body, options=options))
|
|
3966
|
+
|
|
3967
|
+
async def making_contracts_search(
|
|
3968
|
+
self,
|
|
3969
|
+
body: schemas.MakingContractsElectionSearchRequest,
|
|
3970
|
+
*,
|
|
3971
|
+
options: RequestOptions | None = None,
|
|
3972
|
+
) -> schemas.MakingContractsElectionSearchResponse:
|
|
3973
|
+
"""Search Making Contracts Elections
|
|
3974
|
+
|
|
3975
|
+
``POST /api/v2/western/electional/making-contracts/search``
|
|
3976
|
+
"""
|
|
3977
|
+
return cast("schemas.MakingContractsElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/making-contracts/search", params=None, json=body, options=options))
|
|
3978
|
+
|
|
3979
|
+
async def job_audition_search(
|
|
3980
|
+
self,
|
|
3981
|
+
body: schemas.JobAuditionElectionSearchRequest,
|
|
3982
|
+
*,
|
|
3983
|
+
options: RequestOptions | None = None,
|
|
3984
|
+
) -> schemas.JobAuditionElectionSearchResponse:
|
|
3985
|
+
"""Search Job Audition Elections
|
|
3986
|
+
|
|
3987
|
+
``POST /api/v2/western/electional/job-audition/search``
|
|
3988
|
+
"""
|
|
3989
|
+
return cast("schemas.JobAuditionElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/job-audition/search", params=None, json=body, options=options))
|
|
3990
|
+
|
|
3991
|
+
async def purchase_property_search(
|
|
3992
|
+
self,
|
|
3993
|
+
body: schemas.PurchasePropertyElectionSearchRequest,
|
|
3994
|
+
*,
|
|
3995
|
+
options: RequestOptions | None = None,
|
|
3996
|
+
) -> schemas.PurchasePropertyElectionSearchResponse:
|
|
3997
|
+
"""Search Purchase Property Elections
|
|
3998
|
+
|
|
3999
|
+
``POST /api/v2/western/electional/purchase-property/search``
|
|
4000
|
+
"""
|
|
4001
|
+
return cast("schemas.PurchasePropertyElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/purchase-property/search", params=None, json=body, options=options))
|
|
4002
|
+
|
|
4003
|
+
async def purchase_car_search(
|
|
4004
|
+
self,
|
|
4005
|
+
body: schemas.PurchaseCarElectionSearchRequest,
|
|
4006
|
+
*,
|
|
4007
|
+
options: RequestOptions | None = None,
|
|
4008
|
+
) -> schemas.PurchaseCarElectionSearchResponse:
|
|
4009
|
+
"""Search Purchase Car Elections
|
|
4010
|
+
|
|
4011
|
+
``POST /api/v2/western/electional/purchase-car/search``
|
|
4012
|
+
"""
|
|
4013
|
+
return cast("schemas.PurchaseCarElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/purchase-car/search", params=None, json=body, options=options))
|
|
4014
|
+
|
|
4015
|
+
async def move_into_new_home_search(
|
|
4016
|
+
self,
|
|
4017
|
+
body: schemas.MoveIntoNewHomeElectionSearchRequest,
|
|
4018
|
+
*,
|
|
4019
|
+
options: RequestOptions | None = None,
|
|
4020
|
+
) -> schemas.MoveIntoNewHomeElectionSearchResponse:
|
|
4021
|
+
"""Search Move Into New Home Elections
|
|
4022
|
+
|
|
4023
|
+
``POST /api/v2/western/electional/move-into-new-home/search``
|
|
4024
|
+
"""
|
|
4025
|
+
return cast("schemas.MoveIntoNewHomeElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/move-into-new-home/search", params=None, json=body, options=options))
|
|
4026
|
+
|
|
4027
|
+
async def starting_journey_search(
|
|
4028
|
+
self,
|
|
4029
|
+
body: schemas.StartingJourneyElectionSearchRequest,
|
|
4030
|
+
*,
|
|
4031
|
+
options: RequestOptions | None = None,
|
|
4032
|
+
) -> schemas.StartingJourneyElectionSearchResponse:
|
|
4033
|
+
"""Search Starting Journey Elections
|
|
4034
|
+
|
|
4035
|
+
``POST /api/v2/western/electional/starting-journey/search``
|
|
4036
|
+
"""
|
|
4037
|
+
return cast("schemas.StartingJourneyElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/starting-journey/search", params=None, json=body, options=options))
|
|
4038
|
+
|
|
4039
|
+
async def legal_proceedings_search(
|
|
4040
|
+
self,
|
|
4041
|
+
body: schemas.LegalProceedingsElectionSearchRequest,
|
|
4042
|
+
*,
|
|
4043
|
+
options: RequestOptions | None = None,
|
|
4044
|
+
) -> schemas.LegalProceedingsElectionSearchResponse:
|
|
4045
|
+
"""Search Legal Proceedings Elections
|
|
4046
|
+
|
|
4047
|
+
``POST /api/v2/western/electional/legal-proceedings/search``
|
|
4048
|
+
"""
|
|
4049
|
+
return cast("schemas.LegalProceedingsElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/legal-proceedings/search", params=None, json=body, options=options))
|
|
4050
|
+
|
|
4051
|
+
async def physical_examination_search(
|
|
4052
|
+
self,
|
|
4053
|
+
body: schemas.PhysicalExaminationElectionSearchRequest,
|
|
4054
|
+
*,
|
|
4055
|
+
options: RequestOptions | None = None,
|
|
4056
|
+
) -> schemas.PhysicalExaminationElectionSearchResponse:
|
|
4057
|
+
"""Search Physical Examination Elections
|
|
4058
|
+
|
|
4059
|
+
``POST /api/v2/western/electional/physical-examination/search``
|
|
4060
|
+
"""
|
|
4061
|
+
return cast("schemas.PhysicalExaminationElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/physical-examination/search", params=None, json=body, options=options))
|
|
4062
|
+
|
|
4063
|
+
async def invest_money_search(
|
|
4064
|
+
self,
|
|
4065
|
+
body: schemas.InvestMoneyElectionSearchRequest,
|
|
4066
|
+
*,
|
|
4067
|
+
options: RequestOptions | None = None,
|
|
4068
|
+
) -> schemas.InvestMoneyElectionSearchResponse:
|
|
4069
|
+
"""Search Invest Money Elections
|
|
4070
|
+
|
|
4071
|
+
``POST /api/v2/western/electional/invest-money/search``
|
|
4072
|
+
"""
|
|
4073
|
+
return cast("schemas.InvestMoneyElectionSearchResponse", await self._client.request("POST", "/api/v2/western/electional/invest-money/search", params=None, json=body, options=options))
|
|
4074
|
+
|
|
4075
|
+
|
|
4076
|
+
class AsyncWesternResourceBase:
|
|
4077
|
+
def __init__(self, client: AsyncFreeAstro) -> None:
|
|
4078
|
+
self._client = client
|
|
4079
|
+
self.solar = AsyncWesternSolarResource(client)
|
|
4080
|
+
self.returns = AsyncWesternReturnsResource(client)
|
|
4081
|
+
self.astrocartography = AsyncWesternAstrocartographyResource(client)
|
|
4082
|
+
self.natal = AsyncWesternNatalResource(client)
|
|
4083
|
+
self.transits = AsyncWesternTransitsResource(client)
|
|
4084
|
+
self.profections = AsyncWesternProfectionsResource(client)
|
|
4085
|
+
self.progressions = AsyncWesternProgressionsResource(client)
|
|
4086
|
+
self.directions = AsyncWesternDirectionsResource(client)
|
|
4087
|
+
self.chart_similarity = AsyncWesternChartSimilarityResource(client)
|
|
4088
|
+
self.electional = AsyncWesternElectionalResource(client)
|
|
4089
|
+
|
|
4090
|
+
async def synastry_v1(
|
|
4091
|
+
self,
|
|
4092
|
+
body: schemas.SynastryRequest,
|
|
4093
|
+
*,
|
|
4094
|
+
aspects: bool | None = None,
|
|
4095
|
+
overlays: bool | None = None,
|
|
4096
|
+
scores: bool | None = None,
|
|
4097
|
+
archetypes: bool | None = None,
|
|
4098
|
+
text: bool | None = None,
|
|
4099
|
+
display_point_labels: bool | None = None,
|
|
4100
|
+
display_aspect_labels: bool | None = None,
|
|
4101
|
+
strength_labels: bool | None = None,
|
|
4102
|
+
ranges: bool | None = None,
|
|
4103
|
+
scoring_bucket_definitions: bool | None = None,
|
|
4104
|
+
options: RequestOptions | None = None,
|
|
4105
|
+
) -> schemas.SynastryResponse:
|
|
4106
|
+
"""Get Synastry
|
|
4107
|
+
|
|
4108
|
+
Detailed Western Synastry analysis.
|
|
4109
|
+
Deterministic, data-rich output including aspects, overlays, scoring, and archetypes.
|
|
4110
|
+
Use query parameters to filter the response size.
|
|
4111
|
+
|
|
4112
|
+
``POST /api/v1/western/synastry``
|
|
4113
|
+
"""
|
|
4114
|
+
return cast("schemas.SynastryResponse", await self._client.request("POST", "/api/v1/western/synastry", params=_query({"aspects": aspects, "overlays": overlays, "scores": scores, "archetypes": archetypes, "text": text, "display_point_labels": display_point_labels, "display_aspect_labels": display_aspect_labels, "strength_labels": strength_labels, "ranges": ranges, "scoring_bucket_definitions": scoring_bucket_definitions}), json=body, options=options))
|
|
4115
|
+
|
|
4116
|
+
async def synastry_simplified(
|
|
4117
|
+
self,
|
|
4118
|
+
body: schemas.SynastryRequest,
|
|
4119
|
+
*,
|
|
4120
|
+
options: RequestOptions | None = None,
|
|
4121
|
+
) -> schemas.SynastrySimplifiedResponse:
|
|
4122
|
+
"""Get Synastry Simplified
|
|
4123
|
+
|
|
4124
|
+
Simplified Synastry analysis.
|
|
4125
|
+
Returns highlights, top aspects, scores, and archetype without full aspect/overlay lists.
|
|
4126
|
+
|
|
4127
|
+
``POST /api/v1/western/synastry/simplified``
|
|
4128
|
+
"""
|
|
4129
|
+
return cast("schemas.SynastrySimplifiedResponse", await self._client.request("POST", "/api/v1/western/synastry/simplified", params=None, json=body, options=options))
|
|
4130
|
+
|
|
4131
|
+
async def synastry_summary(
|
|
4132
|
+
self,
|
|
4133
|
+
body: schemas.SynastryRequest,
|
|
4134
|
+
*,
|
|
4135
|
+
options: RequestOptions | None = None,
|
|
4136
|
+
) -> schemas.SynastrySummaryResponse:
|
|
4137
|
+
"""Get Synastry Summary
|
|
4138
|
+
|
|
4139
|
+
Simplified summary of the synastry chart for general audiences.
|
|
4140
|
+
|
|
4141
|
+
``POST /api/v1/western/synastry/summary``
|
|
4142
|
+
"""
|
|
4143
|
+
return cast("schemas.SynastrySummaryResponse", await self._client.request("POST", "/api/v1/western/synastry/summary", params=None, json=body, options=options))
|
|
4144
|
+
|
|
4145
|
+
async def synastrycards_v1(
|
|
4146
|
+
self,
|
|
4147
|
+
body: schemas.SynastryRequest,
|
|
4148
|
+
*,
|
|
4149
|
+
relationship_context: Literal["romantic", "friendship"] | None = None,
|
|
4150
|
+
include_minor_cards: bool | None = None,
|
|
4151
|
+
options: RequestOptions | None = None,
|
|
4152
|
+
) -> schemas.SynastryCardsResponse:
|
|
4153
|
+
"""Get Synastry Cards
|
|
4154
|
+
|
|
4155
|
+
Card-oriented synastry response designed for mobile apps and compatibility features.
|
|
4156
|
+
- Implements a 5-step polarity scoring system (structure + planet-pair + strength)
|
|
4157
|
+
- Fetches rich interpretation blocks from Supabase based on relationship context
|
|
4158
|
+
- Minor aspect cards are excluded by default; opt in with include_minor_cards=true
|
|
4159
|
+
- Returns a summary (archetype, scores, top strengths / challenges + narrative)
|
|
4160
|
+
and up to 15 aspect cards, each with both supportive and challenging blocks.
|
|
4161
|
+
|
|
4162
|
+
``POST /api/v1/western/synastrycards``
|
|
4163
|
+
"""
|
|
4164
|
+
return cast("schemas.SynastryCardsResponse", await self._client.request("POST", "/api/v1/western/synastrycards", params=_query({"relationship_context": relationship_context, "include_minor_cards": include_minor_cards}), json=body, options=options))
|
|
4165
|
+
|
|
4166
|
+
async def synastry_horoscope_v1(
|
|
4167
|
+
self,
|
|
4168
|
+
body: schemas.CouplesHoroscopeRequest,
|
|
4169
|
+
*,
|
|
4170
|
+
relationship_context: Literal["romantic", "friendship"] | None = None,
|
|
4171
|
+
include_timing: bool | None = None,
|
|
4172
|
+
options: RequestOptions | None = None,
|
|
4173
|
+
) -> schemas.CouplesHoroscopeResponse:
|
|
4174
|
+
"""Get Couples Horoscope
|
|
4175
|
+
|
|
4176
|
+
Daily Couples Horoscope V2.
|
|
4177
|
+
- Multi-dimensional scoring (Romance, Stability, Tension, etc.)
|
|
4178
|
+
- Dual-perspective transits (Composite & Synastry)
|
|
4179
|
+
- Deterministic narrative bands (Theme, Core, Shadow)
|
|
4180
|
+
- Integrated relational rituals
|
|
4181
|
+
|
|
4182
|
+
``POST /api/v1/western/synastry/horoscope``
|
|
4183
|
+
"""
|
|
4184
|
+
return cast("schemas.CouplesHoroscopeResponse", await self._client.request("POST", "/api/v1/western/synastry/horoscope", params=_query({"relationship_context": relationship_context, "include_timing": include_timing}), json=body, options=options))
|
|
4185
|
+
|
|
4186
|
+
async def chat(
|
|
4187
|
+
self,
|
|
4188
|
+
body: schemas.WesternChatRequest,
|
|
4189
|
+
*,
|
|
4190
|
+
options: RequestOptions | None = None,
|
|
4191
|
+
) -> schemas.WesternChatResponse:
|
|
4192
|
+
"""Hosted Western Astrology Chat (v2)
|
|
4193
|
+
|
|
4194
|
+
Generate a grounded Western astrology answer from the scoped Western MCP tools.
|
|
4195
|
+
|
|
4196
|
+
``POST /api/v2/western/chat``
|
|
4197
|
+
"""
|
|
4198
|
+
return cast("schemas.WesternChatResponse", await self._client.request("POST", "/api/v2/western/chat", params=None, json=body, options=options))
|
|
4199
|
+
|
|
4200
|
+
async def synastry(
|
|
4201
|
+
self,
|
|
4202
|
+
body: schemas.SynastryRequest,
|
|
4203
|
+
*,
|
|
4204
|
+
aspects: bool | None = None,
|
|
4205
|
+
overlays: bool | None = None,
|
|
4206
|
+
scores: bool | None = None,
|
|
4207
|
+
archetypes: bool | None = None,
|
|
4208
|
+
text: bool | None = None,
|
|
4209
|
+
display_point_labels: bool | None = None,
|
|
4210
|
+
display_aspect_labels: bool | None = None,
|
|
4211
|
+
strength_labels: bool | None = None,
|
|
4212
|
+
ranges: bool | None = None,
|
|
4213
|
+
scoring_bucket_definitions: bool | None = None,
|
|
4214
|
+
options: RequestOptions | None = None,
|
|
4215
|
+
) -> schemas.SynastryResponse:
|
|
4216
|
+
"""Get Synastry V2
|
|
4217
|
+
|
|
4218
|
+
``POST /api/v2/western/synastry``
|
|
4219
|
+
"""
|
|
4220
|
+
return cast("schemas.SynastryResponse", await self._client.request("POST", "/api/v2/western/synastry", params=_query({"aspects": aspects, "overlays": overlays, "scores": scores, "archetypes": archetypes, "text": text, "display_point_labels": display_point_labels, "display_aspect_labels": display_aspect_labels, "strength_labels": strength_labels, "ranges": ranges, "scoring_bucket_definitions": scoring_bucket_definitions}), json=body, options=options))
|
|
4221
|
+
|
|
4222
|
+
async def synastrycards(
|
|
4223
|
+
self,
|
|
4224
|
+
body: schemas.SynastryRequest,
|
|
4225
|
+
*,
|
|
4226
|
+
relationship_context: Literal["romantic", "friendship"] | None = None,
|
|
4227
|
+
include_minor_cards: bool | None = None,
|
|
4228
|
+
options: RequestOptions | None = None,
|
|
4229
|
+
) -> schemas.SynastryCardsResponse:
|
|
4230
|
+
"""Get Synastry Cards V2
|
|
4231
|
+
|
|
4232
|
+
``POST /api/v2/western/synastrycards``
|
|
4233
|
+
"""
|
|
4234
|
+
return cast("schemas.SynastryCardsResponse", await self._client.request("POST", "/api/v2/western/synastrycards", params=_query({"relationship_context": relationship_context, "include_minor_cards": include_minor_cards}), json=body, options=options))
|
|
4235
|
+
|
|
4236
|
+
async def synastry_horoscope(
|
|
4237
|
+
self,
|
|
4238
|
+
body: schemas.CouplesHoroscopeV2Request,
|
|
4239
|
+
*,
|
|
4240
|
+
include_timing: bool | None = None,
|
|
4241
|
+
options: RequestOptions | None = None,
|
|
4242
|
+
) -> schemas.CouplesHoroscopeV2Response:
|
|
4243
|
+
"""Get Couples Horoscope V2
|
|
4244
|
+
|
|
4245
|
+
``POST /api/v2/western/synastry/horoscope``
|
|
4246
|
+
"""
|
|
4247
|
+
return cast("schemas.CouplesHoroscopeV2Response", await self._client.request("POST", "/api/v2/western/synastry/horoscope", params=_query({"include_timing": include_timing}), json=body, options=options))
|
|
4248
|
+
|
|
4249
|
+
|
|
4250
|
+
class GeneratedResources:
|
|
4251
|
+
"""Resources for the operations outside the hand-written ones."""
|
|
4252
|
+
|
|
4253
|
+
ai: AiResource
|
|
4254
|
+
chinese: ChineseResource
|
|
4255
|
+
ephemeris: EphemerisResource
|
|
4256
|
+
horoscope: HoroscopeResource
|
|
4257
|
+
natal: NatalResource
|
|
4258
|
+
numerology: NumerologyResource
|
|
4259
|
+
space: SpaceResource
|
|
4260
|
+
transits: TransitsResource
|
|
4261
|
+
vedic: VedicResource
|
|
4262
|
+
|
|
4263
|
+
def _init_generated_resources(self, client: FreeAstro) -> None:
|
|
4264
|
+
self.ai = AiResource(client)
|
|
4265
|
+
self.chinese = ChineseResource(client)
|
|
4266
|
+
self.ephemeris = EphemerisResource(client)
|
|
4267
|
+
self.horoscope = HoroscopeResource(client)
|
|
4268
|
+
self.natal = NatalResource(client)
|
|
4269
|
+
self.numerology = NumerologyResource(client)
|
|
4270
|
+
self.space = SpaceResource(client)
|
|
4271
|
+
self.transits = TransitsResource(client)
|
|
4272
|
+
self.vedic = VedicResource(client)
|
|
4273
|
+
|
|
4274
|
+
|
|
4275
|
+
class AsyncGeneratedResources:
|
|
4276
|
+
"""Resources for the operations outside the hand-written ones."""
|
|
4277
|
+
|
|
4278
|
+
ai: AsyncAiResource
|
|
4279
|
+
chinese: AsyncChineseResource
|
|
4280
|
+
ephemeris: AsyncEphemerisResource
|
|
4281
|
+
horoscope: AsyncHoroscopeResource
|
|
4282
|
+
natal: AsyncNatalResource
|
|
4283
|
+
numerology: AsyncNumerologyResource
|
|
4284
|
+
space: AsyncSpaceResource
|
|
4285
|
+
transits: AsyncTransitsResource
|
|
4286
|
+
vedic: AsyncVedicResource
|
|
4287
|
+
|
|
4288
|
+
def _init_generated_resources(self, client: AsyncFreeAstro) -> None:
|
|
4289
|
+
self.ai = AsyncAiResource(client)
|
|
4290
|
+
self.chinese = AsyncChineseResource(client)
|
|
4291
|
+
self.ephemeris = AsyncEphemerisResource(client)
|
|
4292
|
+
self.horoscope = AsyncHoroscopeResource(client)
|
|
4293
|
+
self.natal = AsyncNatalResource(client)
|
|
4294
|
+
self.numerology = AsyncNumerologyResource(client)
|
|
4295
|
+
self.space = AsyncSpaceResource(client)
|
|
4296
|
+
self.transits = AsyncTransitsResource(client)
|
|
4297
|
+
self.vedic = AsyncVedicResource(client)
|
|
4298
|
+
|
|
4299
|
+
|
|
4300
|
+
@dataclass(frozen=True, slots=True)
|
|
4301
|
+
class OperationInfo:
|
|
4302
|
+
operation_id: str
|
|
4303
|
+
method: str
|
|
4304
|
+
path: str
|
|
4305
|
+
accessor: tuple[str, ...]
|
|
4306
|
+
has_body: bool
|
|
4307
|
+
path_params: tuple[str, ...]
|
|
4308
|
+
required_query: tuple[str, ...]
|
|
4309
|
+
deprecated: bool
|
|
4310
|
+
|
|
4311
|
+
#: Every public operation and the client method that calls it.
|
|
4312
|
+
OPERATIONS: tuple[OperationInfo, ...] = (
|
|
4313
|
+
OperationInfo("simple_natal", "POST", "/natal", ('natal', 'simple'), True, (), (), False),
|
|
4314
|
+
OperationInfo("v1_natal_calculate", "POST", "/api/v1/natal/calculate", ('natal', 'calculate'), True, (), (), False),
|
|
4315
|
+
OperationInfo("v1_natal_report_credits", "GET", "/api/v1/natal/report-credits", ('natal', 'report_credits'), False, (), (), False),
|
|
4316
|
+
OperationInfo("v1_natal_report_job_id", "GET", "/api/v1/natal/report/{job_id}", ('natal', 'report'), False, ('job_id',), (), False),
|
|
4317
|
+
OperationInfo("v1_natal_chart", "POST", "/api/v1/natal/chart/", ('natal', 'chart'), True, (), (), False),
|
|
4318
|
+
OperationInfo("v1_natal_chart_transits", "POST", "/api/v1/natal/chart/transits", ('natal', 'chart_transits'), True, (), (), False),
|
|
4319
|
+
OperationInfo("v1_natal_experimental_transits", "POST", "/api/v1/natal/experimental/transits", ('natal', 'experimental', 'transits'), True, (), (), True),
|
|
4320
|
+
OperationInfo("v1_natal_chart_solar_return", "POST", "/api/v1/natal/chart/solar-return", ('natal', 'chart_solar_return'), True, (), (), False),
|
|
4321
|
+
OperationInfo("v1_natal_experimental_solar_return", "POST", "/api/v1/natal/experimental/solar-return", ('natal', 'experimental', 'solar_return'), True, (), (), True),
|
|
4322
|
+
OperationInfo("v1_natal_chart_secondary_progressions", "POST", "/api/v1/natal/chart/secondary-progressions", ('natal', 'chart_secondary_progressions'), True, (), (), False),
|
|
4323
|
+
OperationInfo("v1_natal_chart_progressions", "POST", "/api/v1/natal/chart/progressions", ('natal', 'chart_progressions'), True, (), (), False),
|
|
4324
|
+
OperationInfo("v1_natal_chart_composite", "POST", "/api/v1/natal/chart/composite", ('natal', 'chart_composite'), True, (), (), False),
|
|
4325
|
+
OperationInfo("v1_natal_chart_synastry", "POST", "/api/v1/natal/chart/synastry", ('natal', 'chart_synastry'), True, (), (), False),
|
|
4326
|
+
OperationInfo("v1_transits_calculate", "POST", "/api/v1/transits/calculate", ('transits', 'calculate'), True, (), (), False),
|
|
4327
|
+
OperationInfo("v1_ephemeris_calculate", "POST", "/api/v1/ephemeris/calculate", ('ephemeris', 'calculate'), True, (), (), False),
|
|
4328
|
+
OperationInfo("v1_ephemeris", "GET", "/api/v1/ephemeris", ('ephemeris', 'get'), False, (), ('start',), False),
|
|
4329
|
+
OperationInfo("v1_sky_events", "GET", "/api/v1/sky-events", ('sky_events', 'list'), False, (), ('date',), False),
|
|
4330
|
+
OperationInfo("v1_numerology_methods", "GET", "/api/v1/numerology/methods", ('numerology', 'methods'), False, (), (), False),
|
|
4331
|
+
OperationInfo("v1_numerology_alphabets", "GET", "/api/v1/numerology/alphabets", ('numerology', 'alphabets'), False, (), (), False),
|
|
4332
|
+
OperationInfo("v1_numerology_profile", "POST", "/api/v1/numerology/profile", ('numerology', 'profile'), True, (), (), False),
|
|
4333
|
+
OperationInfo("v1_vedic_match", "POST", "/api/v1/vedic/match", ('vedic', 'match_v1'), True, (), (), False),
|
|
4334
|
+
OperationInfo("v1_vedic_chart", "POST", "/api/v1/vedic/chart", ('vedic', 'chart_v1'), True, (), (), False),
|
|
4335
|
+
OperationInfo("v1_vedic_calculate", "POST", "/api/v1/vedic/calculate", ('vedic', 'calculate_v1'), True, (), (), False),
|
|
4336
|
+
OperationInfo("v1_vedic_dasha", "POST", "/api/v1/vedic/dasha", ('vedic', 'dasha_v1'), True, (), (), False),
|
|
4337
|
+
OperationInfo("v1_vedic_dasha_insights", "POST", "/api/v1/vedic/dasha/insights", ('vedic', 'dasha_insights_v1'), True, (), (), False),
|
|
4338
|
+
OperationInfo("v1_vedic_transits_insights", "POST", "/api/v1/vedic/transits/insights", ('vedic', 'transits', 'insights'), True, (), (), False),
|
|
4339
|
+
OperationInfo("v1_vedic_gochar_timeline", "POST", "/api/v1/vedic/gochar/timeline", ('vedic', 'gochar', 'timeline_v1'), True, (), (), False),
|
|
4340
|
+
OperationInfo("v1_vedic_gochar_timeline_insights", "POST", "/api/v1/vedic/gochar/timeline/insights", ('vedic', 'gochar', 'timeline_insights_v1'), True, (), (), False),
|
|
4341
|
+
OperationInfo("v1_vedic_yogas", "POST", "/api/v1/vedic/yogas", ('vedic', 'yogas_v1'), True, (), (), False),
|
|
4342
|
+
OperationInfo("v1_vedic_strength", "POST", "/api/v1/vedic/strength", ('vedic', 'strength_v1'), True, (), (), False),
|
|
4343
|
+
OperationInfo("v1_vedic_vargas", "POST", "/api/v1/vedic/vargas", ('vedic', 'vargas_v1'), True, (), (), False),
|
|
4344
|
+
OperationInfo("v1_vedic_compatibility", "POST", "/api/v1/vedic/compatibility", ('vedic', 'compatibility_v1'), True, (), (), False),
|
|
4345
|
+
OperationInfo("v1_vedic_panchang", "POST", "/api/v1/vedic/panchang", ('vedic', 'panchang_v1'), True, (), (), False),
|
|
4346
|
+
OperationInfo("v1_vedic_batch", "POST", "/api/v1/vedic/batch", ('vedic', 'batch'), True, (), (), False),
|
|
4347
|
+
OperationInfo("v1_chinese_bazi", "POST", "/api/v1/chinese/bazi", ('chinese', 'bazi'), True, (), (), False),
|
|
4348
|
+
OperationInfo("v1_chinese_bazi_flow", "POST", "/api/v1/chinese/bazi/flow", ('chinese', 'bazi_flow'), True, (), (), False),
|
|
4349
|
+
OperationInfo("v1_chinese_bazi_dictionary", "GET", "/api/v1/chinese/bazi/dictionary", ('chinese', 'bazi_dictionary'), False, (), (), False),
|
|
4350
|
+
OperationInfo("v1_chinese_today", "GET", "/api/v1/chinese/today", ('chinese', 'today'), False, (), (), False),
|
|
4351
|
+
OperationInfo("v1_chinese_calendar_date", "GET", "/api/v1/chinese/calendar/{date}", ('chinese', 'calendar'), False, ('date',), (), False),
|
|
4352
|
+
OperationInfo("v1_chinese_bazi_time_correction", "POST", "/api/v1/chinese/bazi/time-correction", ('chinese', 'bazi_time_correction'), True, (), (), False),
|
|
4353
|
+
OperationInfo("v1_chinese_bazi_synastry", "POST", "/api/v1/chinese/bazi/synastry", ('chinese', 'bazi_synastry'), True, (), (), False),
|
|
4354
|
+
OperationInfo("v1_chinese_bazi_lifespan", "POST", "/api/v1/chinese/bazi/lifespan", ('chinese', 'bazi_lifespan'), True, (), (), False),
|
|
4355
|
+
OperationInfo("v1_chinese_bazi_health", "POST", "/api/v1/chinese/bazi/health", ('chinese', 'bazi_health'), True, (), (), False),
|
|
4356
|
+
OperationInfo("v1_geo_search", "GET", "/api/v1/geo/search", ('geo', 'search_v1'), False, (), (), True),
|
|
4357
|
+
OperationInfo("v1_western_synastry", "POST", "/api/v1/western/synastry", ('western', 'synastry_v1'), True, (), (), False),
|
|
4358
|
+
OperationInfo("v1_western_synastry_simplified", "POST", "/api/v1/western/synastry/simplified", ('western', 'synastry_simplified'), True, (), (), False),
|
|
4359
|
+
OperationInfo("v1_western_synastry_summary", "POST", "/api/v1/western/synastry/summary", ('western', 'synastry_summary'), True, (), (), False),
|
|
4360
|
+
OperationInfo("v1_western_synastrycards", "POST", "/api/v1/western/synastrycards", ('western', 'synastrycards_v1'), True, (), (), False),
|
|
4361
|
+
OperationInfo("v1_western_synastry_horoscope", "POST", "/api/v1/western/synastry/horoscope", ('western', 'synastry_horoscope_v1'), True, (), (), False),
|
|
4362
|
+
OperationInfo("v1_western_solar_calculate", "POST", "/api/v1/western/solar/calculate", ('western', 'solar', 'calculate'), True, (), (), False),
|
|
4363
|
+
OperationInfo("v1_western_returns_calculate", "POST", "/api/v1/western/returns/calculate", ('western', 'returns', 'calculate'), True, (), (), False),
|
|
4364
|
+
OperationInfo("v1_western_astrocartography_lines", "POST", "/api/v1/western/astrocartography/lines", ('western', 'astrocartography', 'lines'), True, (), (), False),
|
|
4365
|
+
OperationInfo("v1_western_astrocartography_recommendations", "POST", "/api/v1/western/astrocartography/recommendations", ('western', 'astrocartography', 'recommendations'), True, (), (), False),
|
|
4366
|
+
OperationInfo("v1_western_astrocartography_parans", "POST", "/api/v1/western/astrocartography/parans", ('western', 'astrocartography', 'parans'), True, (), (), False),
|
|
4367
|
+
OperationInfo("v1_western_astrocartography_relocation", "POST", "/api/v1/western/astrocartography/relocation", ('western', 'astrocartography', 'relocation'), True, (), (), False),
|
|
4368
|
+
OperationInfo("v1_western_astrocartography_city_check", "POST", "/api/v1/western/astrocartography/city-check", ('western', 'astrocartography', 'city_check'), True, (), (), False),
|
|
4369
|
+
OperationInfo("v1_western_natal_insights", "POST", "/api/v1/western/natal/insights", ('western', 'natal', 'insights'), True, (), (), False),
|
|
4370
|
+
OperationInfo("v1_western_natal_insights_index_documents", "POST", "/api/v1/western/natal/insights/index-documents", ('western', 'natal', 'insights_index_documents'), True, (), (), False),
|
|
4371
|
+
OperationInfo("v1_western_transits_insights", "POST", "/api/v1/western/transits/insights", ('western', 'transits', 'insights'), True, (), (), False),
|
|
4372
|
+
OperationInfo("v1_western_transits_timeline", "POST", "/api/v1/western/transits/timeline", ('western', 'transits', 'timeline'), True, (), (), False),
|
|
4373
|
+
OperationInfo("v1_western_transits_timeline_index_documents", "POST", "/api/v1/western/transits/timeline/index-documents", ('western', 'transits', 'timeline_index_documents'), True, (), (), False),
|
|
4374
|
+
OperationInfo("v1_western_transits_search", "POST", "/api/v1/western/transits/search", ('western', 'transits', 'search'), True, (), (), False),
|
|
4375
|
+
OperationInfo("v1_western_profections_annual", "POST", "/api/v1/western/profections/annual", ('western', 'profections', 'annual'), True, (), (), False),
|
|
4376
|
+
OperationInfo("v1_western_progressions_secondary", "POST", "/api/v1/western/progressions/secondary", ('western', 'progressions', 'secondary'), True, (), (), False),
|
|
4377
|
+
OperationInfo("v1_western_directions_primary", "POST", "/api/v1/western/directions/primary", ('western', 'directions', 'primary'), True, (), (), False),
|
|
4378
|
+
OperationInfo("v1_western_directions_primary_exact_aspects", "POST", "/api/v1/western/directions/primary/exact-aspects", ('western', 'directions', 'primary_exact_aspects'), True, (), (), False),
|
|
4379
|
+
OperationInfo("v1_western_directions_primary_search", "POST", "/api/v1/western/directions/primary/search", ('western', 'directions', 'primary_search'), True, (), (), False),
|
|
4380
|
+
OperationInfo("v1_western_directions_primary_calendar", "POST", "/api/v1/western/directions/primary/calendar", ('western', 'directions', 'primary_calendar'), True, (), (), False),
|
|
4381
|
+
OperationInfo("v1_western_progressions_converse_secondary", "POST", "/api/v1/western/progressions/converse-secondary", ('western', 'progressions', 'converse_secondary'), True, (), (), False),
|
|
4382
|
+
OperationInfo("v1_western_progressions_tertiary", "POST", "/api/v1/western/progressions/tertiary", ('western', 'progressions', 'tertiary'), True, (), (), False),
|
|
4383
|
+
OperationInfo("v1_western_progressions_quotidian", "POST", "/api/v1/western/progressions/quotidian", ('western', 'progressions', 'quotidian'), True, (), (), False),
|
|
4384
|
+
OperationInfo("v1_western_progressions_quaternary", "POST", "/api/v1/western/progressions/quaternary", ('western', 'progressions', 'quaternary'), True, (), (), False),
|
|
4385
|
+
OperationInfo("v1_western_progressions_secondary_exact_ingresses", "POST", "/api/v1/western/progressions/secondary/exact-ingresses", ('western', 'progressions', 'secondary_exact_ingresses'), True, (), (), False),
|
|
4386
|
+
OperationInfo("v1_western_progressions_converse_secondary_exact_ingresses", "POST", "/api/v1/western/progressions/converse-secondary/exact-ingresses", ('western', 'progressions', 'converse_secondary_exact_ingresses'), True, (), (), False),
|
|
4387
|
+
OperationInfo("v1_western_progressions_tertiary_exact_ingresses", "POST", "/api/v1/western/progressions/tertiary/exact-ingresses", ('western', 'progressions', 'tertiary_exact_ingresses'), True, (), (), False),
|
|
4388
|
+
OperationInfo("v1_western_progressions_quotidian_exact_ingresses", "POST", "/api/v1/western/progressions/quotidian/exact-ingresses", ('western', 'progressions', 'quotidian_exact_ingresses'), True, (), (), False),
|
|
4389
|
+
OperationInfo("v1_western_progressions_quaternary_exact_ingresses", "POST", "/api/v1/western/progressions/quaternary/exact-ingresses", ('western', 'progressions', 'quaternary_exact_ingresses'), True, (), (), False),
|
|
4390
|
+
OperationInfo("v1_western_progressions_secondary_exact_aspects", "POST", "/api/v1/western/progressions/secondary/exact-aspects", ('western', 'progressions', 'secondary_exact_aspects'), True, (), (), False),
|
|
4391
|
+
OperationInfo("v1_western_progressions_converse_secondary_exact_aspects", "POST", "/api/v1/western/progressions/converse-secondary/exact-aspects", ('western', 'progressions', 'converse_secondary_exact_aspects'), True, (), (), False),
|
|
4392
|
+
OperationInfo("v1_western_progressions_tertiary_exact_aspects", "POST", "/api/v1/western/progressions/tertiary/exact-aspects", ('western', 'progressions', 'tertiary_exact_aspects'), True, (), (), False),
|
|
4393
|
+
OperationInfo("v1_western_progressions_quotidian_exact_aspects", "POST", "/api/v1/western/progressions/quotidian/exact-aspects", ('western', 'progressions', 'quotidian_exact_aspects'), True, (), (), False),
|
|
4394
|
+
OperationInfo("v1_western_progressions_quaternary_exact_aspects", "POST", "/api/v1/western/progressions/quaternary/exact-aspects", ('western', 'progressions', 'quaternary_exact_aspects'), True, (), (), False),
|
|
4395
|
+
OperationInfo("v1_western_progressions_secondary_calendar", "POST", "/api/v1/western/progressions/secondary/calendar", ('western', 'progressions', 'secondary_calendar'), True, (), (), False),
|
|
4396
|
+
OperationInfo("v1_western_progressions_converse_secondary_calendar", "POST", "/api/v1/western/progressions/converse-secondary/calendar", ('western', 'progressions', 'converse_secondary_calendar'), True, (), (), False),
|
|
4397
|
+
OperationInfo("v1_western_progressions_tertiary_calendar", "POST", "/api/v1/western/progressions/tertiary/calendar", ('western', 'progressions', 'tertiary_calendar'), True, (), (), False),
|
|
4398
|
+
OperationInfo("v1_western_progressions_quotidian_calendar", "POST", "/api/v1/western/progressions/quotidian/calendar", ('western', 'progressions', 'quotidian_calendar'), True, (), (), False),
|
|
4399
|
+
OperationInfo("v1_western_progressions_quaternary_calendar", "POST", "/api/v1/western/progressions/quaternary/calendar", ('western', 'progressions', 'quaternary_calendar'), True, (), (), False),
|
|
4400
|
+
OperationInfo("v1_western_signs_sun", "POST", "/api/v1/western/signs/sun", ('western', 'signs', 'sun'), True, (), (), False),
|
|
4401
|
+
OperationInfo("v1_western_signs_moon", "POST", "/api/v1/western/signs/moon", ('western', 'signs', 'moon'), True, (), (), False),
|
|
4402
|
+
OperationInfo("v1_western_signs_rising", "POST", "/api/v1/western/signs/rising", ('western', 'signs', 'rising'), True, (), (), False),
|
|
4403
|
+
OperationInfo("v1_western_signs_midheaven", "POST", "/api/v1/western/signs/midheaven", ('western', 'signs', 'midheaven'), True, (), (), False),
|
|
4404
|
+
OperationInfo("v1_horoscope_daily_sign", "GET", "/api/v1/horoscope/daily/sign", ('horoscope', 'daily', 'sign_v1'), False, (), ('sign',), False),
|
|
4405
|
+
OperationInfo("v1_horoscope_daily_bulk", "GET", "/api/v1/horoscope/daily/bulk", ('horoscope', 'daily', 'bulk'), False, (), (), False),
|
|
4406
|
+
OperationInfo("v1_horoscope_daily_personal", "POST", "/api/v1/horoscope/daily/personal", ('horoscope', 'daily', 'personal_v1'), True, (), (), False),
|
|
4407
|
+
OperationInfo("v1_ai_generate", "POST", "/api/v1/ai/generate", ('ai', 'generate'), True, (), (), False),
|
|
4408
|
+
OperationInfo("v1_moon_phase", "GET", "/api/v1/moon/phase", ('moon', 'phase'), False, (), (), False),
|
|
4409
|
+
OperationInfo("v1_moon_month", "GET", "/api/v1/moon/month", ('moon', 'month'), False, (), ('year', 'month'), False),
|
|
4410
|
+
OperationInfo("v1_space_chart", "POST", "/api/v1/space/chart", ('space', 'chart'), True, (), (), False),
|
|
4411
|
+
OperationInfo("v1_space_chart_svg", "POST", "/api/v1/space/chart/svg", ('space', 'chart_svg'), True, (), (), False),
|
|
4412
|
+
OperationInfo("v2_geo_search", "GET", "/api/v2/geo/search", ('geo', 'search'), False, (), ('q',), False),
|
|
4413
|
+
OperationInfo("v2_horoscope_daily_sign", "GET", "/api/v2/horoscope/daily/sign", ('horoscope', 'daily', 'sign_v2'), False, (), ('sign',), False),
|
|
4414
|
+
OperationInfo("v2_horoscope_daily_personal", "POST", "/api/v2/horoscope/daily/personal", ('horoscope', 'daily', 'personal_v2'), True, (), (), False),
|
|
4415
|
+
OperationInfo("v2_vedic_chat", "POST", "/api/v2/vedic/chat", ('vedic', 'chat'), True, (), (), False),
|
|
4416
|
+
OperationInfo("v2_vedic_calculate", "POST", "/api/v2/vedic/calculate", ('vedic', 'calculate'), True, (), (), False),
|
|
4417
|
+
OperationInfo("v2_vedic_kp", "POST", "/api/v2/vedic/kp", ('vedic', 'kp'), True, (), (), False),
|
|
4418
|
+
OperationInfo("v2_vedic_kp_render", "POST", "/api/v2/vedic/kp/render", ('vedic', 'kp_render'), True, (), (), False),
|
|
4419
|
+
OperationInfo("v2_vedic_chart", "POST", "/api/v2/vedic/chart", ('vedic', 'chart'), True, (), (), False),
|
|
4420
|
+
OperationInfo("v2_vedic_visual_chart", "POST", "/api/v2/vedic/visual/chart", ('vedic', 'visual', 'chart'), True, (), (), False),
|
|
4421
|
+
OperationInfo("v2_vedic_vargas", "POST", "/api/v2/vedic/vargas", ('vedic', 'vargas'), True, (), (), False),
|
|
4422
|
+
OperationInfo("v2_vedic_dasha", "POST", "/api/v2/vedic/dasha", ('vedic', 'dasha'), True, (), (), False),
|
|
4423
|
+
OperationInfo("v2_vedic_dasha_insights", "POST", "/api/v2/vedic/dasha/insights", ('vedic', 'dasha_insights'), True, (), (), False),
|
|
4424
|
+
OperationInfo("v2_vedic_gochar_timeline", "POST", "/api/v2/vedic/gochar/timeline", ('vedic', 'gochar', 'timeline'), True, (), (), False),
|
|
4425
|
+
OperationInfo("v2_vedic_gochar_timeline_insights", "POST", "/api/v2/vedic/gochar/timeline/insights", ('vedic', 'gochar', 'timeline_insights'), True, (), (), False),
|
|
4426
|
+
OperationInfo("v2_vedic_horoscope_daily_sign", "GET", "/api/v2/vedic/horoscope/daily/sign", ('vedic', 'horoscope', 'daily_sign'), False, (), ('sign',), False),
|
|
4427
|
+
OperationInfo("v2_vedic_horoscope_daily_bulk", "GET", "/api/v2/vedic/horoscope/daily/bulk", ('vedic', 'horoscope', 'daily_bulk'), False, (), (), False),
|
|
4428
|
+
OperationInfo("v2_vedic_horoscope_daily_personal", "POST", "/api/v2/vedic/horoscope/daily/personal", ('vedic', 'horoscope', 'daily_personal'), True, (), (), False),
|
|
4429
|
+
OperationInfo("v2_vedic_yogas", "POST", "/api/v2/vedic/yogas", ('vedic', 'yogas'), True, (), (), False),
|
|
4430
|
+
OperationInfo("v2_vedic_strength", "POST", "/api/v2/vedic/strength", ('vedic', 'strength'), True, (), (), False),
|
|
4431
|
+
OperationInfo("v2_vedic_compatibility", "POST", "/api/v2/vedic/compatibility", ('vedic', 'compatibility'), True, (), (), False),
|
|
4432
|
+
OperationInfo("v2_vedic_match", "POST", "/api/v2/vedic/match", ('vedic', 'match'), True, (), (), False),
|
|
4433
|
+
OperationInfo("v2_vedic_panchang", "POST", "/api/v2/vedic/panchang", ('vedic', 'panchang'), True, (), (), False),
|
|
4434
|
+
OperationInfo("v2_vedic_qa", "POST", "/api/v2/vedic/qa", ('vedic', 'qa'), True, (), (), False),
|
|
4435
|
+
OperationInfo("v2_vedic_muhurat_search", "POST", "/api/v2/vedic/muhurat/search", ('vedic', 'muhurat', 'search'), True, (), (), False),
|
|
4436
|
+
OperationInfo("v2_vedic_muhurat_personalized_search", "POST", "/api/v2/vedic/muhurat/personalized-search", ('vedic', 'muhurat', 'personalized_search'), True, (), (), False),
|
|
4437
|
+
OperationInfo("v2_western_chat", "POST", "/api/v2/western/chat", ('western', 'chat'), True, (), (), False),
|
|
4438
|
+
OperationInfo("v2_western_synastry", "POST", "/api/v2/western/synastry", ('western', 'synastry'), True, (), (), False),
|
|
4439
|
+
OperationInfo("v2_western_synastrycards", "POST", "/api/v2/western/synastrycards", ('western', 'synastrycards'), True, (), (), False),
|
|
4440
|
+
OperationInfo("v2_western_chart_similarity_famous_people", "POST", "/api/v2/western/chart-similarity/famous-people", ('western', 'chart_similarity', 'famous_people'), True, (), (), False),
|
|
4441
|
+
OperationInfo("v2_western_synastry_horoscope", "POST", "/api/v2/western/synastry/horoscope", ('western', 'synastry_horoscope'), True, (), (), False),
|
|
4442
|
+
OperationInfo("v2_western_electional_wedding_search", "POST", "/api/v2/western/electional/wedding/search", ('western', 'electional', 'wedding_search'), True, (), (), False),
|
|
4443
|
+
OperationInfo("v2_western_electional_making_contracts_search", "POST", "/api/v2/western/electional/making-contracts/search", ('western', 'electional', 'making_contracts_search'), True, (), (), False),
|
|
4444
|
+
OperationInfo("v2_western_electional_job_audition_search", "POST", "/api/v2/western/electional/job-audition/search", ('western', 'electional', 'job_audition_search'), True, (), (), False),
|
|
4445
|
+
OperationInfo("v2_western_electional_purchase_property_search", "POST", "/api/v2/western/electional/purchase-property/search", ('western', 'electional', 'purchase_property_search'), True, (), (), False),
|
|
4446
|
+
OperationInfo("v2_western_electional_purchase_car_search", "POST", "/api/v2/western/electional/purchase-car/search", ('western', 'electional', 'purchase_car_search'), True, (), (), False),
|
|
4447
|
+
OperationInfo("v2_western_electional_move_into_new_home_search", "POST", "/api/v2/western/electional/move-into-new-home/search", ('western', 'electional', 'move_into_new_home_search'), True, (), (), False),
|
|
4448
|
+
OperationInfo("v2_western_electional_starting_journey_search", "POST", "/api/v2/western/electional/starting-journey/search", ('western', 'electional', 'starting_journey_search'), True, (), (), False),
|
|
4449
|
+
OperationInfo("v2_western_electional_legal_proceedings_search", "POST", "/api/v2/western/electional/legal-proceedings/search", ('western', 'electional', 'legal_proceedings_search'), True, (), (), False),
|
|
4450
|
+
OperationInfo("v2_western_electional_physical_examination_search", "POST", "/api/v2/western/electional/physical-examination/search", ('western', 'electional', 'physical_examination_search'), True, (), (), False),
|
|
4451
|
+
OperationInfo("v2_western_electional_invest_money_search", "POST", "/api/v2/western/electional/invest-money/search", ('western', 'electional', 'invest_money_search'), True, (), (), False),
|
|
4452
|
+
OperationInfo("v3_horoscope_daily_sign", "GET", "/api/v3/horoscope/daily/sign", ('horoscope', 'daily', 'sign'), False, (), ('sign',), False),
|
|
4453
|
+
OperationInfo("v3_horoscope_daily_personal", "POST", "/api/v3/horoscope/daily/personal", ('horoscope', 'daily', 'personal'), True, (), (), False),
|
|
4454
|
+
OperationInfo("v3_horoscope_weekly_personal", "POST", "/api/v3/horoscope/weekly/personal", ('horoscope', 'weekly', 'personal'), True, (), (), False),
|
|
4455
|
+
)
|