{"openapi":"3.1.1","info":{"title":"Kairos Marketing Website API","version":"1.0.0","description":"Public endpoints operated by the Kairos marketing website. This specification does not expose customer restaurant data or the authenticated Kairos application API.","contact":{"name":"Kairos","url":"https://kairos.rest/en/about"}},"servers":[{"url":"https://kairos.rest","description":"Production marketing website"}],"externalDocs":{"description":"Kairos product documentation","url":"https://docs.kairos.rest/"},"paths":{"/api/contact":{"post":{"operationId":"submitWebsiteContactForm","summary":"Submit the website contact form","description":"Sends a sales or product enquiry to Kairos. This endpoint is intended for the public website contact form and does not access customer restaurant data.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}}},"responses":{"200":{"description":"The message was accepted and delivered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSuccess"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/api/legal/consent":{"post":{"operationId":"recordWebsiteConsentPreference","summary":"Record a website consent preference","description":"Records the cookie-consent categories selected by a visitor to the public Kairos website. It does not alter authenticated product permissions.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentRequest"}}}},"responses":{"200":{"description":"The consent preference was recorded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentSuccess"}}}},"400":{"$ref":"#/components/responses/BadRequest"}}}}},"components":{"schemas":{"ContactRequest":{"type":"object","additionalProperties":false,"required":["name","email","message"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the person contacting Kairos."},"email":{"type":"string","format":"email","description":"Reply address for the enquiry."},"message":{"type":"string","minLength":1,"description":"The enquiry sent to Kairos."}}},"ContactSuccess":{"type":"object","additionalProperties":false,"required":["message"],"properties":{"message":{"type":"string","example":"Message sent successfully"}}},"ConsentRequest":{"type":"object","additionalProperties":false,"required":["necessary","analytics","marketing","version","timestamp"],"properties":{"necessary":{"type":"boolean","description":"Whether necessary cookies are enabled."},"analytics":{"type":"boolean","description":"Whether analytics cookies are permitted."},"marketing":{"type":"boolean","description":"Whether marketing cookies are permitted."},"version":{"type":"string","minLength":1,"description":"Consent-policy version shown to the visitor."},"timestamp":{"type":"string","format":"date-time","description":"Time at which the visitor made the choice."}}},"ConsentSuccess":{"type":"object","additionalProperties":false,"required":["ok"],"properties":{"ok":{"type":"boolean","const":true}}},"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","resolution"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable explanation of the error."},"resolution":{"type":"string","description":"A concrete hint for resolving the error."},"details":{"type":"object","additionalProperties":true}}}}}},"responses":{"BadRequest":{"description":"The JSON body is malformed or fails validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"ServerError":{"description":"The request was valid but could not be completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}