{"openapi":"3.1.0","info":{"title":"aiADS Public API","version":"1.0.0","summary":"Public contact and health endpoints for aiADS.","description":"The public API surface for aiADS contains one contact endpoint and one liveness endpoint. Product facts are published separately under /ai/.","contact":{"name":"aiNOW","email":"contact@ainow.ge","url":"https://aiads.ge"}},"servers":[{"url":"https://aiads.ge","description":"Production"}],"paths":{"/api/contact":{"post":{"operationId":"submitContact","summary":"Send a contact request","description":"Send a contact request to the aiNOW team. A phone number or an email address is required.","tags":["contact"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}}},"responses":{"200":{"description":"Request accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"400":{"description":"Invalid form data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Delivery failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/health":{"get":{"operationId":"getHealth","summary":"Liveness probe","tags":["system"],"responses":{"200":{"description":"Service is up","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}}}}},"components":{"schemas":{"Contact":{"type":"object","description":"At least one of phone or email is required.","properties":{"phone":{"type":"string","minLength":6,"maxLength":20,"pattern":"^[+\\d\\s()-]+$"},"email":{"type":"string","format":"email","maxLength":254},"name":{"type":"string","minLength":1,"maxLength":120},"message":{"type":"string","maxLength":5000}},"anyOf":[{"required":["phone"]},{"required":["email"]}],"additionalProperties":false},"Success":{"type":"object","properties":{"success":{"type":"boolean","const":true}},"required":["success"],"additionalProperties":false},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"object","additionalProperties":true}},"required":["error"]},"Health":{"type":"object","properties":{"status":{"type":"string","const":"ok"},"timestamp":{"type":"string","format":"date-time"}},"required":["status","timestamp"],"additionalProperties":false}}}}