Raw schema
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Exact UTC instant, ISO 8601 (e.g. 1990-06-10T14:30:00Z); convert local to UTC first"
},
"earliest": {
"type": "string",
"description": "Start of an uncertain-time range (UTC ISO); use with `latest` instead of `date`"
},
"latest": {
"type": "string",
"description": "End of an uncertain-time range (UTC ISO)"
},
"when": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "instant"
},
"utc": {
"type": "string"
}
},
"required": [
"kind",
"utc"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "range"
},
"earliest": {
"type": "string"
},
"latest": {
"type": "string"
}
},
"required": [
"kind",
"earliest",
"latest"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "relative"
},
"relation": {
"type": "string",
"enum": [
"before",
"after",
"during"
]
},
"anchorId": {
"type": "string"
},
"offset": {
"type": "string"
}
},
"required": [
"kind",
"relation",
"anchorId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "narrative"
},
"calendar": {
"type": "string"
},
"value": {
"type": "string"
},
"sequence": {
"type": "number"
}
},
"required": [
"kind",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "symbolic"
},
"rationale": {
"type": "string"
}
},
"required": [
"kind",
"rationale"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "none"
},
"reason": {
"type": "string",
"enum": [
"atemporal",
"time_irrelevant",
"intentionally_unset"
]
}
},
"required": [
"kind",
"reason"
],
"additionalProperties": false
}
],
"description": "Full structured temporal anchor; overrides date/earliest/latest. Use for relative or narrative time."
},
"anchors": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Reference instants for a `relative` when: { anchorId: UTC ISO }"
},
"calendars": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"description": "Calendar lookups for a `narrative` when: { calendarName: { value: UTC ISO } }. The caller owns the mapping (a regnal year, a story epoch, a game calendar) — the engine resolves through it, never invents it"
},
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude, north positive"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude, EAST positive (Americas are negative)"
},
"place": {
"type": "string",
"description": "Named place, e.g. \"Paris\" or \"Springfield, US\" — resolved to a city centroid via the bundled gazetteer (GeoNames) when lat/lon are not given. Resolution is approximate by construction and reported as such"
},
"where": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "geo"
},
"lat": {
"$ref": "#/properties/lat"
},
"lonEast": {
"$ref": "#/properties/lon"
},
"altM": {
"type": "number"
}
},
"required": [
"kind",
"lat",
"lonEast"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "named"
},
"placeId": {
"type": "string"
}
},
"required": [
"kind",
"placeId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "region"
},
"lat": {
"$ref": "#/properties/lat"
},
"lonEast": {
"$ref": "#/properties/lon"
},
"radiusKm": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"kind",
"lat",
"lonEast",
"radiusKm"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "fictional"
},
"value": {
"type": "string"
}
},
"required": [
"kind",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "relative"
},
"relation": {
"type": "string",
"enum": [
"near",
"at"
]
},
"anchorId": {
"type": "string"
}
},
"required": [
"kind",
"relation",
"anchorId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "none"
},
"reason": {
"type": "string",
"enum": [
"heliocentric",
"atemporal",
"intentionally_unset"
]
}
},
"required": [
"kind",
"reason"
],
"additionalProperties": false
}
],
"description": "Full structured spatial anchor; overrides lat/lon and place. `fictional` carries the narrative value only — a fictional place never resolves to coordinates (the chart reads on the planetary layer, houseless), by design"
},
"realm": {
"type": "string",
"enum": [
"observed",
"reported",
"planned",
"forecast",
"fictional",
"mythic",
"counterfactual",
"archetypal",
"conceptual"
],
"default": "observed",
"description": "What the chart is; frames the interpretation (default observed)"
},
"constraints": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "aspect"
},
"a": {
"type": "string"
},
"b": {
"type": "string"
},
"angle": {
"type": "number"
},
"weight": {
"type": "number"
}
},
"required": [
"kind",
"a",
"b",
"angle"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "sign"
},
"body": {
"type": "string"
},
"sign": {
"type": "integer",
"minimum": 0,
"maximum": 11
},
"weight": {
"type": "number"
}
},
"required": [
"kind",
"body",
"sign"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "degree"
},
"body": {
"type": "string"
},
"degree": {
"type": "number"
},
"weight": {
"type": "number"
}
},
"required": [
"kind",
"body",
"degree"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "declination"
},
"body": {
"type": "string"
},
"degree": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"weight": {
"type": "number"
}
},
"required": [
"kind",
"body",
"degree"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "parallel"
},
"a": {
"type": "string"
},
"b": {
"type": "string"
},
"contra": {
"type": "boolean"
},
"weight": {
"type": "number"
}
},
"required": [
"kind",
"a",
"b"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "separation3d"
},
"a": {
"type": "string"
},
"b": {
"type": "string"
},
"angle": {
"type": "number",
"minimum": 0,
"maximum": 180
},
"weight": {
"type": "number"
}
},
"required": [
"kind",
"a",
"b",
"angle"
],
"additionalProperties": false
}
]
},
"description": "Geometric constraints for an archetypal/conceptual chart with no time (compiler synthesis). Longitude kinds (aspect/sign/degree) plus the latitude-aware kinds: declination (via the fixed J2000 obliquity), parallel/contraparallel of declination, and separation3d (true great-circle separation)"
},
"house_system": {
"type": "string",
"default": "placidus",
"description": "House system (default placidus). Case- and spacing-insensitive; valid: placidus, whole_sign, equal, porphyry, koch, regiomontanus, campanus, alcabitius, morinus, meridian, polich_page, vehlow (aliases like \"whole sign\" also work)."
},
"zodiac": {
"type": "string",
"enum": [
"tropical",
"sidereal:lahiri",
"sidereal:fagan_bradley",
"sidereal:krishnamurti",
"sidereal:raman",
"sidereal:yukteshwar",
"sidereal:galcent_0sag",
"sidereal:true_citra"
],
"default": "tropical",
"description": "tropical (default) or sidereal:<ayanamsa>"
},
"target_date": {
"type": "string",
"description": "UTC ISO instant for transits and time-lords vs this natal chart; omit for natal-only facts"
},
"include_vedic": {
"type": "boolean",
"description": "With target_date: project nakshatra/varga/yoga (default true when zodiac is sidereal)"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 60,
"default": 24,
"description": "max facts to return, highest salience first (default 24)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}