Skip to content

Commit f7a5dc2

Browse files
release: v0.1.40
1 parent 84ca985 commit f7a5dc2

54 files changed

Lines changed: 2970 additions & 92 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ var city = search!.Cities![0];
4747
<!-- BEGIN:DOMAINS -->
4848
| Accessor | What it covers |
4949
|----------|----------------|
50-
| `roxy.Astrology` | Western astrology API for natal birth charts, daily, weekly, and monthly horoscopes with unique content per sign, syn... |
50+
| `roxy.Astrology` | Western astrology API for natal birth charts, daily, weekly, monthly, and yearly horoscopes with unique content per s... |
5151
| `roxy.VedicAstrology` | Vedic astrology (Jyotish) and KP API for kundli generation with 15 divisional charts (D1-D60), Ashtakoot Gun Milan ku... |
5252
| `roxy.Forecast` | Forecast API that merges upcoming transit aspects, sign ingresses, retrograde stations, new and full moons, biorhythm... |
5353
| `roxy.HumanDesign` | Generate the full Human Design bodygraph from a birth moment: type, strategy, inner authority, profile, definition, i... |

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ Type `roxy.` to see every domain. Type `roxy.Astrology.` to see every endpoint i
107107
<!-- BEGIN:DOMAINS -->
108108
| Accessor | What it covers |
109109
|----------|----------------|
110-
| `roxy.Astrology` | Western astrology API for natal birth charts, daily, weekly, and monthly horoscopes with unique content per sign, syn... |
110+
| `roxy.Astrology` | Western astrology API for natal birth charts, daily, weekly, monthly, and yearly horoscopes with unique content per s... |
111111
| `roxy.VedicAstrology` | Vedic astrology (Jyotish) and KP API for kundli generation with 15 divisional charts (D1-D60), Ashtakoot Gun Milan ku... |
112112
| `roxy.Forecast` | Forecast API that merges upcoming transit aspects, sign ingresses, retrograde stations, new and full moons, biorhythm... |
113113
| `roxy.HumanDesign` | Generate the full Human Design bodygraph from a birth moment: type, strategy, inner authority, profile, definition, i... |

docs/llms-full.txt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ How the calls below map to the API:
2727
<!-- BEGIN:METHODS -->
2828
## Western Astrology - `roxy.Astrology`
2929

30-
Western astrology API for natal birth charts, daily, weekly, and monthly horoscopes with unique content per sign, syn...
30+
Western astrology API for natal birth charts, daily, weekly, monthly, and yearly horoscopes with unique content per s...
3131

3232
```csharp
3333
// Get all zodiac signs - Complete zodiac signs list with dates and elements
@@ -102,15 +102,18 @@ await roxy.Astrology.CompositeChart.PostAsync(new() { Person1 = new() { Date = n
102102
// Compatibility Score. Relationship compatibility analysis with category breakdown
103103
await roxy.Astrology.CompatibilityScore.PostAsync(new() { Person1 = new() { Date = new Date(1990, 7, 15), Time = new Time(14, 30, 0), Latitude = 40.7128, Longitude = -74.006, Timezone = new() { Double = -5 } }, Person2 = new() { Date = new Date(1990, 7, 15), Time = new Time(14, 30, 0), Latitude = 40.7128, Longitude = -74.006, Timezone = new() { Double = -5 } } });
104104

105-
// Daily horoscope by zodiac sign - Transit-based forecast with house activations
105+
// Daily horoscope by zodiac sign - Transit-based editorial columns
106106
await roxy.Astrology.Horoscope["aries"].Daily.GetAsync(c => { c.QueryParameters.Date = new Date(2026, 4, 3); c.QueryParameters.Timezone = "America/New_York"; });
107107

108-
// Weekly horoscope by zodiac sign - 7-day transit forecast
108+
// Weekly horoscope by zodiac sign - Seven-day editorial column
109109
await roxy.Astrology.Horoscope["aries"].Weekly.GetAsync(c => { c.QueryParameters.Date = new Date(2026, 4, 3); c.QueryParameters.Timezone = "America/New_York"; });
110110

111-
// Monthly horoscope by zodiac sign - 30-day transit forecast with key dates
111+
// Monthly horoscope by zodiac sign - Editorial column with key dates
112112
await roxy.Astrology.Horoscope["aries"].Monthly.GetAsync(c => { c.QueryParameters.Date = new Date(2026, 4, 3); c.QueryParameters.Timezone = "America/New_York"; });
113113

114+
// Yearly horoscope by zodiac sign - Year ahead forecast with themes, key periods, eclipses and retrogrades
115+
await roxy.Astrology.Horoscope["aries"].Yearly.GetAsync(c => { c.QueryParameters.Year = 2026; c.QueryParameters.Timezone = "America/New_York"; });
116+
114117
// Planetary Return Chart - Saturn return, Jupiter return, and inner planet cycles
115118
await roxy.Astrology.PlanetaryReturns.PostAsync(new() { BirthDate = new Date(1990, 7, 15), BirthTime = new Time(14, 30, 0), ApproximateDate = new Date(2026, 8, 15), Latitude = 40.7128, Longitude = -74.006, Timezone = new() { Double = -5 } });
116119

specs/openapi.json

Lines changed: 1052 additions & 48 deletions
Large diffs are not rendered by default.

src/Generated/Astrology/Horoscope/Item/Daily/DailyGetResponse.cs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ public partial class DailyGetResponse : IAdditionalDataHolder, IParsable
3737
#nullable restore
3838
#else
3939
public string Career { get; set; }
40+
#endif
41+
/// <summary>The full column for this period, ready to run as one piece, with paragraphs separated by a blank line. Names the events driving it and the dates they fall on, read into the whole-sign houses of this sign. Typically 120 to 180 words. The six section fields are the same reading split by topic, so render either shape and never both. Deterministic: the same sign and period always returns the same column.</summary>
42+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
43+
#nullable enable
44+
public string? Column { get; set; }
45+
#nullable restore
46+
#else
47+
public string Column { get; set; }
4048
#endif
4149
/// <summary>Most compatible zodiac signs for this sign. Trine partners (same element) followed by a sextile partner (complementary element). Use for compatibility widgets, dating app onboarding, and horoscope cards.</summary>
4250
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -54,8 +62,16 @@ public partial class DailyGetResponse : IAdditionalDataHolder, IParsable
5462
#else
5563
public string Date { get; set; }
5664
#endif
57-
/// <summary>Overall energy intensity for this sign today (1-10). Higher when more transits activate this sign directly. Useful for content widgets and visual indicators.</summary>
65+
/// <summary>Overall energy for this sign today (1-10). Derived from how many aspects are in force between the planets, how tight they are, whether they are harmonious or challenging, and which houses they fall in for this sign, so a busy day rates higher than a quiet one and a harmonious day higher than a hostile one of the same weight. Useful for content widgets and visual indicators.</summary>
5866
public double? EnergyRating { get; set; }
67+
/// <summary>The dated astronomical events this reading is built on, earliest first. Every field in every row can be checked against an independent authority, so a column can be fact-checked before it is published. Empty on a period in which nothing exact happens, where the reading falls back to the standing positions instead.</summary>
68+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
69+
#nullable enable
70+
public List<global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events>? Events { get; set; }
71+
#nullable restore
72+
#else
73+
public List<global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events> Events { get; set; }
74+
#endif
5975
/// <summary>Financial outlook and money-related guidance.</summary>
6076
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
6177
#nullable enable
@@ -80,15 +96,15 @@ public partial class DailyGetResponse : IAdditionalDataHolder, IParsable
8096
#else
8197
public string Love { get; set; }
8298
#endif
83-
/// <summary>Lucky color for the day, derived from the sign element.</summary>
99+
/// <summary>Lucky color for the day, drawn from the three colors of the sign element and selected by the planet governing the reading.</summary>
84100
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
85101
#nullable enable
86102
public string? LuckyColor { get; set; }
87103
#nullable restore
88104
#else
89105
public string LuckyColor { get; set; }
90106
#endif
91-
/// <summary>Lucky number for the day.</summary>
107+
/// <summary>Lucky number for the day, 1 to 9, from the traditional planetary number correspondence applied to the planet that governs this sign today. Not a random draw and not a function of the date.</summary>
92108
public double? LuckyNumber { get; set; }
93109
/// <summary>Current lunar phase (New Moon, Waxing Crescent, First Quarter, Waxing Gibbous, Full Moon, Waning Gibbous, Last Quarter, Waning Crescent).</summary>
94110
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -150,9 +166,11 @@ public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
150166
{ "activeTransits", n => { ActiveTransits = n.GetCollectionOfPrimitiveValues<string>()?.AsList(); } },
151167
{ "advice", n => { Advice = n.GetStringValue(); } },
152168
{ "career", n => { Career = n.GetStringValue(); } },
169+
{ "column", n => { Column = n.GetStringValue(); } },
153170
{ "compatibleSigns", n => { CompatibleSigns = n.GetCollectionOfPrimitiveValues<string>()?.AsList(); } },
154171
{ "date", n => { Date = n.GetStringValue(); } },
155172
{ "energyRating", n => { EnergyRating = n.GetDoubleValue(); } },
173+
{ "events", n => { Events = n.GetCollectionOfObjectValues<global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events>(global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events.CreateFromDiscriminatorValue)?.AsList(); } },
156174
{ "finance", n => { Finance = n.GetStringValue(); } },
157175
{ "health", n => { Health = n.GetStringValue(); } },
158176
{ "love", n => { Love = n.GetStringValue(); } },
@@ -174,9 +192,11 @@ public virtual void Serialize(ISerializationWriter writer)
174192
writer.WriteCollectionOfPrimitiveValues<string>("activeTransits", ActiveTransits);
175193
writer.WriteStringValue("advice", Advice);
176194
writer.WriteStringValue("career", Career);
195+
writer.WriteStringValue("column", Column);
177196
writer.WriteCollectionOfPrimitiveValues<string>("compatibleSigns", CompatibleSigns);
178197
writer.WriteStringValue("date", Date);
179198
writer.WriteDoubleValue("energyRating", EnergyRating);
199+
writer.WriteCollectionOfObjectValues<global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events>("events", Events);
180200
writer.WriteStringValue("finance", Finance);
181201
writer.WriteStringValue("health", Health);
182202
writer.WriteStringValue("love", Love);
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
// <auto-generated/>
2+
#pragma warning disable CS0618
3+
using Microsoft.Kiota.Abstractions.Extensions;
4+
using Microsoft.Kiota.Abstractions.Serialization;
5+
using System.Collections.Generic;
6+
using System.IO;
7+
using System;
8+
namespace RoxyApi.Astrology.Horoscope.Item.Daily
9+
{
10+
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
11+
#pragma warning disable CS1591
12+
public partial class DailyGetResponse_events : IAdditionalDataHolder, IParsable
13+
#pragma warning restore CS1591
14+
{
15+
/// <summary>Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.</summary>
16+
public IDictionary<string, object> AdditionalData { get; set; }
17+
/// <summary>Angle formed, on aspect events only: conjunction, sextile, square, trine, opposition, semi-sextile, quincunx, semi-square, or sesquiquadrate.</summary>
18+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
19+
#nullable enable
20+
public string? Aspect { get; set; }
21+
#nullable restore
22+
#else
23+
public string Aspect { get; set; }
24+
#endif
25+
/// <summary>Exact instant the event perfects, UTC, to the second. Verifiable against NASA JPL Horizons for a position event and against the US Naval Observatory for a lunar phase or eclipse.</summary>
26+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
27+
#nullable enable
28+
public string? At { get; set; }
29+
#nullable restore
30+
#else
31+
public string At { get; set; }
32+
#endif
33+
/// <summary>Bodies involved, canonical English regardless of the requested language so the value stays safe to switch on. Two entries for an aspect, faster body first. One entry for an ingress, a station, a lunar phase, or an eclipse.</summary>
34+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
35+
#nullable enable
36+
public List<string>? Bodies { get; set; }
37+
#nullable restore
38+
#else
39+
public List<string> Bodies { get; set; }
40+
#endif
41+
/// <summary>Whole-sign house the event falls in, counted from the queried sign, 1 to 12. This is what turns one global sky event into a statement about this reader.</summary>
42+
public int? House { get; set; }
43+
/// <summary>Sign the event falls in, lowercase, where it has exactly one. Absent for an aspect whose two bodies stand in different signs.</summary>
44+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
45+
#nullable enable
46+
public string? Sign { get; set; }
47+
#nullable restore
48+
#else
49+
public string Sign { get; set; }
50+
#endif
51+
/// <summary>End of the window this event holds open, UTC, given only where a bounded window is a real fact about it: the orb span of an aspect, the sign span of an ingress or a season, the retrograde span of a station. Absent for a lunar phase or an eclipse, which are instants and not spans.</summary>
52+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
53+
#nullable enable
54+
public string? Through { get; set; }
55+
#nullable restore
56+
#else
57+
public string Through { get; set; }
58+
#endif
59+
/// <summary>Kind of event. aspect is an exact angle between two moving bodies, sign-ingress a body entering a new sign, retrograde-station a body turning retrograde or direct, lunar-phase one of the four quarters, eclipse a solar or lunar eclipse, and solar-season the Sun entering a sign.</summary>
60+
public global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events_type? Type { get; set; }
61+
/// <summary>
62+
/// Instantiates a new <see cref="global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events"/> and sets the default values.
63+
/// </summary>
64+
public DailyGetResponse_events()
65+
{
66+
AdditionalData = new Dictionary<string, object>();
67+
}
68+
/// <summary>
69+
/// Creates a new instance of the appropriate class based on discriminator value
70+
/// </summary>
71+
/// <returns>A <see cref="global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events"/></returns>
72+
/// <param name="parseNode">The parse node to use to read the discriminator value and create the object</param>
73+
public static global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events CreateFromDiscriminatorValue(IParseNode parseNode)
74+
{
75+
if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode));
76+
return new global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events();
77+
}
78+
/// <summary>
79+
/// The deserialization information for the current model
80+
/// </summary>
81+
/// <returns>A IDictionary&lt;string, Action&lt;IParseNode&gt;&gt;</returns>
82+
public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
83+
{
84+
return new Dictionary<string, Action<IParseNode>>
85+
{
86+
{ "aspect", n => { Aspect = n.GetStringValue(); } },
87+
{ "at", n => { At = n.GetStringValue(); } },
88+
{ "bodies", n => { Bodies = n.GetCollectionOfPrimitiveValues<string>()?.AsList(); } },
89+
{ "house", n => { House = n.GetIntValue(); } },
90+
{ "sign", n => { Sign = n.GetStringValue(); } },
91+
{ "through", n => { Through = n.GetStringValue(); } },
92+
{ "type", n => { Type = n.GetEnumValue<global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events_type>(); } },
93+
};
94+
}
95+
/// <summary>
96+
/// Serializes information the current object
97+
/// </summary>
98+
/// <param name="writer">Serialization writer to use to serialize this model</param>
99+
public virtual void Serialize(ISerializationWriter writer)
100+
{
101+
if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer));
102+
writer.WriteStringValue("aspect", Aspect);
103+
writer.WriteStringValue("at", At);
104+
writer.WriteCollectionOfPrimitiveValues<string>("bodies", Bodies);
105+
writer.WriteIntValue("house", House);
106+
writer.WriteStringValue("sign", Sign);
107+
writer.WriteStringValue("through", Through);
108+
writer.WriteEnumValue<global::RoxyApi.Astrology.Horoscope.Item.Daily.DailyGetResponse_events_type>("type", Type);
109+
writer.WriteAdditionalData(AdditionalData);
110+
}
111+
}
112+
}
113+
#pragma warning restore CS0618
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// <auto-generated/>
2+
using System.Runtime.Serialization;
3+
using System;
4+
namespace RoxyApi.Astrology.Horoscope.Item.Daily
5+
{
6+
/// <summary>Kind of event. aspect is an exact angle between two moving bodies, sign-ingress a body entering a new sign, retrograde-station a body turning retrograde or direct, lunar-phase one of the four quarters, eclipse a solar or lunar eclipse, and solar-season the Sun entering a sign.</summary>
7+
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
8+
public enum DailyGetResponse_events_type
9+
{
10+
[EnumMember(Value = "aspect")]
11+
#pragma warning disable CS1591
12+
Aspect,
13+
#pragma warning restore CS1591
14+
[EnumMember(Value = "sign-ingress")]
15+
#pragma warning disable CS1591
16+
SignIngress,
17+
#pragma warning restore CS1591
18+
[EnumMember(Value = "retrograde-station")]
19+
#pragma warning disable CS1591
20+
RetrogradeStation,
21+
#pragma warning restore CS1591
22+
[EnumMember(Value = "lunar-phase")]
23+
#pragma warning disable CS1591
24+
LunarPhase,
25+
#pragma warning restore CS1591
26+
[EnumMember(Value = "eclipse")]
27+
#pragma warning disable CS1591
28+
Eclipse,
29+
#pragma warning restore CS1591
30+
[EnumMember(Value = "solar-season")]
31+
#pragma warning disable CS1591
32+
SolarSeason,
33+
#pragma warning restore CS1591
34+
}
35+
}

0 commit comments

Comments
 (0)