{"openapi":"3.1.0","info":{"title":"Break & Make AI Job Booking API","version":"2.0.0","description":"Authenticated machine-to-machine job booking submission. A successful response confirms that Break & Make received the booking request and returns a booking reference; timing and access remain subject to direct confirmation."},"servers":[{"url":"https://breakmake.nz"}],"paths":{"/api/agent/bookings":{"post":{"operationId":"bookJob","summary":"Book a job","description":"Requires a client-specific bearer credential and a unique Idempotency-Key. Turnstile is not used on this authenticated machine channel.","security":[{"agentBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"responses":{"200":{"description":"Idempotent replay of an already received booking","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingConfirmation"}}}},"201":{"description":"Booking received","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingConfirmation"}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid agent credential"},"409":{"description":"Idempotency key reused with different content"},"429":{"description":"Client quota reached"}}}}},"components":{"securitySchemes":{"agentBearer":{"type":"http","scheme":"bearer"}},"schemas":{"Booking":{"type":"object","additionalProperties":false,"required":["name","message"],"properties":{"name":{"type":"string","minLength":1,"maxLength":160},"business":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","maxLength":80},"location":{"type":"string","maxLength":240},"message":{"type":"string","minLength":1,"maxLength":5000},"services":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["Industrial electrical or controls","Pumps, irrigation or filtration","Maintenance or fault finding","Rural electrical","Commercial electrical","Residential electrical","Not sure yet"]}},"urgency":{"type":"string","enum":["low","medium","high","the world is ending"]},"callbackDays":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["Monday","Tuesday","Wednesday","Thursday","Friday"]}},"callbackPeriods":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["Morning","Afternoon"]}}},"anyOf":[{"required":["email"]},{"required":["phone"]}]},"BookingConfirmation":{"type":"object","required":["ok","bookingReference","status","duplicate"],"properties":{"ok":{"const":true},"bookingReference":{"type":"string","format":"uuid"},"status":{"const":"received"},"duplicate":{"type":"boolean"}}}}}}