@roxyapi/sdk 1.2.70 → 1.2.71

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.
package/AGENTS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @roxyapi/sdk - Agent Guide
2
2
 
3
- TypeScript SDK for RoxyAPI. 12+ domains (Western astrology, Vedic astrology, numerology, tarot, human design, forecast, biorhythm, I Ching, crystals, dreams, angel numbers, location) plus utility namespaces (usage, languages). One API key, fully typed, zero runtime dependencies.
3
+ TypeScript SDK for RoxyAPI. 14+ domains (Western astrology, Vedic astrology, forecast, human design, Chinese astrology, feng shui, numerology, tarot, biorhythm, I Ching, crystals, dreams, angel numbers, location) plus utility namespaces (usage, languages). One API key, fully typed, zero runtime dependencies.
4
4
 
5
5
  > Before writing any code with this SDK, read `docs/llms-full.txt` in this package for the complete method reference with examples.
6
6
 
@@ -59,7 +59,7 @@ Type `roxy.` to see all available namespaces. Type `roxy.{domain}.` to see every
59
59
  | `roxy.languages` | List the response languages accepted by the `lang` query parameter on every i18n-aware endpoint |
60
60
  <!-- END:DOMAINS -->
61
61
 
62
- **Total:** 160+ endpoints across 12+ product domains plus usage and languages. The table above auto-syncs from `specs/openapi.json` at release time.
62
+ **Total:** 209+ endpoints across 14+ product domains plus usage and languages. The table above auto-syncs from `specs/openapi.json` at release time.
63
63
 
64
64
  ## Quality guidelines for agents
65
65
 
@@ -122,7 +122,7 @@ await roxy.numerology.calculateLifePath({
122
122
  });
123
123
  ```
124
124
 
125
- Supported: `astrology`, `vedicAstrology`, `numerology`, `tarot`, `biorhythm`, `iching`, `crystals`, `angelNumbers`. English-only: `dreams`, `location`, `usage`, `languages`. To list supported codes at runtime, call `roxy.languages.listLanguages()`.
125
+ Supported: `astrology`, `vedicAstrology`, `forecast`, `humanDesign`, `chineseAstrology`, `fengShui`, `numerology`, `tarot`, `biorhythm`, `iching`, `crystals`, `angelNumbers`. English-only: `dreams`, `location`, `usage`, `languages`. The two Chinese scripts (`zh-Hans`, `zh-Hant`) currently ship on Chinese astrology and feng shui; every other domain answers those codes in English per field. To list supported codes at runtime, call `roxy.languages.listLanguages()`.
126
126
 
127
127
  ### Error handling
128
128
 
@@ -153,7 +153,7 @@ console.log(data.sign, data.overview);
153
153
 
154
154
  ## Common tasks
155
155
 
156
- Ordered by domain priority (Western, Vedic, Numerology, Tarot, Biorhythm, I Ching, Crystals, Dreams, Angel Numbers, Location, Usage, Languages).
156
+ Ordered by domain priority (Western, Vedic, Forecast, Human Design, Chinese Astrology, Feng Shui, Numerology, Tarot, Biorhythm, I Ching, Crystals, Dreams, Angel Numbers, Location, Usage, Languages).
157
157
 
158
158
  | Task | Code |
159
159
  |------|------|
package/README.md CHANGED
@@ -15,7 +15,7 @@ TypeScript SDK for astrology, Vedic astrology, numerology, tarot, and more.
15
15
 
16
16
  One API key. Fully typed. Verified against NASA JPL Horizons.
17
17
 
18
- The fastest way to add natal charts, daily horoscopes, synastry, Vedic kundli, tarot spreads, numerology, human design bodygraphs, and transit forecasts to Node.js apps, backends, and AI agents. 12+ domains behind a single [Roxy](https://roxyapi.com) subscription, interpretations in eight languages.
18
+ The fastest way to add natal charts, daily horoscopes, synastry, Vedic kundli, tarot spreads, numerology, human design bodygraphs, and transit forecasts to Node.js apps, backends, and AI agents. 14+ domains behind a single [Roxy](https://roxyapi.com) subscription, interpretations in 10+ languages.
19
19
 
20
20
  ## Install
21
21
 
@@ -261,7 +261,54 @@ const { data: timeline } = await roxy.forecast.generateTimeline({
261
261
  // timeline.events[0].date, timeline.events[0].domain, timeline.events[0].description, timeline.events[0].significance
262
262
  ```
263
263
 
264
- ### 7. Biorhythm API (daily check-in, forecast, compatibility)
264
+ ### 7. Chinese astrology API (BaZi four pillars, zodiac sign)
265
+
266
+ BaZi (Four Pillars of Destiny), the twelve-animal zodiac, and the lunisolar calendar with its almanac. The school splits that make two calculators disagree are typed request parameters with named defaults, echoed back in a `conventions` object on every response, so a chart can be reproduced rather than guessed at. The zodiac routes answer the high-volume consumer questions; BaZi and the almanac are where an app goes deeper.
267
+
268
+ ```typescript
269
+ // BaZi Four Pillars. The anchor call: the rest of the domain reads off these four pillars.
270
+ // `timezone` takes the IANA name, resolved to the DST-correct offset for the birth date.
271
+ const { data: bazi } = await roxy.chineseAstrology.generateBaziChart({
272
+ body: { date: '1990-07-04', time: '10:12:00', timezone: 'America/New_York' },
273
+ });
274
+ // bazi.pillars[n].position ('year' | 'month' | 'day' | 'hour'), .stem.element, .branch.animal
275
+ // bazi.pillars[n].tenGod.name, .hiddenStems, .naYin
276
+ // bazi.dayMaster.element, bazi.zodiacAnimal, bazi.fiveElements, bazi.conventions, bazi.summary
277
+
278
+ // Chinese zodiac sign. Defaults `yearBoundary` to 'lunar-new-year', the folk rule people mean
279
+ // when they say which animal they are. Pass 'li-chun' to match the classical BaZi boundary.
280
+ const { data: sign } = await roxy.chineseAstrology.calculateZodiacAnimal({
281
+ body: { date: '1990-07-04' },
282
+ });
283
+ // sign.animal.name ('Horse'), sign.animal.element ('Fire'), sign.animal.polarity
284
+ // sign.element is the YEAR STEM element ('Metal'), not the element of the animal
285
+ // sign.yearPillar, sign.interpretation
286
+ ```
287
+
288
+ ### 8. Feng shui API (Kua number, flying star chart)
289
+
290
+ Kua numbers with the full Eight Mansions map ranked best to worst, Xuan Kong flying star natal charts for any of the nine periods and 24 mountains, annual and monthly star plates, and the four annual afflictions with exact degree spans. Chinese years resolve at Li Chun, computed astronomically rather than assumed, so the annual charts change over on the real boundary.
291
+
292
+ ```typescript
293
+ // Kua number: one birth date and a gender gives the personal directions everything else reads off.
294
+ const { data: kua } = await roxy.fengShui.calculateKuaNumber({
295
+ body: { date: '1990-07-04', gender: 'female' },
296
+ });
297
+ // kua.kua (8), kua.group ('east' | 'west'), kua.trigram.english ('Mountain')
298
+ // kua.sectors[n].direction, .starName, .nature ('auspicious' | 'inauspicious'), .rank, .domain
299
+
300
+ // Flying star natal chart. Period plus facing gives the nine palaces with base, mountain
301
+ // and water stars. Send `facing` (a mountain id like 'bing' or a compass label like 'S2')
302
+ // or `facingDegrees`, not neither.
303
+ const { data: chart } = await roxy.fengShui.generateFlyingStarChart({
304
+ body: { period: 9, facing: 'S2' },
305
+ });
306
+ // chart.facing.label ('S2'), chart.sitting.label, chart.structure.name ('Double Star at Sitting')
307
+ // chart.palaces[n].palace, .base, .mountain, .water, .reading
308
+ // chart.mountainCenterStar, chart.waterCenterStar, chart.straddling
309
+ ```
310
+
311
+ ### 9. Biorhythm API (daily check-in, forecast, compatibility)
265
312
 
266
313
  Zero competition domain. Steady search volume with the top Google result being a static calculator page. Pure land-grab for wellness, productivity, sports, and couples apps.
267
314
 
@@ -277,7 +324,7 @@ const { data: forecast } = await roxy.biorhythm.getForecast({
277
324
  });
278
325
  ```
279
326
 
280
- ### 8. I Ching API (daily hexagram, coin cast, 64-hexagram catalog)
327
+ ### 10. I Ching API (daily hexagram, coin cast, 64-hexagram catalog)
281
328
 
282
329
  Meditation apps, decision-making tools, and wisdom chatbots. `i ching API` and `hexagram API` are the keywords.
283
330
 
@@ -291,7 +338,7 @@ const { data: hexagrams } = await roxy.iching.listHexagrams({});
291
338
  // hexagrams.hexagrams has 64 entries
292
339
  ```
293
340
 
294
- ### 9. Crystals API (by zodiac, by chakra, birthstone)
341
+ ### 11. Crystals API (by zodiac, by chakra, birthstone)
295
342
 
296
343
  Crystal retail and metaphysical shops use these to build "crystals for [sign]" and "[chakra] chakra stones" pages.
297
344
 
@@ -307,7 +354,7 @@ const { data: byChakra } = await roxy.crystals.getCrystalsByChakra({ path: { cha
307
354
  const { data: birthstone } = await roxy.crystals.getBirthstones({ path: { month: 4 } });
308
355
  ```
309
356
 
310
- ### 10. Dream interpretation API (symbol dictionary, search)
357
+ ### 12. Dream interpretation API (symbol dictionary, search)
311
358
 
312
359
  Thousands of dream symbols. `dream meaning` is among the highest-volume spiritual searches on Google. Journal apps, AI therapy chatbots, and self-discovery products are the buyers.
313
360
 
@@ -321,7 +368,7 @@ const { data: results } = await roxy.dreams.searchDreamSymbols({ query: { q: 'fl
321
368
  // results.symbols is an array of matching symbols
322
369
  ```
323
370
 
324
- ### 11. Angel Numbers API (1111, 222, 333 meanings plus universal lookup)
371
+ ### 13. Angel Numbers API (1111, 222, 333 meanings plus universal lookup)
325
372
 
326
373
  Gen Z spiritual-tok fuel. `111 meaning`, `222 meaning`, `333 angel number` are evergreen viral queries with massive shareability.
327
374
 
@@ -383,7 +430,7 @@ const roxy = new Roxy({ client });
383
430
 
384
431
  ## Multi-language responses
385
432
 
386
- Interpretations and editorial text are available in eight languages: English (`en`), Turkish (`tr`), German (`de`), Spanish (`es`), French (`fr`), Hindi (`hi`), Portuguese (`pt`), Russian (`ru`). Pass `query: { lang }` on any supported endpoint:
433
+ Interpretations and editorial text are available in 10 languages: English (`en`), Turkish (`tr`), German (`de`), Spanish (`es`), French (`fr`), Hindi (`hi`), Portuguese (`pt`), Russian (`ru`), Chinese Simplified (`zh-Hans`), Chinese Traditional (`zh-Hant`). Pass `query: { lang }` on any supported endpoint:
387
434
 
388
435
  ```typescript
389
436
  const { data } = await roxy.tarot.getDailyCard({
@@ -392,7 +439,7 @@ const { data } = await roxy.tarot.getDailyCard({
392
439
  });
393
440
  ```
394
441
 
395
- Supported: `astrology`, `vedicAstrology`, `numerology`, `tarot`, `biorhythm`, `iching`, `crystals`, `angelNumbers`. English-only: `dreams`, `location`, `usage`. Untranslated fields fall back to English.
442
+ Supported: `astrology`, `vedicAstrology`, `forecast`, `humanDesign`, `chineseAstrology`, `fengShui`, `numerology`, `tarot`, `biorhythm`, `iching`, `crystals`, `angelNumbers`. English-only: `dreams`, `location`, `usage`. The two Chinese scripts (`zh-Hans`, `zh-Hant`) currently ship on Chinese astrology and feng shui; every other domain answers those codes in English per field. Untranslated fields fall back to English.
396
443
 
397
444
  ## Error handling
398
445
 
package/dist/factory.cjs CHANGED
@@ -4011,7 +4011,7 @@ var Roxy = class _Roxy extends HeyApiClient {
4011
4011
  };
4012
4012
 
4013
4013
  // src/version.ts
4014
- var VERSION = "1.2.70";
4014
+ var VERSION = "1.2.71";
4015
4015
 
4016
4016
  // src/factory.ts
4017
4017
  function createRoxy(auth) {
package/dist/factory.js CHANGED
@@ -3188,7 +3188,7 @@ var Roxy = class _Roxy extends HeyApiClient {
3188
3188
  };
3189
3189
 
3190
3190
  // src/version.ts
3191
- var VERSION = "1.2.70";
3191
+ var VERSION = "1.2.71";
3192
3192
 
3193
3193
  // src/factory.ts
3194
3194
  function createRoxy(auth) {
@@ -35421,7 +35421,7 @@ export type GetChineseAstrologyCalendarDayByDateResponses = {
35421
35421
  */
35422
35422
  nameLocalized?: string;
35423
35423
  /**
35424
- * English display name of the officer.
35424
+ * English display name of the officer. Canonical, identical in every language, so it stays safe to compare against in code. The translation is in nameLocalized.
35425
35425
  */
35426
35426
  name: string;
35427
35427
  /**
@@ -35447,9 +35447,13 @@ export type GetChineseAstrologyCalendarDayByDateResponses = {
35447
35447
  */
35448
35448
  number: number;
35449
35449
  /**
35450
- * English display name of the mansion.
35450
+ * English display name of the mansion. Canonical, identical in every language. The translation is in nameLocalized. Note the mansion has no string id: number is the stable 1 to 28 key, because five of the 28 share a pinyin spelling.
35451
35451
  */
35452
35452
  name: string;
35453
+ /**
35454
+ * Display name of the mansion in the requested language. Absent when lang is en, and absent when a language has no entry for this mansion, so a caller falls back to name rather than rendering a blank.
35455
+ */
35456
+ nameLocalized?: string;
35453
35457
  /**
35454
35458
  * The mansion in Chinese. A data field, identical in every language.
35455
35459
  */
@@ -35467,9 +35471,13 @@ export type GetChineseAstrologyCalendarDayByDateResponses = {
35467
35471
  */
35468
35472
  planet: string;
35469
35473
  /**
35470
- * Animal emblem of the mansion, the third character of its full Chinese name.
35474
+ * Animal emblem of the mansion, the third character of its full Chinese name. English and canonical, identical in every language, matching how clashAnimal behaves on the same response. The translation is in animalLocalized.
35471
35475
  */
35472
35476
  animal: string;
35477
+ /**
35478
+ * Animal emblem in the requested language. Absent when lang is en, and absent when a language has no entry, so a caller falls back to animal.
35479
+ */
35480
+ animalLocalized?: string;
35473
35481
  };
35474
35482
  /**
35475
35483
  * The zodiac animal the day clashes with, which is the animal six branches away from the day branch. Anyone born in that animal year traditionally avoids the day for anything important.
@@ -35790,7 +35798,7 @@ export type GetChineseAstrologyCalendarMonthlyResponses = {
35790
35798
  */
35791
35799
  nameLocalized?: string;
35792
35800
  /**
35793
- * English display name of the officer.
35801
+ * English display name of the officer. Canonical, identical in every language, so it stays safe to compare against in code. The translation is in nameLocalized.
35794
35802
  */
35795
35803
  name: string;
35796
35804
  /**
@@ -35816,9 +35824,13 @@ export type GetChineseAstrologyCalendarMonthlyResponses = {
35816
35824
  */
35817
35825
  number: number;
35818
35826
  /**
35819
- * English display name of the mansion.
35827
+ * English display name of the mansion. Canonical, identical in every language. The translation is in nameLocalized. Note the mansion has no string id: number is the stable 1 to 28 key, because five of the 28 share a pinyin spelling.
35820
35828
  */
35821
35829
  name: string;
35830
+ /**
35831
+ * Display name of the mansion in the requested language. Absent when lang is en, and absent when a language has no entry for this mansion, so a caller falls back to name rather than rendering a blank.
35832
+ */
35833
+ nameLocalized?: string;
35822
35834
  /**
35823
35835
  * The mansion in Chinese. A data field, identical in every language.
35824
35836
  */
@@ -35836,9 +35848,13 @@ export type GetChineseAstrologyCalendarMonthlyResponses = {
35836
35848
  */
35837
35849
  planet: string;
35838
35850
  /**
35839
- * Animal emblem of the mansion, the third character of its full Chinese name.
35851
+ * Animal emblem of the mansion, the third character of its full Chinese name. English and canonical, identical in every language, matching how clashAnimal behaves on the same response. The translation is in animalLocalized.
35840
35852
  */
35841
35853
  animal: string;
35854
+ /**
35855
+ * Animal emblem in the requested language. Absent when lang is en, and absent when a language has no entry, so a caller falls back to animal.
35856
+ */
35857
+ animalLocalized?: string;
35842
35858
  };
35843
35859
  /**
35844
35860
  * The zodiac animal the day clashes with, which is the animal six branches away from the day branch. Anyone born in that animal year traditionally avoids the day for anything important.
@@ -36163,7 +36179,7 @@ export type PostChineseAstrologyCalendarAuspiciousDaysResponses = {
36163
36179
  */
36164
36180
  nameLocalized?: string;
36165
36181
  /**
36166
- * English display name of the officer.
36182
+ * English display name of the officer. Canonical, identical in every language, so it stays safe to compare against in code. The translation is in nameLocalized.
36167
36183
  */
36168
36184
  name: string;
36169
36185
  /**
@@ -36189,9 +36205,13 @@ export type PostChineseAstrologyCalendarAuspiciousDaysResponses = {
36189
36205
  */
36190
36206
  number: number;
36191
36207
  /**
36192
- * English display name of the mansion.
36208
+ * English display name of the mansion. Canonical, identical in every language. The translation is in nameLocalized. Note the mansion has no string id: number is the stable 1 to 28 key, because five of the 28 share a pinyin spelling.
36193
36209
  */
36194
36210
  name: string;
36211
+ /**
36212
+ * Display name of the mansion in the requested language. Absent when lang is en, and absent when a language has no entry for this mansion, so a caller falls back to name rather than rendering a blank.
36213
+ */
36214
+ nameLocalized?: string;
36195
36215
  /**
36196
36216
  * The mansion in Chinese. A data field, identical in every language.
36197
36217
  */
@@ -36209,9 +36229,13 @@ export type PostChineseAstrologyCalendarAuspiciousDaysResponses = {
36209
36229
  */
36210
36230
  planet: string;
36211
36231
  /**
36212
- * Animal emblem of the mansion, the third character of its full Chinese name.
36232
+ * Animal emblem of the mansion, the third character of its full Chinese name. English and canonical, identical in every language, matching how clashAnimal behaves on the same response. The translation is in animalLocalized.
36213
36233
  */
36214
36234
  animal: string;
36235
+ /**
36236
+ * Animal emblem in the requested language. Absent when lang is en, and absent when a language has no entry, so a caller falls back to animal.
36237
+ */
36238
+ animalLocalized?: string;
36215
36239
  };
36216
36240
  /**
36217
36241
  * The zodiac animal the day clashes with, which is the animal six branches away from the day branch. Anyone born in that animal year traditionally avoids the day for anything important.
@@ -37442,7 +37466,7 @@ export type PostFengShuiFlyingStarsNatalResponses = {
37442
37466
  */
37443
37467
  id: string;
37444
37468
  /**
37445
- * Display name of the structure. Always English, whatever the lang parameter says.
37469
+ * Display name of the structure, TRANSLATED IN PLACE under the lang parameter. Switch on structure.id, which is the stable machine value in every language. Unlike the star and formation names beside it, this field has no nameLocalized sibling.
37446
37470
  */
37447
37471
  name: string;
37448
37472
  /**
@@ -38235,7 +38259,11 @@ export type GetFengShuiAfflictionsByYearResponses = {
38235
38259
  */
38236
38260
  taiSui: {
38237
38261
  /**
38238
- * Display name of the affliction. Always English, whatever the lang parameter says, so it stays safe to compare against in code.
38262
+ * Stable machine key for the affliction: taiSui, suiPo, sanSha or fiveYellow. Always English, identical in every language, and the field to branch on. Use this rather than name, which is display copy and does translate.
38263
+ */
38264
+ id: string;
38265
+ /**
38266
+ * Display name of the affliction, translated in place when lang is set (Tai Sui in English, 太岁 under zh-Hans). Display copy, never a comparison key: branch on id instead.
38239
38267
  */
38240
38268
  name: string;
38241
38269
  /**
@@ -38306,7 +38334,11 @@ export type GetFengShuiAfflictionsByYearResponses = {
38306
38334
  */
38307
38335
  suiPo: {
38308
38336
  /**
38309
- * Display name of the affliction. Always English, whatever the lang parameter says, so it stays safe to compare against in code.
38337
+ * Stable machine key for the affliction: taiSui, suiPo, sanSha or fiveYellow. Always English, identical in every language, and the field to branch on. Use this rather than name, which is display copy and does translate.
38338
+ */
38339
+ id: string;
38340
+ /**
38341
+ * Display name of the affliction, translated in place when lang is set (Tai Sui in English, 太岁 under zh-Hans). Display copy, never a comparison key: branch on id instead.
38310
38342
  */
38311
38343
  name: string;
38312
38344
  /**
@@ -38369,7 +38401,11 @@ export type GetFengShuiAfflictionsByYearResponses = {
38369
38401
  */
38370
38402
  sanSha: {
38371
38403
  /**
38372
- * Display name of the affliction. Always English, whatever the lang parameter says, so it stays safe to compare against in code.
38404
+ * Stable machine key for the affliction: taiSui, suiPo, sanSha or fiveYellow. Always English, identical in every language, and the field to branch on. Use this rather than name, which is display copy and does translate.
38405
+ */
38406
+ id: string;
38407
+ /**
38408
+ * Display name of the affliction, translated in place when lang is set (Tai Sui in English, 太岁 under zh-Hans). Display copy, never a comparison key: branch on id instead.
38373
38409
  */
38374
38410
  name: string;
38375
38411
  /**
@@ -38413,7 +38449,7 @@ export type GetFengShuiAfflictionsByYearResponses = {
38413
38449
  */
38414
38450
  id: string;
38415
38451
  /**
38416
- * Display name of the part. Always English, whatever the lang parameter says.
38452
+ * Display name of the part, translated in place when lang is set. Display copy, never a comparison key: branch on id instead.
38417
38453
  */
38418
38454
  name: string;
38419
38455
  /**
@@ -38473,7 +38509,11 @@ export type GetFengShuiAfflictionsByYearResponses = {
38473
38509
  */
38474
38510
  fiveYellow: {
38475
38511
  /**
38476
- * Display name of the affliction. Always English, whatever the lang parameter says, so it stays safe to compare against in code.
38512
+ * Stable machine key for the affliction: taiSui, suiPo, sanSha or fiveYellow. Always English, identical in every language, and the field to branch on. Use this rather than name, which is display copy and does translate.
38513
+ */
38514
+ id: string;
38515
+ /**
38516
+ * Display name of the affliction, translated in place when lang is set (Tai Sui in English, 太岁 under zh-Hans). Display copy, never a comparison key: branch on id instead.
38477
38517
  */
38478
38518
  name: string;
38479
38519
  /**