{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/geoapify/json-schema/geoapify-elevation-request-schema.json",
  "title": "ElevationRequest",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/geoapify-elevation-api-openapi.yml#/components/schemas/ElevationRequest",
  "type": "object",
  "required": [
    "locations"
  ],
  "properties": {
    "format": {
      "type": "string",
      "enum": [
        "json",
        "geojson"
      ],
      "default": "json",
      "description": "Response representation. `json` returns a results array; `geojson` returns a FeatureCollection."
    },
    "units": {
      "type": "string",
      "enum": [
        "metric",
        "imperial"
      ],
      "default": "metric",
      "description": "Elevation and optional distance units. Metric results use meters (`m`); imperial results use rounded feet (`ft`)."
    },
    "includeDistance": {
      "type": "boolean",
      "default": false,
      "description": "When `true`, include the distance from the previous input location. The first result has distance `0`."
    },
    "locations": {
      "type": "array",
      "minItems": 1,
      "maxItems": 1000,
      "description": "Ordered input locations. Use `[longitude, latitude]` arrays or objects with `lat` and `lon`. Results preserve this order.",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/Position"
          },
          {
            "$ref": "#/$defs/ElevationLocation"
          }
        ]
      }
    }
  },
  "$defs": {
    "ElevationLocation": {
      "type": "object",
      "oneOf": [
        {
          "required": [
            "lat",
            "lon"
          ]
        },
        {
          "required": [
            "latlon"
          ]
        },
        {
          "required": [
            "lonlat"
          ]
        }
      ],
      "properties": {
        "lat": {
          "type": "number",
          "minimum": -90,
          "maximum": 90,
          "description": "Latitude in decimal degrees."
        },
        "lon": {
          "type": "number",
          "minimum": -180,
          "maximum": 180,
          "description": "Longitude in decimal degrees."
        },
        "latlon": {
          "description": "Legacy coordinate property. Values are processed in `[longitude, latitude]` order; prefer `lat` with `lon` or a direct coordinate array.",
          "$ref": "#/$defs/Position"
        },
        "lonlat": {
          "description": "Coordinate in `[longitude, latitude]` order.",
          "$ref": "#/$defs/Position"
        }
      }
    },
    "Position": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "prefixItems": [
        {
          "type": "number",
          "minimum": -180,
          "maximum": 180,
          "description": "Longitude."
        },
        {
          "type": "number",
          "minimum": -90,
          "maximum": 90,
          "description": "Latitude."
        }
      ],
      "items": false,
      "description": "Coordinate in GeoJSON order: `[longitude, latitude]`."
    }
  }
}