{"openapi":"3.1.0","info":{"title":"o365hq.com public API","version":"1.0.0","description":"Public JSON APIs of IT Partner (o365hq.com): capture a lead, request a human-confirmed quote, and save/resume a subscription project spec. All endpoints are unauthenticated and rate-limit politely. A human reads every submission the same business day. For agent tooling (catalog search, live plan pricing, core-licensing calculator) prefer the MCP server at /api/mcp.","contact":{"name":"IT Partner","email":"sales@o365hq.com","url":"https://o365hq.com/contact"}},"servers":[{"url":"https://o365hq.com"}],"paths":{"/api/leads":{"post":{"operationId":"createLead","summary":"Leave contact details / a message for the team","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","source"],"properties":{"email":{"type":"string","format":"email","maxLength":320},"source":{"type":"string","maxLength":48,"description":"Where this lead came from, e.g. contact-form, tenant-optimizer, agent"},"context":{"type":"object","additionalProperties":true,"description":"Free-form context (name, company, seats, message, …)"}}}}}},"responses":{"200":{"description":"Stored","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"}}}}}},"400":{"description":"Invalid request"},"503":{"description":"Storage temporarily unavailable — retry later or email instead"}}}},"/api/quotes":{"post":{"operationId":"requestQuote","summary":"Request a formal quote (human-confirmed)","description":"Creates a quote request. A person reviews it and replies the same business day — quotes are never auto-issued. Attach a project spec (from the build wizard or your own structure) for a faster, more precise answer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","maxLength":320},"company":{"type":"string","maxLength":200},"phone":{"type":"string","maxLength":50},"message":{"type":"string","maxLength":4000},"spec":{"type":"object","additionalProperties":true,"description":"Optional structured need (plans, seats, services)"}}}}}},"responses":{"200":{"description":"Quote request registered","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"Quote request reference id"}}}}}},"400":{"description":"Invalid request"},"503":{"description":"Storage temporarily unavailable"}}}},"/api/projects":{"post":{"operationId":"saveProject","summary":"Save a subscription project spec for later","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","spec"],"properties":{"email":{"type":"string","format":"email"},"spec":{"type":"object","additionalProperties":true}}}}}},"responses":{"200":{"description":"Saved","content":{"application/json":{"schema":{"type":"object","properties":{"resumeToken":{"type":"string","format":"uuid"}}}}}},"400":{"description":"Invalid request"},"503":{"description":"Storage temporarily unavailable"}}}},"/api/projects/{token}":{"get":{"operationId":"resumeProject","summary":"Load a previously saved project spec","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The saved spec","content":{"application/json":{"schema":{"type":"object","properties":{"spec":{"type":"object","additionalProperties":true}}}}}},"404":{"description":"Unknown token"}}}}},"externalDocs":{"description":"LLM-facing site map (llms.txt standard)","url":"https://o365hq.com/llms.txt"}}