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).
View JSON Schema on GitHub

JSON Schema

openephemeris-com-natal-chart-enhanced-response-schema.json Raw ↑
{
  "$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.
All 92 tools →

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.