{"openapi":"3.1.0","info":{"title":"TV Install Chicago Booking","version":"1.0.0","description":"This server books real in-home appointments with TV Install Chicago (Chicago and the surrounding suburbs). Typical flow: call check_availability (pass the customer's address), let the customer choose a date and time, collect their full name, mobile phone number and service address, read every detail back to them, and only after they say yes call book_appointment with customer_confirmed=true. All times are America/Chicago local time. Never invent availability and never quote prices; the business confirms pricing directly with the customer."},"servers":[{"url":"https://tv-ops-public-api.tvinstallchicago.workers.dev"}],"paths":{"/ai/availability":{"get":{"operationId":"checkAvailability","summary":"List open appointment start times (America/Chicago) for the next three weeks. Days marked \"suggested\" are days we already have work near the given address.","parameters":[{"name":"address","in":"query","schema":{"type":"string"},"description":"Service address (street, city, ZIP). Optional, but helps us suggest days we are already nearby."},{"name":"date","in":"query","schema":{"type":"string"},"description":"Only return this date (YYYY-MM-DD). Omit to get the next several open days."},{"name":"duration_minutes","in":"query","schema":{"type":"integer"},"description":"Expected job length in minutes. Defaults to 90. Use ~150 for two TVs, ~240 for a media wall."}],"responses":{"200":{"description":"Open days and start times."}}}},"/ai/book":{"post":{"operationId":"bookAppointment","summary":"Book a real in-home appointment. Only call after the customer has chosen an open slot from check_availability and explicitly confirmed their name, phone, address, date, time and service.","x-openai-isConsequential":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_name":{"type":"string","description":"Customer full name."},"phone":{"type":"string","description":"Customer mobile number. Confirmation and reminder texts go here."},"address":{"type":"string","description":"Full service address including city and ZIP."},"date":{"type":"string","description":"Appointment date, YYYY-MM-DD, taken from check_availability."},"time":{"type":"string","description":"Start time, 24-hour HH:MM Central (e.g. \"14:30\"), taken from check_availability."},"service_description":{"type":"string","description":"What the customer needs, e.g. \"Mount 65in TV on drywall above fireplace, hide wires\"."},"email":{"type":"string","description":"Customer email (optional)."},"notes":{"type":"string","description":"Anything useful for the installer: wall type, TV sizes, parking, gate codes, etc. (optional)."},"language":{"type":"string","enum":["en","es","pl"],"description":"Preferred language for texts. Default en."},"duration_minutes":{"type":"integer","description":"Same value used for check_availability, if any."},"customer_confirmed":{"type":"boolean","description":"Must be true. Set only after reading all details back to the customer and they agreed to book."}},"required":["customer_name","phone","address","date","time","service_description","customer_confirmed"],"additionalProperties":false}}}},"responses":{"201":{"description":"Appointment booked."},"400":{"description":"Not booked; the error explains why (slot taken, missing field, not confirmed)."}}}},"/ai/info":{"get":{"operationId":"getBusinessInfo","summary":"Services offered, service area, hours and contact details for TV Install Chicago.","responses":{"200":{"description":"Business details."}}}}}}