{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/propertyindex-ae/json-schema/propertyindex-ae-market-index-observation-list-schema.json",
  "title": "MarketIndexObservationList",
  "x-generated": "2026-11-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/propertyindex-ae-openapi.json#/components/schemas/MarketIndexObservationList",
  "type": "object",
  "required": [
    "data",
    "next_cursor",
    "as_of",
    "total",
    "page",
    "limit"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/MarketIndexObservation"
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ],
      "description": "Returned for cursor and numbered pages when more data exists. Pass as cursor to fetch the next page, removing page and preserving sort, order and filters. null on the last page."
    },
    "as_of": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "The DLD delivery date the data was built from."
    },
    "total": {
      "type": "integer",
      "minimum": 0,
      "description": "Exact number of records matching all filters, including q, location_search and location scopes where supported. Ignores page, limit and cursor. Always included, even on empty pages. Not a snapshot: can change after a data refresh."
    },
    "page": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 9007199254740991,
      "description": "Requested numbered page, or 1 when neither page nor cursor was supplied. null for cursor requests because a cursor position is not a numbered page."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "description": "Requested page size, or 100 when omitted. This is the maximum rows requested, not the actual number returned; data can contain fewer rows."
    }
  },
  "$defs": {
    "MarketIndexObservation": {
      "type": "object",
      "description": "Monthly PropertyIndex (PIX) levels and supporting Dubai market observations.",
      "properties": {
        "segment": {
          "type": [
            "string",
            "null"
          ],
          "description": "PIX market segment. Known values: residential, apartment, villa, ready, offplan."
        },
        "month": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "Index observation month."
        },
        "index_level": {
          "type": [
            "number",
            "null"
          ],
          "description": "PIX index level for the segment and month. Unit: index points."
        },
        "mom_pct": {
          "type": [
            "number",
            "null"
          ],
          "description": "Month-on-month PIX change. Unit: percent."
        },
        "yoy_pct": {
          "type": [
            "number",
            "null"
          ],
          "description": "Year-on-year PIX change. Unit: percent."
        },
        "median_psf": {
          "type": [
            "number",
            "null"
          ],
          "description": "Observed median registered sale PSF. Unit: AED/sqft."
        },
        "sales_count": {
          "type": [
            "number",
            "null"
          ],
          "description": "Registered sales supporting the observation. Unit: sales."
        }
      }
    }
  }
}