{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/asterwise-com/json-schema/asterwise-com-western-daily-factors-request-schema.json",
  "title": "WesternDailyFactorsRequest",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/asterwise-com-openapi.json#/components/schemas/WesternDailyFactorsRequest",
  "properties": {
    "location": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Location",
      "description": "City name to resolve to lat/lon/tz automatically. Example: 'Mumbai' or 'New Delhi, India'. If provided, latitude, longitude and timezone are not required."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "title": "Name",
      "description": "Person name associated with the birth record",
      "default": "Chart"
    },
    "date": {
      "type": "string",
      "title": "Date",
      "description": "Birth date in YYYY-MM-DD format"
    },
    "time": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Time",
      "description": "Birth time in HH:MM 24-hour format. If omitted, the chart is cast for 06:00 local time (not a sunrise chart) and birth_time_provided is false: houses, the Ascendant, the sect and the Moon's exact degree are then approximate."
    },
    "latitude": {
      "anyOf": [
        {
          "type": "number",
          "maximum": 90.0,
          "minimum": -90.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Latitude",
      "description": "Latitude. Required if location not provided."
    },
    "longitude": {
      "anyOf": [
        {
          "type": "number",
          "maximum": 180.0,
          "minimum": -180.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Longitude",
      "description": "Longitude. Required if location not provided."
    },
    "timezone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Timezone",
      "description": "IANA timezone. Required if location not provided (unless utc_offset is given). For dates before the zone adopted a standard time, the birthplace's local mean time (longitude / 15 hours) is used."
    },
    "utc_offset": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Utc Offset",
      "description": "Optional explicit UTC offset of the birth time, as ±HH:MM or ±HH:MM:SS (e.g. '+04:51:31' for Bombay mean time). Overrides the offset `timezone` would give. Use it when the birth record states the offset, or for historical local times the IANA database cannot represent."
    },
    "ayanamsa": {
      "type": "string",
      "enum": [
        "lahiri",
        "raman",
        "kp",
        "tropical"
      ],
      "title": "Ayanamsa",
      "description": "Ignored on Western endpoints: positions are always tropical (no ayanamsa). Accepted so one birth object can be sent to Vedic and Western endpoints alike.",
      "default": "lahiri"
    },
    "house_system": {
      "type": "string",
      "enum": [
        "placidus",
        "koch",
        "equal",
        "whole_sign"
      ],
      "title": "House System",
      "description": "Natal house system for the natal_house of each transiting planet.",
      "default": "placidus"
    },
    "target_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Date",
      "description": "Day to read (YYYY-MM-DD, civil day in target_timezone). Defaults to today in the birth timezone."
    },
    "target_time": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Time",
      "description": "Local clock time HH:MM (24-hour) in target_timezone at which the day's sky is read. Defaults to 12:00. Pass the user's own time so the Moon is where the user sees it. On a clock-change day, a time the clock skips is read one hour later and a time that happens twice is read at its first occurrence.",
      "default": "12:00"
    },
    "target_timezone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Timezone",
      "description": "IANA timezone of the day. Defaults to the birth timezone."
    },
    "target_latitude": {
      "anyOf": [
        {
          "type": "number",
          "maximum": 90.0,
          "minimum": -90.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Latitude",
      "description": "Place for the planetary hours. Defaults to the birthplace."
    },
    "target_longitude": {
      "anyOf": [
        {
          "type": "number",
          "maximum": 180.0,
          "minimum": -180.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Longitude",
      "description": "Longitude of that place, east positive. Defaults to the birthplace."
    }
  },
  "type": "object",
  "required": [
    "date"
  ]
}