{"openapi":"3.1.0","info":{"title":"LensAs Optical Intelligence","version":"0.1.0","description":"Public educational optical knowledge and calculations. No customer data or authenticated SaaS functionality."},"servers":[{"url":"https://lensas.com.br/optical-api"}],"paths":{"/v1/search_optical_knowledge":{"post":{"operationId":"search_optical_knowledge","summary":"Search public optical education in Portuguese or English. Returns source excerpts, not medical advice or customer records.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":160},"language":{"default":"pt","type":"string","enum":["pt","en"]},"limit":{"default":5,"type":"integer","minimum":1,"maximum":10}},"required":["query"],"additionalProperties":false}}}},"responses":{"200":{"description":"Result with units, method version and sources","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"413":{"description":"Body exceeds 16 KB"},"429":{"description":"Rate limit exceeded"}}}},"/v1/get_optical_topic":{"post":{"operationId":"get_optical_topic","summary":"Read a public optical topic by stable ID with references, related topics and limitations.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","enum":["pupillary-distance","centration","decentration","frame-geometry","refractive-index","lens-materials","thickness-factors","vertex-distance","pantoscopic-tilt","prescription-transposition","prentice-rule","remote-edging"]},"language":{"default":"pt","type":"string","enum":["pt","en"]}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Result with units, method version and sources","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"413":{"description":"Body exceeds 16 KB"},"429":{"description":"Rate limit exceeded"}}}},"/v1/transpose_prescription":{"post":{"operationId":"transpose_prescription","summary":"Transpose sphere/cylinder notation without changing the prescription. Dioptres and degrees; axis 0–180. Does not diagnose or generate prescriptions.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sphere":{"type":"number","minimum":-60,"maximum":60},"cylinder":{"type":"number","minimum":-30,"maximum":30},"axis":{"type":"number","minimum":0,"maximum":180},"language":{"default":"pt","type":"string","enum":["pt","en"]}},"required":["sphere","cylinder","axis"],"additionalProperties":false}}}},"responses":{"200":{"description":"Result with units, method version and sources","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"413":{"description":"Body exceeds 16 KB"},"429":{"description":"Rate limit exceeded"}}}},"/v1/calculate_decentration":{"post":{"operationId":"calculate_decentration","summary":"Symmetric boxing frame only: (A + bridge)/2 minus monocular PD, per eye, in mm. Positive nasal; negative temporal. No vertical or prescribed prism compensation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"a":{"type":"number","minimum":1,"maximum":100},"bridge":{"type":"number","minimum":0,"maximum":50},"pdRight":{"type":"number","minimum":1,"maximum":80},"pdLeft":{"type":"number","minimum":1,"maximum":80},"language":{"default":"pt","type":"string","enum":["pt","en"]}},"required":["a","bridge","pdRight","pdLeft"],"additionalProperties":false}}}},"responses":{"200":{"description":"Result with units, method version and sources","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"413":{"description":"Body exceeds 16 KB"},"429":{"description":"Rate limit exceeded"}}}},"/v1/calculate_prism":{"post":{"operationId":"calculate_prism","summary":"Educational Prentice approximation: absolute meridional power times displacement in cm. Returns magnitude only, no base direction or prescription recommendation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"meridionalPower":{"type":"number","minimum":-60,"maximum":60},"displacementMm":{"type":"number","minimum":0,"maximum":50},"language":{"default":"pt","type":"string","enum":["pt","en"]}},"required":["meridionalPower","displacementMm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Result with units, method version and sources","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"413":{"description":"Body exceeds 16 KB"},"429":{"description":"Rate limit exceeded"}}}}}}