{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/main/json-schema/open-mobility-foundation-query-schema.json",
  "title": "query",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/open-mobility-foundation-mds-metrics-openapi.yml#/components/schemas/query",
  "required": [
    "measures",
    "interval",
    "start_date"
  ],
  "properties": {
    "measures": {
      "$ref": "#/$defs/measures",
      "description": "List of measures to return."
    },
    "interval": {
      "$ref": "#/$defs/data-types_iso-duration",
      "description": "ISO 8601 duration for metrics intervals."
    },
    "start_date": {
      "oneOf": [
        {
          "$ref": "#/$defs/data-types_iso-dayhourminute"
        },
        {
          "$ref": "#/$defs/data-types_timestamp"
        }
      ],
      "description": "ISO 8601 formatted start date or numeric timestamp to fetch metrics."
    },
    "end_date": {
      "oneOf": [
        {
          "$ref": "#/$defs/data-types_iso-dayhourminute"
        },
        {
          "$ref": "#/$defs/data-types_timestamp"
        }
      ],
      "description": "ISO 8601 formatted end date or numeric timestamp to fetch metrics."
    },
    "timezone": {
      "$ref": "#/$defs/data-types_timezone"
    },
    "dimensions": {
      "$ref": "#/$defs/dimensions"
    },
    "filters": {
      "type": "array",
      "description": "List of dimension names.",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of filter."
          },
          "values": {
            "type": "array",
            "description": "List of values to filter for.",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "object"
            }
          }
        }
      }
    }
  },
  "$defs": {
    "data-types_iso-dayhourminute": {
      "title": "data-types/iso-dayhourminute",
      "description": "An ISO 8601 extended datetime representing a minute and hour of given date `YYYY-MM-DDTHH:mm`; valid for dates in 1970 and later.",
      "pattern": "(19[789]\\d|[2-9]\\d{3})-(0[1-9]|1[02])-([12]\\d|0[1-9]|3[01])T([0-2][0-3]|[01]\\d):([0-5]\\d)([+-][01]\\d(:[0-5]\\d)?)?",
      "type": "string",
      "x-stoplight": {
        "id": "56v277zajwxm5"
      }
    },
    "data-types_iso-duration": {
      "title": "data-types/iso-duration",
      "type": "string",
      "description": "An [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string, defining the amount of intervening time\nin a time interval.",
      "x-stoplight": {
        "id": "ll9uuz5vjj9hj"
      },
      "pattern": "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$"
    },
    "data-types_timestamp": {
      "title": "data-types/timestamp",
      "description": "Integer milliseconds since Unix epoch.",
      "minimum": 1514764800000,
      "multipleOf": 1,
      "type": "number",
      "x-stoplight": {
        "id": "vliol1hqlxw6y"
      }
    },
    "data-types_timezone": {
      "title": "data-types/timezone",
      "description": "[TZ Database Name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) (default: UTC)",
      "type": "string",
      "x-stoplight": {
        "id": "sv8rgu97fxmop"
      },
      "default": "UTC"
    },
    "dimensions": {
      "type": "array",
      "description": "List of dimension names.",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "string"
      }
    },
    "measures": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "string"
      }
    }
  }
}