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", "slug", "total_spaces", "lot_type"],
"properties": {
"id": { "type": "string", "format": "uuid" },
"name": { "type": "string" },
"slug": { "type": "string" },
"address": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" },
"total_spaces": { "type": "integer", "minimum": 1 },
"available_spaces": { "type": "integer", "minimum": 0 },
"occupancy_pct": { "type": "number" },
"base_rate": { "type": ["number", "null"] },
"rate_unit": { "type": "string" },
"max_daily_rate": { "type": ["number", "null"] },
"lot_type": { "enum": ["open", "covered", "valet", "accessible", "ev_only"] },
"features": { "type": "array", "items": { "type": "string" } }
}
}
The JSON inventory feed returns these fields on each lot; the GeoJSON inventory feed carries the same identifying fields inside each feature's properties object (plus a url permalink). AI agents that ingest the shape once can consume both feeds without further translation.