{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/digitraffic-fi/json-schema/digitraffic-fi-feature-collection-schema.json",
  "title": "FeatureCollection",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/digitraffic-fi-train-locations-api-openapi.yml#/components/schemas/FeatureCollection",
  "type": "object",
  "properties": {
    "type": {
      "type": "string"
    },
    "features": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Feature"
      }
    }
  },
  "$defs": {
    "Coordinate": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "format": "double"
        },
        "y": {
          "type": "number",
          "format": "double"
        },
        "z": {
          "type": "number",
          "format": "double"
        },
        "valid": {
          "type": "boolean"
        },
        "m": {
          "type": "number",
          "format": "double"
        },
        "coordinate": {
          "$ref": "#/$defs/Coordinate"
        }
      }
    },
    "CoordinateSequence": {
      "type": "object",
      "properties": {
        "dimension": {
          "type": "integer",
          "format": "int32"
        },
        "measures": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "CoordinateSequenceFactory": {
      "type": "object"
    },
    "Envelope": {
      "type": "object",
      "properties": {
        "null": {
          "type": "boolean"
        },
        "height": {
          "type": "number",
          "format": "double"
        },
        "diameter": {
          "type": "number",
          "format": "double"
        },
        "width": {
          "type": "number",
          "format": "double"
        },
        "minX": {
          "type": "number",
          "format": "double"
        },
        "minY": {
          "type": "number",
          "format": "double"
        },
        "maxX": {
          "type": "number",
          "format": "double"
        },
        "maxY": {
          "type": "number",
          "format": "double"
        },
        "area": {
          "type": "number",
          "format": "double"
        }
      }
    },
    "Feature": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "geometry": {
          "$ref": "#/$defs/Geometry"
        },
        "properties": {
          "type": "object"
        }
      }
    },
    "Geometry": {
      "type": "object",
      "properties": {
        "envelope": {
          "$ref": "#/$defs/Geometry"
        },
        "factory": {
          "$ref": "#/$defs/GeometryFactory"
        },
        "userData": {
          "type": "object"
        },
        "length": {
          "type": "number",
          "format": "double"
        },
        "empty": {
          "type": "boolean"
        },
        "valid": {
          "type": "boolean"
        },
        "dimension": {
          "type": "integer",
          "format": "int32"
        },
        "simple": {
          "type": "boolean"
        },
        "numGeometries": {
          "type": "integer",
          "format": "int32"
        },
        "envelopeInternal": {
          "$ref": "#/$defs/Envelope"
        },
        "coordinate": {
          "$ref": "#/$defs/Coordinate"
        },
        "precisionModel": {
          "$ref": "#/$defs/PrecisionModel"
        },
        "srid": {
          "type": "integer",
          "format": "int32"
        },
        "geometryType": {
          "type": "string"
        },
        "coordinates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Coordinate"
          }
        },
        "numPoints": {
          "type": "integer",
          "format": "int32"
        },
        "rectangle": {
          "type": "boolean"
        },
        "area": {
          "type": "number",
          "format": "double"
        },
        "centroid": {
          "$ref": "#/$defs/Point"
        },
        "interiorPoint": {
          "$ref": "#/$defs/Point"
        },
        "boundary": {
          "$ref": "#/$defs/Geometry"
        },
        "boundaryDimension": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "GeometryFactory": {
      "type": "object",
      "properties": {
        "precisionModel": {
          "$ref": "#/$defs/PrecisionModel"
        },
        "coordinateSequenceFactory": {
          "$ref": "#/$defs/CoordinateSequenceFactory"
        },
        "srid": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "Point": {
      "type": "object",
      "properties": {
        "envelope": {
          "$ref": "#/$defs/Geometry"
        },
        "factory": {
          "$ref": "#/$defs/GeometryFactory"
        },
        "userData": {
          "type": "object"
        },
        "coordinates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Coordinate"
          }
        },
        "empty": {
          "type": "boolean"
        },
        "dimension": {
          "type": "integer",
          "format": "int32"
        },
        "simple": {
          "type": "boolean"
        },
        "coordinateSequence": {
          "$ref": "#/$defs/CoordinateSequence"
        },
        "coordinate": {
          "$ref": "#/$defs/Coordinate"
        },
        "x": {
          "type": "number",
          "format": "double"
        },
        "y": {
          "type": "number",
          "format": "double"
        },
        "geometryType": {
          "type": "string"
        },
        "numPoints": {
          "type": "integer",
          "format": "int32"
        },
        "boundary": {
          "$ref": "#/$defs/Geometry"
        },
        "boundaryDimension": {
          "type": "integer",
          "format": "int32"
        },
        "length": {
          "type": "number",
          "format": "double"
        },
        "valid": {
          "type": "boolean"
        },
        "numGeometries": {
          "type": "integer",
          "format": "int32"
        },
        "envelopeInternal": {
          "$ref": "#/$defs/Envelope"
        },
        "precisionModel": {
          "$ref": "#/$defs/PrecisionModel"
        },
        "srid": {
          "type": "integer",
          "format": "int32"
        },
        "rectangle": {
          "type": "boolean"
        },
        "area": {
          "type": "number",
          "format": "double"
        },
        "centroid": {
          "$ref": "#/$defs/Point"
        },
        "interiorPoint": {
          "$ref": "#/$defs/Point"
        }
      }
    },
    "PrecisionModel": {
      "type": "object",
      "properties": {
        "scale": {
          "type": "number",
          "format": "double"
        },
        "type": {
          "$ref": "#/$defs/Type"
        },
        "floating": {
          "type": "boolean"
        },
        "maximumSignificantDigits": {
          "type": "integer",
          "format": "int32"
        },
        "offsetX": {
          "type": "number",
          "format": "double"
        },
        "offsetY": {
          "type": "number",
          "format": "double"
        }
      }
    },
    "Type": {
      "type": "object"
    }
  }
}