{"openapi":"3.1.0","info":{"title":"Bay Area Mobile Dog Wash Booking API","description":"Check availability and request a mobile dog wash (the van comes to the customer's home; San Jose + nearby South Bay). Bookings are requests: the owner confirms shortly afterward and the customer then receives a confirmation email. Times are UTC ISO strings; present them in Pacific Time. First-time customers: promo code WASH10 ($10 off).","version":"1.0.0"},"servers":[{"url":"https://bayareamobiledogwash.com"}],"paths":{"/api/slots":{"get":{"operationId":"getAvailableSlots","summary":"List open wash appointment times","parameters":[{"name":"start","in":"query","required":true,"description":"First day to check (YYYY-MM-DD).","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"end","in":"query","required":true,"description":"Last day to check (YYYY-MM-DD). Two weeks out is a good default.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"responses":{"200":{"description":"Available times grouped by day (UTC ISO; show user Pacific Time).","content":{"application/json":{"schema":{"type":"object","properties":{"days":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","format":"date-time"}}}}}}}}}}},"/api/book":{"post":{"operationId":"bookWash","summary":"Request a mobile dog wash","description":"Files a booking REQUEST at one of the times from getAvailableSlots — the owner confirms it shortly afterward; the customer receives the confirmation email once approved (tell the user this). Confirm time (Pacific), name, email, service address, and dog size before calling. Payment is collected at the door.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["start","name","email","address","dogSize"],"properties":{"start":{"type":"string","format":"date-time","description":"Chosen slot start, UTC ISO exactly as returned by getAvailableSlots."},"name":{"type":"string","description":"Customer's name."},"email":{"type":"string","description":"Customer's email."},"phone":{"type":"string","description":"Customer's phone — strongly recommended."},"address":{"type":"string","description":"Service address the van comes to (street, city)."},"dogSize":{"type":"string","enum":["Small","Medium","Large","XL / Giant"],"description":"Dog size tier, sets the price: Small (Under 20 lbs) $75; Medium (20–60 lbs) $95; Large (60–100 lbs) $115; XL / Giant (100+ lbs) $155."},"dogName":{"type":"string","description":"The dog's name."},"addons":{"type":"array","items":{"type":"string","enum":["De-shedding treatment","Flea shampoo","Deep clean"]},"description":"Optional add-ons."},"promo":{"type":"string","description":"Promo code — WASH10 ($10 off) for first-time customers."},"notes":{"type":"string","description":"Parking, gate codes, coat condition, behavior notes."},"source":{"type":"string","enum":["ai-agent"],"description":"Always send \"ai-agent\"."}}}}}},"responses":{"200":{"description":"Booking request accepted. `pending: true` means it awaits owner approval (the normal case).","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"pending":{"type":"boolean"},"start":{"type":"string","format":"date-time"},"price":{"type":"string"}}}}}},"409":{"description":"Slot just taken, day filled, or under the minimum notice — pick another time."}}}}}}