{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/asternym-com/json-schema/asternym-com-engine-result-schema.json",
  "title": "EngineResult",
  "description": "One engine's own output. The shape differs per endpoint — pillars for BaZi, hours for the hour endpoint, numbers for numerology, signs for the zodiac — and these five fields are always present.",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/asternym-com-openapi.json#/components/schemas/EngineResult",
  "type": "object",
  "properties": {
    "version": {
      "type": "object",
      "description": "API and engine version."
    },
    "input": {
      "type": "object",
      "description": "The inputs as they were understood, including what was left unset."
    },
    "method": {
      "type": "object",
      "description": "How it was computed, and which convention was used where traditions differ."
    },
    "notes": {
      "type": "array",
      "description": "Caveats the engine raised for these inputs, each with a key and a sentence.",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        }
      }
    },
    "page_url": {
      "type": "string",
      "format": "uri",
      "description": "A page a person can open. Birth details ride in the fragment, which browsers never send to a server."
    },
    "terms": {
      "type": "object",
      "description": "Scope, privacy, attribution and the honesty policy. Present in every response."
    }
  },
  "required": [
    "version",
    "input",
    "method",
    "notes",
    "page_url",
    "terms"
  ]
}