{"openapi":"3.1.0","info":{"title":"Book & Go Public Lead & Scheduling API","version":"1.0.0","summary":"Public endpoints that let agents submit leads or schedule a demo on behalf of a human user evaluating Book & Go — a white-label booking platform for sports venues.","description":"These endpoints are unauthenticated and CORS-enabled so AI agents can submit a quote request, contact sales, request a product brochure, or schedule a demo on behalf of the human they are assisting. Always confirm the payload with the human before submitting.","contact":{"name":"Book & Go","url":"https://www.bookandgo.app","email":"hello@bookandgo.app"},"license":{"name":"Proprietary"}},"servers":[{"url":"https://www.bookandgo.app"}],"tags":[{"name":"leads","description":"Submit a sales lead (quote, contact, brochure) on behalf of a human."},{"name":"scheduling","description":"Schedule a demo with the Book & Go team on behalf of a human."}],"paths":{"/api/quote-request":{"post":{"tags":["leads"],"summary":"Submit a quote request","description":"Submit a pricing quote request for a sports venue. The Book & Go team will follow up via email within 24 hours.","operationId":"submitQuoteRequest","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRequest"}}}},"responses":{"200":{"$ref":"#/components/responses/Success"},"400":{"$ref":"#/components/responses/ValidationError"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"500":{"$ref":"#/components/responses/ServerError"}}},"options":{"$ref":"#/components/pathItems/CorsPreflight"}},"/api/contact":{"post":{"tags":["leads"],"summary":"Submit a contact form","description":"Send a free-form message to the Book & Go team.","operationId":"submitContact","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}}},"responses":{"200":{"$ref":"#/components/responses/Success"},"400":{"$ref":"#/components/responses/ValidationError"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"500":{"$ref":"#/components/responses/ServerError"}}},"options":{"$ref":"#/components/pathItems/CorsPreflight"}},"/api/brochure-request":{"post":{"tags":["leads"],"summary":"Request the product brochure","description":"Email the Book & Go product brochure PDF to the provided address.","operationId":"submitBrochureRequest","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrochureRequest"}}}},"responses":{"200":{"$ref":"#/components/responses/Success"},"400":{"$ref":"#/components/responses/ValidationError"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"500":{"$ref":"#/components/responses/ServerError"}}},"options":{"$ref":"#/components/pathItems/CorsPreflight"}},"/api/scheduling/request-demo":{"post":{"tags":["scheduling"],"summary":"Request a demo meeting","description":"Schedule a demo meeting with the Book & Go team. A team member will follow up within 24 hours to confirm a time.","operationId":"requestDemo","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoRequest"}}}},"responses":{"200":{"$ref":"#/components/responses/Success"},"400":{"$ref":"#/components/responses/ValidationError"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"500":{"$ref":"#/components/responses/ServerError"}}},"options":{"$ref":"#/components/pathItems/CorsPreflight"}}},"components":{"schemas":{"QuoteRequest":{"type":"object","required":["name","email","sports"],"properties":{"name":{"type":"string","description":"Full name of the contact person."},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"country":{"type":"string"},"clubName":{"type":"string"},"clubLocation":{"type":"string"},"hasClub":{"type":"boolean"},"clubStatus":{"type":"string","enum":["launching-soon","exploring"]},"sports":{"type":"array","items":{"type":"string","enum":["padel","tennis","pickleball","wellness","gym","multi-sport"]},"minItems":1},"numberOfCourts":{"type":"string","enum":["1-3","4-8","9-15","16+"]},"numberOfMembers":{"type":"string","enum":["under-500","500-2000","2000-5000","5000+"]},"numberOfLocations":{"type":"integer","minimum":1},"currentSystem":{"type":"string","enum":["none","spreadsheets","other-software","custom"]},"features":{"type":"array","items":{"type":"string","enum":["bookings","payments","memberships","loyalty","tournaments","coaching","pos","rankings","openMatches","dynamicPricing"]}},"timeline":{"type":"string","enum":["asap","1-3months","3-6months","exploring"]},"budget":{"type":"string"},"additionalInfo":{"type":"string"},"locale":{"type":"string","example":"en"}}},"ContactRequest":{"type":"object","required":["name","email","message"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"whatsapp":{"type":"string"},"clubName":{"type":"string"},"message":{"type":"string","minLength":1}}},"BrochureRequest":{"type":"object","required":["name","email","interests"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"interests":{"type":"array","items":{"type":"string","enum":["padel","tennis","pickleball","wellness","gym","multi-sport"]},"minItems":1},"hasClub":{"type":"boolean"},"clubName":{"type":"string"},"clubStatus":{"type":"string"}}},"DemoRequest":{"type":"object","required":["name","email","phone"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string","description":"Phone / WhatsApp number with country code."},"country":{"type":"string"},"sports":{"type":"array","items":{"type":"string","enum":["padel","tennis","pickleball","wellness","gym","multi-sport"]}},"hasClub":{"type":"boolean"},"clubName":{"type":"string"},"clubLocation":{"type":"string"},"message":{"type":"string"}}},"SuccessResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean","const":true},"message":{"type":"string"}}},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","hint","docs"],"properties":{"code":{"type":"string","enum":["METHOD_NOT_ALLOWED","VALIDATION_ERROR","NOT_FOUND","INTERNAL_ERROR","BAD_REQUEST","INVALID_JSON","MISSING_FIELDS","INVALID_EMAIL","INVALID_INPUT"]},"message":{"type":"string"},"hint":{"type":"string"},"docs":{"type":"string","format":"uri"}}}}}},"responses":{"Success":{"description":"Submission accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"ValidationError":{"description":"Missing or invalid fields.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"MethodNotAllowed":{"description":"HTTP method not allowed for this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"Server-side error. Safe to retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"pathItems":{"CorsPreflight":{"summary":"CORS preflight","description":"Returns CORS headers so browser-based agents can call the endpoint.","responses":{"204":{"description":"No content."}}}}}}