{"components":{"schemas":{"Error":{"properties":{"error":{"properties":{"code":{"type":"string"},"details":{"items":{"type":"string"},"type":"array"},"message":{"type":"string"}},"type":"object"}},"type":"object"},"TeeTime":{"properties":{"available":{"type":"boolean"},"booking_url":{"type":["string","null"]},"course":{"type":"object"},"distance_miles":{"type":["number","null"]},"holes":{"items":{"enum":[9,18],"type":"integer"},"type":"array"},"last_updated":{"format":"date-time","type":["string","null"]},"players_available":{"type":["integer","null"]},"pricing":{"type":"object"},"start_time":{"format":"date-time","type":"string"},"tee_time_id":{"type":"string"},"timezone":{"example":"America/Denver","type":"string"},"verification_source":{"enum":["cache","provider"],"type":"string"}},"required":["tee_time_id","course","start_time","timezone","pricing","booking_url","available"],"type":"object"}},"securitySchemes":{"ApiKeyAuth":{"in":"header","name":"X-API-Key","type":"apiKey"},"BearerAuth":{"scheme":"bearer","type":"http"}}},"info":{"description":"Agent-ready endpoints for searching cached Utah tee time inventory and preparing provider handoffs.","title":"Utah Tee Times Agent API","version":"2026-05-05"},"openapi":"3.1.0","paths":{"/.well-known/openapi.json":{"get":{"responses":{"200":{"description":"OpenAPI JSON"}},"summary":"OpenAPI document"}},"/v1/courses":{"get":{"responses":{"200":{"description":"Course list"}},"summary":"List configured courses"}},"/v1/tee-times/hold":{"post":{"responses":{"501":{"description":"Provider holds are not supported yet"}},"summary":"Request a provider hold"}},"/v1/tee-times/search":{"get":{"parameters":[{"in":"query","name":"date","schema":{"format":"date","type":"string"}},{"in":"query","name":"lat","schema":{"type":"number"}},{"in":"query","name":"lng","schema":{"type":"number"}},{"in":"query","name":"radius_miles","schema":{"type":"number"}},{"description":"HH:MM in local Utah time","in":"query","name":"time_start","schema":{"type":"string"}},{"description":"HH:MM in local Utah time","in":"query","name":"time_end","schema":{"type":"string"}},{"in":"query","name":"players","schema":{"maximum":4,"minimum":1,"type":"integer"}},{"description":"Comma-separated 9 and/or 18","in":"query","name":"holes","schema":{"type":"string"}},{"in":"query","name":"min_price","schema":{"type":"number"}},{"in":"query","name":"max_price","schema":{"type":"number"}},{"in":"query","name":"course_name","schema":{"type":"string"}},{"in":"query","name":"region","schema":{"type":"string"}},{"in":"query","name":"provider","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"integer"}},{"in":"query","name":"sort","schema":{"enum":["time","price","distance"],"type":"string"}}],"responses":{"200":{"description":"Search results"},"400":{"description":"Invalid request"}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"summary":"Search cached tee times with query parameters"},"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"date":{"format":"date","type":"string"},"filters":{"type":"object"},"holes":{"items":{"enum":[9,18],"type":"integer"},"type":"array"},"limit":{"type":"integer"},"location":{"type":"object"},"players":{"maximum":4,"minimum":1,"type":"integer"},"time_window":{"type":"object"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"Search results"},"400":{"description":"Invalid request"}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"summary":"Search cached tee times"}},"/v1/tee-times/verify":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"tee_time_id":{"type":"string"}},"required":["tee_time_id"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Verification result"},"404":{"description":"Tee time not found"}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"summary":"Verify a tee time against the current cache"}}},"servers":[{"url":"http://api.utahteetime.com"}]}
