{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://quadruper.invalid/contracts/geoapi-route-response.v1.schema.json",
  "title": "RouteResponse",
  "description": "POST /v2/route 200 body.",
  "type": "object",
  "properties": {
    "routes": {
      "type": "array",
      "minItems": 1,
      "maxItems": 1,
      "items": {
        "title": "Route",
        "type": "object",
        "properties": {
          "distance_m": { "type": "number", "minimum": 0 },
          "duration_s": { "type": "number", "minimum": 0 },
          "geometry": {
            "title": "LineString",
            "type": "object",
            "properties": {
              "type": { "const": "LineString" },
              "coordinates": {
                "type": "array",
                "minItems": 2,
                "items": { "$ref": "geoapi-common.v1.schema.json#/$defs/lnglat" }
              }
            },
            "required": ["type", "coordinates"],
            "additionalProperties": false
          },
          "waypoints": {
            "type": "array", "minItems": 2, "maxItems": 10,
            "items": { "$ref": "geoapi-common.v1.schema.json#/$defs/waypoint" }
          },
          "legs": {
            "type": "array", "minItems": 1, "maxItems": 9,
            "items": { "$ref": "geoapi-common.v1.schema.json#/$defs/leg" }
          }
        },
        "required": ["distance_m", "duration_s", "geometry", "waypoints", "legs"],
        "additionalProperties": false
      }
    },
    "conditions": { "$ref": "geoapi-common.v1.schema.json#/$defs/conditions" },
    "attribution": { "$ref": "geoapi-common.v1.schema.json#/$defs/attribution" }
  },
  "required": ["routes", "conditions", "attribution"],
  "additionalProperties": false
}
