openephemeris-com · Schema
NatalChartEnhancedResponse
Enhanced natal chart response with additional calculations. Adjusted to match test expectations: aspects as a list, optional aspect_matrix, permissive calculation_metadata, and chart_type echo.
CompanyAstrologyAIAstronomyDataAPI
Properties
| Name | Type | Description |
|---|---|---|
| angles | object | Chart angles. Present on every response EXCEPT when configuration.coordinate_system is heliocentric or barycentric: with no observer on Earth there is no horizon, hence no Ascendant or Midheaven, and |
| arabic_parts | object | Arabic parts payload |
| aspect_matrix | object | Aspect matrix summary |
| aspect_patterns | object | Detected aspect patterns (Grand Trine, T-Square, Yod, Kite, Stellium, Grand Cross) |
| aspect_perfection | object | |
| aspects | array | Enhanced aspects list |
| calculation_metadata | object | Calculation metadata |
| chart_type | object | Chart type identifier |
| declination_aspects | object | Declination-based aspects |
| element_balance | object | Elemental balance |
| elongations | object | Sun-relative elongations (per-body separation and signed east/west delta) (opt-in). |
| fixed_stars | object | Fixed star data |
| gauquelin_sectors | object | |
| harmonics | object | Harmonic chart positions keyed by harmonic number |
| hemisphere_emphasis | object | Hemisphere weights |
| houses | object | House information. Present on every response EXCEPT when configuration.coordinate_system is heliocentric or barycentric (no horizon, no houses); the key is then omitted rather than emptied. |
| human_design_gates | object | Human Design / I Ching gate + line mappings from ecliptic longitude (math-only; includes mapping version) (opt-in). |
| lunar_phase | object | Lunar phase context (phase name, illumination, phase angle, waxing/waning, days-to-new/full) (opt-in). |
| midpoints | object | Calculated midpoints between planet pairs |
| omitted_bodies | arraynull | Bodies that were requested (or are in the chosen object_set/asteroid_groups) but not computed because the chart date is outside the span of their own JPL kernel. Absent when nothing was omitted. Each |
| patterns_by_type | object | Patterns organized by type for easier filtering |
| planets | object | Planetary positions keyed by name |
| sect_determination | object | Sect analysis |
| solar_relationships | object | Solar relationship / visibility classifications (e.g., cazimi/combust/under-beams) and Mercury/Venus morning/evening star context. |
| subject | object | Subject information |
| success | boolean | Response success status |
| traditional_points | object | Present on /ephemeris/natal-chart when traditional_points asks for it (never on the comparative routes that reuse this schema). almuten_figuris {points (the five places: sun, moon, ascendant, lot_of_f |
| visual | object | Inline chart wheel visual, present only when include_visual=true was requested. |
| void_of_course | object | Void-of-Course Moon context (status, start/end window, last major aspect, sign context) (opt-in). |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/openephemeris-com/json-schema/openephemeris-com-natal-chart-enhanced-response-schema.json",
"title": "NatalChartEnhancedResponse",
"description": "Enhanced natal chart response with additional calculations.\n\nAdjusted to match test expectations: aspects as a list, optional aspect_matrix,\npermissive calculation_metadata, and chart_type echo.",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/openephemeris-com-openapi.json#/components/schemas/NatalChartEnhancedResponse",
"additionalProperties": true,
"properties": {
"angles": {
"allOf": [
{
"$ref": "#/$defs/AnglesResponse"
}
],
"description": "Chart angles. Present on every response EXCEPT when configuration.coordinate_system is heliocentric or barycentric: with no observer on Earth there is no horizon, hence no Ascendant or Midheaven, and the key is omitted rather than zeroed.",
"x-oe-absent-when-coordinate-system": [
"heliocentric",
"barycentric"
]
},
"arabic_parts": {
"$ref": "#/$defs/ArabicPartsResponse",
"description": "Arabic parts payload"
},
"aspect_matrix": {
"$ref": "#/$defs/AspectMatrixResponse",
"description": "Aspect matrix summary"
},
"aspect_patterns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/AspectPattern"
},
"type": "array"
}
],
"description": "Detected aspect patterns (Grand Trine, T-Square, Yod, Kite, Stellium, Grand Cross)",
"title": "Aspect Patterns"
},
"aspect_perfection": {
"$ref": "#/$defs/AspectPerfection"
},
"aspects": {
"description": "Enhanced aspects list",
"items": {
"$ref": "#/$defs/EnhancedAspectResponse"
},
"title": "Aspects",
"type": "array"
},
"calculation_metadata": {
"allOf": [
{
"$ref": "#/$defs/CalculationMetadata"
}
],
"description": "Calculation metadata"
},
"chart_type": {
"anyOf": [
{
"type": "string"
}
],
"description": "Chart type identifier",
"title": "Chart Type"
},
"declination_aspects": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/DeclinationAspect"
},
"type": "array"
}
],
"description": "Declination-based aspects",
"title": "Declination Aspects"
},
"element_balance": {
"anyOf": [
{
"additionalProperties": {
"type": "number"
},
"type": "object"
}
],
"description": "Elemental balance",
"title": "Element Balance"
},
"elongations": {
"anyOf": [
{
"type": "object"
}
],
"description": "Sun-relative elongations (per-body separation and signed east/west delta) (opt-in).",
"title": "Elongations"
},
"fixed_stars": {
"$ref": "#/$defs/FixedStarsResponse",
"description": "Fixed star data"
},
"gauquelin_sectors": {
"$ref": "#/$defs/GauquelinSectors"
},
"harmonics": {
"anyOf": [
{
"additionalProperties": {
"type": "object"
},
"type": "object"
}
],
"description": "Harmonic chart positions keyed by harmonic number",
"title": "Harmonics"
},
"hemisphere_emphasis": {
"anyOf": [
{
"additionalProperties": {
"type": "number"
},
"type": "object"
}
],
"description": "Hemisphere weights",
"title": "Hemisphere Emphasis"
},
"houses": {
"allOf": [
{
"$ref": "#/$defs/HousesResponse"
}
],
"description": "House information. Present on every response EXCEPT when configuration.coordinate_system is heliocentric or barycentric (no horizon, no houses); the key is then omitted rather than emptied.",
"x-oe-absent-when-coordinate-system": [
"heliocentric",
"barycentric"
]
},
"human_design_gates": {
"anyOf": [
{
"type": "object"
}
],
"description": "Human Design / I Ching gate + line mappings from ecliptic longitude (math-only; includes mapping version) (opt-in).",
"title": "Human Design Gates"
},
"lunar_phase": {
"anyOf": [
{
"type": "object"
}
],
"description": "Lunar phase context (phase name, illumination, phase angle, waxing/waning, days-to-new/full) (opt-in).",
"title": "Lunar Phase"
},
"midpoints": {
"anyOf": [
{
"items": {
"type": "object"
},
"type": "array"
}
],
"description": "Calculated midpoints between planet pairs",
"title": "Midpoints"
},
"omitted_bodies": {
"description": "Bodies that were requested (or are in the chosen object_set/asteroid_groups) but not computed because the chart date is outside the span of their own JPL kernel. Absent when nothing was omitted. Each entry carries the body's valid_from/valid_to. Applies to the bodies that have a per-body kernel (the centaurs, trans-Neptunian objects and extended asteroids: 1600-2200 CE); the planets, nodes and sb441 main-belt asteroids cover 1550-2650 and a date outside that is rejected outright.",
"items": {
"$ref": "#/$defs/OmittedBody"
},
"title": "Omitted Bodies",
"type": [
"array",
"null"
]
},
"patterns_by_type": {
"anyOf": [
{
"additionalProperties": {
"items": {
"type": "object"
},
"type": "array"
},
"type": "object"
}
],
"description": "Patterns organized by type for easier filtering",
"title": "Patterns By Type"
},
"planets": {
"additionalProperties": {
"$ref": "#/$defs/PlanetResponse"
},
"description": "Planetary positions keyed by name",
"title": "Planets",
"type": "object"
},
"sect_determination": {
"$ref": "#/$defs/SectDeterminationResponse",
"description": "Sect analysis"
},
"solar_relationships": {
"anyOf": [
{
"type": "object"
}
],
"description": "Solar relationship / visibility classifications (e.g., cazimi/combust/under-beams) and Mercury/Venus morning/evening star context.",
"title": "Solar Relationships"
},
"subject": {
"allOf": [
{
"$ref": "#/$defs/SubjectResponse"
}
],
"description": "Subject information"
},
"success": {
"default": true,
"description": "Response success status",
"title": "Success",
"type": "boolean"
},
"traditional_points": {
"additionalProperties": true,
"description": "Present on /ephemeris/natal-chart when traditional_points asks for it (never on the comparative routes that reuse this schema). almuten_figuris {points (the five places: sun, moon, ascendant, lot_of_fortune, prenatal_syzygy with its kind and instant), scores (per planet: total and, per point, domicile 5, exaltation 4, triplicity 3, term 2 (Egyptian, Ptolemy), face 1 (Chaldean)), winners (several on a tie), conventions}; hayz (the seven planets: planet_sect, planet_gender, above_horizon, sign_gender, halb, hayz, and mercury_phase for Mercury; Al-Biruni's rule); lunar_mansions {moon: {number 1-28, id, name_ar, transliteration, meaning, degrees_in}, mansion_width_deg, zodiac (28 equal mansions from 0 Aries of the chart's zodiac: tropical by default, as Picatrix and Agrippa)}.",
"type": "object"
},
"visual": {
"$ref": "#/$defs/VisualResult",
"description": "Inline chart wheel visual, present only when include_visual=true was requested."
},
"void_of_course": {
"anyOf": [
{
"type": "object"
}
],
"description": "Void-of-Course Moon context (status, start/end window, last major aspect, sign context) (opt-in).",
"title": "Void Of Course"
}
},
"required": [
"subject",
"planets",
"houses",
"angles",
"calculation_metadata"
],
"type": "object",
"$defs": {
"AccidentalDignityInfo": {
"additionalProperties": false,
"description": "Accidental dignity information for a body (tags-only).",
"properties": {
"tags": {
"description": "Accidental dignity tags (planets-only).",
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
}
},
"title": "AccidentalDignityInfo",
"type": "object"
},
"AnglesResponse": {
"additionalProperties": true,
"description": "Chart angles data in response.",
"properties": {
"ascendant": {
"description": "Ascendant longitude in degrees",
"title": "Ascendant",
"type": "number"
},
"descendant": {
"description": "Descendant longitude in degrees",
"title": "Descendant",
"type": "number"
},
"imum_coeli": {
"description": "Imum Coeli longitude in degrees",
"title": "Imum Coeli",
"type": "number"
},
"midheaven": {
"description": "Midheaven longitude in degrees",
"title": "Midheaven",
"type": "number"
}
},
"required": [
"ascendant",
"midheaven",
"descendant",
"imum_coeli"
],
"title": "AnglesResponse",
"type": "object"
},
"ArabicPartResponse": {
"description": "Individual Arabic part calculation.",
"properties": {
"canonical_name": {
"anyOf": [
{
"type": "string"
}
],
"description": "Original Arabic part identifier (without lot_ prefix)",
"title": "Canonical Name"
},
"custom": {
"description": "True for a lot from custom_lots.",
"type": "boolean"
},
"degree_symbol": {
"anyOf": [
{
"type": "string"
}
],
"description": "Degree display",
"title": "Degree Symbol"
},
"display_name": {
"anyOf": [
{
"type": "string"
}
],
"description": "Human-friendly display name",
"title": "Display Name"
},
"formula_used": {
"anyOf": [
{
"type": "string"
}
],
"description": "Which formula variation was executed",
"title": "Formula Used"
},
"house": {
"anyOf": [
{
"type": "integer"
}
],
"description": "House position (1-12)",
"title": "House"
},
"longitude": {
"description": "Longitude in degrees",
"title": "Longitude",
"type": "number"
},
"name": {
"description": "Arabic part registry key",
"title": "Name",
"type": "string"
},
"sign": {
"description": "Zodiac sign",
"title": "Sign",
"type": "string"
},
"sign_longitude": {
"description": "Longitude within sign",
"title": "Sign Longitude",
"type": "number"
},
"symbol": {
"anyOf": [
{
"type": "string"
}
],
"description": "Traditional symbol",
"title": "Symbol"
}
},
"required": [
"name",
"longitude",
"sign",
"sign_longitude"
],
"title": "ArabicPartResponse",
"type": "object"
},
"ArabicPartsResponse": {
"additionalProperties": false,
"description": "Canonical Arabic parts payload for enhanced responses.",
"properties": {
"arabic_parts": {
"additionalProperties": {
"$ref": "#/$defs/ArabicPartResponse"
},
"description": "Arabic parts keyed by registry name",
"title": "Arabic Parts",
"type": "object"
},
"calculation_time_ms": {
"description": "Computation time in milliseconds",
"title": "Calculation Time Ms",
"type": "number"
},
"formulas_used": {
"description": "Ordered list of formulas executed",
"items": {
"type": "string"
},
"title": "Formulas Used",
"type": "array"
},
"hermetic_lot_names": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
}
],
"description": "Sorted subset of arabic part keys that map to canonical Hermetic lots",
"title": "Hermetic Lot Names"
},
"sect_determination": {
"description": "Sect analysis metadata used for formula selection",
"title": "Sect Determination",
"type": "object"
},
"total_parts_calculated": {
"description": "Number of parts returned",
"title": "Total Parts Calculated",
"type": "integer"
}
},
"required": [
"arabic_parts",
"sect_determination",
"formulas_used",
"calculation_time_ms",
"total_parts_calculated"
],
"title": "ArabicPartsResponse",
"type": "object"
},
"AspectMatrixResponse": {
"additionalProperties": true,
"description": "Complete aspect matrix for all planetary pairs.\n\nRelaxed to allow additional performance fields provided by enhanced calculator.",
"properties": {
"aspect_counts": {
"anyOf": [
{
"additionalProperties": {
"type": "integer"
},
"type": "object"
}
],
"description": "Count by aspect type",
"title": "Aspect Counts"
},
"aspects": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/AspectResponse"
},
"type": "array"
}
],
"description": "All aspects found",
"title": "Aspects"
},
"calculation_time_ms": {
"anyOf": [
{
"type": "number"
}
],
"description": "Calculation time in ms",
"title": "Calculation Time Ms"
},
"major_aspects": {
"anyOf": [
{
"type": "integer"
}
],
"description": "Major aspect count",
"title": "Major Aspects"
},
"matrix": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"$ref": "#/$defs/AspectResponse"
},
"type": "object"
},
"type": "object"
}
],
"description": "Matrix format of aspects",
"title": "Matrix"
},
"minor_aspects": {
"anyOf": [
{
"type": "integer"
}
],
"description": "Minor aspect count",
"title": "Minor Aspects"
},
"orb_config_used": {
"anyOf": [
{
"type": "string"
}
],
"description": "Orb configuration used",
"title": "Orb Config Used"
},
"patterns": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/AspectPattern"
},
"type": "array"
}
],
"description": "Identified aspect patterns",
"title": "Patterns"
},
"total_aspects": {
"anyOf": [
{
"type": "integer"
}
],
"description": "Total number of aspects",
"title": "Total Aspects"
}
},
"title": "AspectMatrixResponse",
"type": "object"
},
"AspectPattern": {
"additionalProperties": false,
"description": "Identified aspect pattern.",
"properties": {
"aspects": {
"description": "Aspects forming the pattern",
"items": {
"type": "string"
},
"title": "Aspects",
"type": "array"
},
"complete": {
"description": "Is pattern complete",
"title": "Complete",
"type": "boolean"
},
"orb_tolerance": {
"description": "Maximum orb in pattern",
"title": "Orb Tolerance",
"type": "number"
},
"pattern_type": {
"description": "Pattern type (T-square, Grand Trine, etc.)",
"title": "Pattern Type",
"type": "string"
},
"planets": {
"description": "Planets involved",
"items": {
"type": "string"
},
"title": "Planets",
"type": "array"
},
"strength": {
"description": "Pattern strength (0-1)",
"title": "Strength",
"type": "number"
}
},
"required": [
"pattern_type",
"planets",
"aspects",
"strength",
"orb_tolerance",
"complete"
],
"title": "AspectPattern",
"type": "object"
},
"AspectPerfection": {
"description": "Exact perfection instant of every natal aspect (#1173).",
"properties": {
"aspects": {
"items": {
"$ref": "#/$defs/AspectPerfectionRow"
},
"type": "array"
},
"timezone": {
"type": "string"
},
"window_days": {
"format": "double",
"type": "number"
}
},
"type": "object"
},
"AspectPerfectionRow": {
"properties": {
"angle": {
"format": "double",
"type": "number"
},
"aspect": {
"type": "string"
},
"body1": {
"type": "string"
},
"body1_id": {
"type": "integer"
},
"body2": {
"type": "string"
},
"body2_id": {
"type": "integer"
},
"exact": {
"description": "The instant the aspect is exact, in the birthplace offset; null when not within 3 years.",
"format": "date-time",
"type": [
"string",
"null"
]
},
"minutes_from_birth": {
"description": "Negative: perfected before birth (separating). Positive: perfects after birth (applying).",
"format": "double",
"type": [
"number",
"null"
]
},
"orb_at_birth": {
"format": "double",
"type": "number"
},
"perfects": {
"description": "before_birth, after_birth or not_within_window.",
"type": "string"
}
},
"required": [
"body1",
"body1_id",
"body2",
"body2_id",
"aspect",
"angle",
"perfects"
],
"type": "object"
},
"AspectResponse": {
"additionalProperties": true,
"description": "Individual aspect information (legacy format).",
"properties": {
"angle": {
"description": "Aspect angle in degrees",
"title": "Angle",
"type": "number"
},
"applying": {
"description": "Is aspect applying",
"title": "Applying",
"type": "boolean"
},
"aspect": {
"description": "Aspect name",
"title": "Aspect",
"type": "string"
},
"object1": {
"description": "First object name",
"title": "Object1",
"type": "string"
},
"object2": {
"description": "Second object name",
"title": "Object2",
"type": "string"
},
"orb": {
"description": "Orb in degrees",
"title": "Orb",
"type": "number"
}
},
"required": [
"object1",
"object2",
"aspect",
"angle",
"orb",
"applying"
],
"title": "AspectResponse",
"type": "object"
},
"AyanamsaEnum": {
"description": "Supported sidereal ayanamsa options (krishnamurti is KP old, krishnamurti_vp291 KP new). All six are computed from the same IAU 2006 general-precession model, so each is epoch-dependent rather than a frozen constant; they differ by up to ~2.3 degrees, which is enough to move a body across a sign boundary. Defaults to lahiri when zodiac_type is sidereal and no system is named.",
"enum": [
"lahiri",
"fagan_bradley",
"krishnamurti",
"krishnamurti_vp291",
"raman",
"yukteshwar"
],
"title": "AyanamsaEnum",
"type": "string"
},
"CalculationMetadata": {
"additionalProperties": true,
"description": "Metadata about chart calculations.\n\nRelaxed to allow minimal fields used by tests while remaining forward-compatible.",
"properties": {
"ascendant_on_left": {
"default": true,
"description": "When true (default), the Ascendant is placed at the 9 o'clock (West/left) position � matching the convention used by Astro.com, Solar Fire, and all major astrology software. Set to false to use the ecliptic-fixed (Aries-pinned) orientation instead.",
"title": "Ascendant on Left",
"type": [
"boolean",
"null"
]
},
"ayanamsa": {
"anyOf": [
{
"$ref": "#/$defs/AyanamsaEnum"
},
{
"type": "string"
}
],
"description": "Sidereal ayanamsa selection",
"title": "Ayanamsa"
},
"calculation_time": {
"anyOf": [
{
"type": "number"
}
],
"description": "Legacy calculation time in seconds",
"title": "Calculation Time"
},
"calculation_time_ms": {
"anyOf": [
{
"type": "number"
}
],
"description": "Processing time at the orchestrator layer in milliseconds",
"title": "Calculation Time Ms"
},
"calculation_time_utc": {
"anyOf": [
{
"format": "date-time",
"type": "string"
}
],
"description": "UTC timestamp when the calculation executed",
"title": "Calculation Time Utc"
},
"coordinate_reference_frame": {
"anyOf": [
{
"type": "string"
}
],
"description": "Coordinate frame the positions are expressed in, always the TRUE ecliptic of date: geocentric_true_ecliptic_of_date (apparent place from the Earth's centre), topocentric_true_ecliptic_of_date (apparent place from the observer, with diurnal parallax and aberration; geometric, no refraction, observer height 0), heliocentric_true_ecliptic_of_date and barycentric_true_ecliptic_of_date (light-time-corrected astrometric place from the Sun's centre / the solar-system barycentre: no aberration, no gravitational deflection; target sampled at t minus light time, origin at t). The label names the frame that was computed; a response never claims one it did not use.",
"title": "Coordinate Reference Frame"
},
"coordinate_system": {
"anyOf": [
{
"$ref": "#/$defs/CoordinateSystemEnum"
},
{
"type": "string"
}
],
"description": "Coordinate system the positions were computed in: geocentric, topocentric, heliocentric or barycentric.",
"title": "Coordinate System"
},
"delta_t_seconds": {
"anyOf": [
{
"type": "number"
}
],
"description": "Delta T (TT - UT1) applied during calculation, in seconds",
"title": "Delta T Seconds"
},
"delta_t_source": {
"anyOf": [
{
"$ref": "#/$defs/DeltaTSourceEnum"
},
{
"type": "string"
}
],
"description": "Source of Delta T values (computation engine, IERS, approximation)",
"title": "Delta T Source"
},
"ephemeris_source": {
"anyOf": [
{
"type": "string"
}
],
"description": "Primary ephemeris source (e.g., SuperNOVAS / Calceph)",
"title": "Ephemeris Source"
},
"ephemeris_version": {
"anyOf": [
{
"type": "string"
}
],
"description": "Version of the ephemeris data files",
"title": "Ephemeris Version"
},
"fixed_star_catalog": {
"anyOf": [
{
"$ref": "#/$defs/FixedStarCatalogEnum"
},
{
"type": "string"
}
],
"description": "Fixed star catalog or subset identifier",
"title": "Fixed Star Catalog"
},
"house_system": {
"anyOf": [
{
"$ref": "#/$defs/HouseSystemEnum"
},
{
"type": "string"
}
],
"description": "House system actually used during calculation",
"title": "House System"
},
"include_fixed_stars": {
"anyOf": [
{
"type": "boolean"
}
],
"description": "Whether fixed stars were included",
"title": "Include Fixed Stars"
},
"julian_day": {
"anyOf": [
{
"format": "double",
"type": "number"
}
],
"description": "Julian Day Number representing the calculation instant",
"title": "Julian Day"
},
"lunar_nodes": {
"additionalProperties": {
"type": "object"
},
"description": "How each lunar node and apogee body in this response was computed, keyed by the body's name in the planets block (e.g. \"North Node (True)\"). Each entry carries `method` (`mean` or `true_osculating`) and `algorithm`; the true node also carries `frame` and `matches` (the Swiss Ephemeris equivalent), and a South Node carries `derived_from` and `offset`. Only bodies actually present in the response appear. Authoritative per body: when both nodes are returned, `node_source` alone cannot say which is which.",
"title": "Lunar Nodes",
"type": "object"
},
"missing_objects": {
"anyOf": [
{
"additionalProperties": {
"items": {
"type": "object"
},
"type": "array"
},
"type": "object"
}
],
"description": "Objects that could not be calculated along with reasons",
"title": "Missing Objects"
},
"node_source": {
"anyOf": [
{
"$ref": "#/$defs/NodeSourceEnum"
},
{
"type": "string"
}
],
"description": "Lunar node/apsides mode in effect. Echoes `configuration.node_source` when the request sent one (it also selects the Lilith variant). Otherwise names the nodes the response carries: `mean`, `true_osculating`, or `mean_and_true_osculating` for the default roster, which returns both North Nodes. Omitted when the response carries no lunar node. See `lunar_nodes` for the per-body method.",
"title": "Node Source"
},
"object_set": {
"anyOf": [
{
"$ref": "#/$defs/ObjectSetEnum"
},
{
"type": "string"
}
],
"description": "Named object set or preset powering the calculation",
"title": "Object Set"
},
"orb_system_used": {
"anyOf": [
{
"type": "string"
}
],
"description": "Aspect orb system applied",
"title": "Orb System Used"
},
"precision_level": {
"anyOf": [
{
"type": "string"
}
],
"description": "Legacy precision descriptor",
"title": "Precision Level"
},
"precision_summary": {
"$ref": "#/$defs/PrecisionSummary",
"description": "Structured precision summary aligned with validation results"
},
"processing_time_ms": {
"anyOf": [
{
"type": "number"
}
],
"description": "End-to-end processing time in milliseconds",
"title": "Processing Time Ms"
},
"server_version": {
"description": "Build identifier of the engine that produced this response. Moves on every deploy, so it is the signal for resolution-LOGIC changes — the class of change that can move a historical offset without touching overlay data (and therefore without moving tz_overlay_version). Poll both.",
"title": "Server Version",
"type": "string"
},
"sidereal_time": {
"anyOf": [
{
"type": "number"
}
],
"description": "Local sidereal time in hours",
"title": "Sidereal Time"
},
"technique_id": {
"anyOf": [
{
"type": "string"
}
],
"description": "High-level technique identifier (e.g., natal, synastry, composite, overlay)",
"title": "Technique Id"
},
"technique_label": {
"anyOf": [
{
"type": "string"
}
],
"description": "Human-readable technique label",
"title": "Technique Label"
},
"technique_method": {
"anyOf": [
{
"type": "string"
}
],
"description": "Method name within a technique (e.g., davidson, midpoint)",
"title": "Technique Method"
},
"technique_version": {
"anyOf": [
{
"type": "string"
}
],
"description": "Technique implementation version (for future-proofing)",
"title": "Technique Version"
},
"time_scale": {
"anyOf": [
{
"$ref": "#/$defs/TimeScaleEnum"
},
{
"type": "string"
}
],
"description": "Time scale used for internal calculations (UTC, TT, TDB)",
"title": "Time Scale"
},
"tz_overlay_hash": {
"description": "Content hash of the historical-correction overlay dataset that produced this answer. Stamped only when an overlay row applied (tz_rule_source starts with 'overlay:').",
"title": "Tz Overlay Hash",
"type": "string"
},
"tz_overlay_version": {
"description": "Monotonic version of the historical-correction overlay dataset that produced this answer. Stamped only when an overlay row applied. Tracks overlay DATA only — pair with server_version to also catch resolution-logic changes.",
"title": "Tz Overlay Version",
"type": "integer"
},
"tz_precision": {
"description": "Sourcing grade of the overlay row that produced the offset: 'statutory' (operative text of a session law
# --- truncated at 32 KB (68 KB total) ---
# Full source: https://artifacts.apis.io/openephemeris-com/json-schema/openephemeris-com-natal-chart-enhanced-response-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/openephemeris-com-natal-chart-enhanced-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.