{"openapi":"3.0.2","info":{"title":"Zwivio Public Availability API","description":"Read-only dispatch availability by service, request type, and region. Data is precomputed; no live routing. Phase 1: HVAC only.","version":"1.0.0"},"paths":{"/api/public/availability/v1/dispatch-slots":{"get":{"summary":"Get dispatch slots","description":"Returns aggregate availability (ETA bands, capacity) for a service/request/region. Reads from cache only.","parameters":[{"name":"serviceType","in":"query","required":true,"schema":{"type":"string","enum":["HVAC"]}},{"name":"requestType","in":"query","required":true,"schema":{"type":"string","enum":["EMERGENCY","URGENT","SCHEDULED","QUOTE"]}},{"name":"state","in":"query","required":false,"schema":{"type":"string","example":"wi"}},{"name":"county","in":"query","required":true,"schema":{"type":"string","example":"milwaukee-county"}},{"name":"city","in":"query","required":true,"schema":{"type":"string","example":"milwaukee"}}],"responses":{"200":{"description":"Dispatch slots (or valid empty response on cache miss)","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"integer","example":1},"generatedAt":{"type":"string","format":"date-time"},"validForSeconds":{"type":"integer","example":60},"slots":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","example":"0-30"},"available":{"type":"boolean"},"capacity":{"type":"integer"}}}},"notes":{"type":"array","items":{"type":"string"}},"disclaimer":{"type":"string"},"cta":{"type":"object","properties":{"href":{"type":"string","format":"uri"}}},"canonicalUrl":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid parameters"},"429":{"description":"Rate limit exceeded"}}}}}}