{"openapi":"3.1.0","info":{"title":"The Third Way Company Contact API","version":"1.0.0","summary":"Backs the contact form at thethirdwaycompany.com/contact.","description":"Accepts contact-form submissions, verifies them, and forwards them to our inbox. Every submission must carry a Cloudflare Turnstile token minted during a real browser visit to /contact, and the form must have been open for a few seconds — automated agents cannot satisfy either check. Agents should not POST here; write to hello@thethirdwaycompany.com instead. Published for completeness and for the form itself.","contact":{"name":"The Third Way Company","url":"https://thethirdwaycompany.com","email":"hello@thethirdwaycompany.com"}},"servers":[{"url":"https://thethirdwaycompany.com"}],"externalDocs":{"description":"Human-readable API documentation","url":"https://thethirdwaycompany.com/docs#contact-api"},"paths":{"/api/contact":{"post":{"summary":"Submit the contact form","operationId":"submitContactForm","description":"Validates the payload, verifies the Turnstile token with Cloudflare, and delivers the message by email. Honeypot and timing checks absorb bot submissions with a plausible success response, so a 200 does not guarantee delivery.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSubmission"}}}},"responses":{"200":{"description":"Accepted (or absorbed as a bot — the response is identical by design).","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"}}}}}},"400":{"description":"Invalid payload, or Turnstile verification failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many submissions from one address (5 per hour).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server not configured to deliver mail; the error body points at the hello@ inbox.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Delivery to our inbox failed; the error body points at the hello@ inbox.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ContactSubmission":{"type":"object","required":["name","email","message","renderedAt","turnstileToken"],"properties":{"name":{"type":"string","minLength":2,"maxLength":100},"email":{"type":"string","format":"email","maxLength":254},"company":{"type":"string","maxLength":100},"message":{"type":"string","minLength":10,"maxLength":5000},"website":{"type":"string","description":"Honeypot field. Humans never see it; non-empty values are treated as bots."},"renderedAt":{"type":"integer","description":"Unix epoch milliseconds at which the form page was rendered; submissions under ~3 seconds are treated as bots."},"turnstileToken":{"type":"string","description":"Cloudflare Turnstile widget token from a real browser visit to /contact."}}},"Error":{"type":"object","properties":{"error":{"type":"string"}},"additionalProperties":true}}}}