{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/digitraffic-fi/json-schema/digitraffic-fi-sites-model-schema.json",
  "title": "SitesModel",
  "description": "GeoJson FeatureCollection",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/digitraffic-fi-counting-site-v2-api-openapi.yml#/components/schemas/SitesModel",
  "required": [
    "features",
    "type"
  ],
  "type": "object",
  "properties": {
    "features": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/SiteFeatureModel"
      }
    },
    "type": {
      "type": "string",
      "description": "FeatureCollection",
      "enum": [
        "FeatureCollection"
      ]
    },
    "dataUpdatedTime": {
      "type": "string",
      "description": "Data updated timestamp",
      "format": "date-time"
    }
  },
  "$defs": {
    "SiteFeatureModel": {
      "required": [
        "geometry",
        "properties",
        "type"
      ],
      "type": "object",
      "properties": {
        "geometry": {
          "type": "object",
          "description": "GeoJSON geometry"
        },
        "type": {
          "type": "string",
          "description": "Feature",
          "enum": [
            "Feature"
          ]
        },
        "properties": {
          "$ref": "#/$defs/SiteModel"
        }
      },
      "description": "GeoJson Feature"
    },
    "SiteModel": {
      "type": "object",
      "properties": {
        "granularity": {
          "type": "string",
          "description": "Time interval between two consecutive data",
          "enum": [
            "PT15M",
            "PT1H",
            "P1D",
            "P1W",
            "P1M",
            "P1Y"
          ]
        },
        "directional": {
          "type": "boolean",
          "description": "Indicator telling if directions are distinguished"
        },
        "domain": {
          "type": "string",
          "description": "Site domain"
        },
        "name": {
          "type": "string",
          "description": "Site name"
        },
        "description": {
          "type": "string",
          "description": "Site description"
        },
        "travelModes": {
          "type": "string",
          "description": "Removal timestamp",
          "format": "date-time"
        },
        "lastDataTimestamp": {
          "type": "string",
          "description": "Data updated timestamp",
          "format": "date-time"
        },
        "id": {
          "type": "integer",
          "description": "Site id"
        },
        "customId": {
          "type": "string",
          "description": "Custom id for site"
        },
        "dataUpdatedTime": {
          "type": "string",
          "description": "Data updated timestamp",
          "format": "date-time"
        }
      },
      "description": "Counting Site Metadata"
    }
  }
}