{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/propertyindex-ae/json-schema/propertyindex-ae-location-list-schema.json",
  "title": "LocationList",
  "x-generated": "2026-11-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/propertyindex-ae-openapi.json#/components/schemas/LocationList",
  "type": "object",
  "required": [
    "data",
    "next_cursor",
    "as_of",
    "total",
    "page",
    "limit"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Location"
      }
    },
    "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": {
    "Location": {
      "type": "object",
      "description": "All published location nodes: Dubai itself, areas, communities, subcommunities and towers. Each row contains only an opaque location_id and name, with no hierarchy fields. Names may repeat. Use the identifier to retrieve a single lookup entry or filter sales and rentals to that node and its descendants.",
      "properties": {
        "location_id": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^loc_[0-9a-f]{16}$",
          "description": "Opaque public location identifier. Use it to retrieve this lookup entry or filter sales and rentals to this location and its descendants."
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Location display name. Names are not unique."
        }
      }
    }
  }
}