{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.calculatorx.com/schemas/math.geometry.conic.input.json",
  "title": "Conic section — input",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "ellipse",
        "oval",
        "parabola",
        "parabolic",
        "hyperbola",
        "hyperbolic"
      ]
    },
    "a": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 1024,
          "pattern": "^\\s*[+−–—-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        }
      ],
      "description": "Strict decimal number/string, max1024 characters. Positive semiaxes a,b; nonzero signed p. Nonzero normalized inputs must be normal binary64. Text nonzero-to-zero -> NUMERIC_UNDERFLOW, subnormal -> NUMERIC_RANGE. Domain checks after normalization.",
      "x-quantity-kind": "length",
      "x-dimension": [
        1,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "x-unit-policy": "arbitrary_consistent_length",
      "x-uuce-role": "scalar"
    },
    "b": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 1024,
          "pattern": "^\\s*[+−–—-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        }
      ],
      "description": "Strict decimal number/string, max1024 characters. Positive semiaxes a,b; nonzero signed p. Nonzero normalized inputs must be normal binary64. Text nonzero-to-zero -> NUMERIC_UNDERFLOW, subnormal -> NUMERIC_RANGE. Domain checks after normalization.",
      "x-quantity-kind": "length",
      "x-dimension": [
        1,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "x-unit-policy": "arbitrary_consistent_length",
      "x-uuce-role": "scalar"
    },
    "p": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 1024,
          "pattern": "^\\s*[+−–—-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        }
      ],
      "description": "Strict decimal number/string, max1024 characters. Positive semiaxes a,b; nonzero signed p. Nonzero normalized inputs must be normal binary64. Text nonzero-to-zero -> NUMERIC_UNDERFLOW, subnormal -> NUMERIC_RANGE. Domain checks after normalization.",
      "x-quantity-kind": "length",
      "x-dimension": [
        1,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "x-unit-policy": "arbitrary_consistent_length",
      "x-uuce-role": "scalar"
    },
    "orientation": {
      "type": "string",
      "enum": [
        "vertical",
        "y",
        "up",
        "north",
        "north-south",
        "north_south",
        "horizontal",
        "x",
        "east",
        "east-west",
        "east_west",
        "side"
      ]
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "mode": {
            "enum": [
              "parabola",
              "parabolic"
            ]
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "p"
        ]
      },
      "else": {
        "required": [
          "a",
          "b"
        ]
      }
    }
  ],
  "description": "Axis-aligned ellipse, parabola, and hyperbola. Discovery /ellipse, /parabola, /hyperbola. Not the circle-only page, not coordinate geometry, not CAS. (calculation_version 1.1.0)",
  "x-unit-contract": {
    "protocol": "calculatorx-field-unit-contract-v1",
    "capability_id": "math.geometry.conic",
    "registry_version": "0.3.0-preview.3",
    "declaration_scope": "Field/branch declarations only; inactive fields are not asserted to exist. No conversion-engine migration or new numerical certification.",
    "path_format": "Paths relative to inputs or result_detail.value; dot separates properties, * denotes array items, $ denotes a scalar result.",
    "inputs": {},
    "outputs": {
      "e": {
        "unit": "1",
        "reference": {
          "unit_id": "cx:one",
          "revision": "1.0.0",
          "content_digest": "98cc3ffc58d8733c483b60c4d7e238fe8ad43a6aadcced9496b74f33a01ef599",
          "dependency_digest": "b1c9aa4d586949ee881925298442091ba11dda29f57de0867e43da1cd59e06e5",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "asymptote_slope": {
        "unit": "1",
        "reference": {
          "unit_id": "cx:one",
          "revision": "1.0.0",
          "content_digest": "98cc3ffc58d8733c483b60c4d7e238fe8ad43a6aadcced9496b74f33a01ef599",
          "dependency_digest": "b1c9aa4d586949ee881925298442091ba11dda29f57de0867e43da1cd59e06e5",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      }
    },
    "quantity_policy": {
      "physical_unit_id": null,
      "input_policy": "Abstract consistent coordinate/length units; no physical unit is selected by this calculator.",
      "derived_policy": "Lengths inherit the input length unit U; areas U^2; volumes U^3. No implicit conversion or fixed metre binding.",
      "coefficient_policy": "Normalized implicit line/equation coefficients have equation-scale conventions, not universal physical unit IDs."
    }
  }
}
