The lot model is the unit of every Park Graph data feed. It is intentionally small so a model can hold the full schema in context without thrashing.
Lot — JSON Schema (abridged)json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Lot",
"type": "object",
"required": ["id", "name", "operator_id", "geometry", "capacity", "rate_per_hour", "rate_unit"],
"properties": {
"id": { "type": "string", "format": "uuid" },
"name": { "type": "string" },
"operator_id": { "type": "string", "format": "uuid" },
"geometry": { "$ref": "https://geojson.org/schema/Polygon.json" },
"capacity": { "type": "integer", "minimum": 1 },
"available_spaces": { "type": "integer", "minimum": 0 },
"rate_per_hour": { "type": "number" },
"rate_unit": { "enum": ["hour", "day", "night", "event"] },
"max_daily": { "type": "number" },
"lot_type": { "enum": ["open", "covered", "valet", "accessible", "ev_only"] },
"amenities": { "type": "array", "items": { "enum": ["covered", "ev_charging", "ev_dc_fast", "valet", "shuttle", "ada", "lighting", "cctv", "attendant"] } },
"permalink": { "type": "string", "format": "uri" },
"updated_at": { "type": "string", "format": "date-time" }
}
}
Every endpoint that returns a lot — the JSON inventory feed, the GeoJSON inventory feed, the per-lot detail endpoint, and the Parquet drop — uses this same shape. AI agents that ingest the schema once can consume every endpoint without further translation.