{"openapi":"3.1.0","info":{"title":"memegen-rs","description":"A minimal, stateless meme generator HTTP API and web UI in pure Rust. Every meme is just a URL.","contact":{"name":"Misha Kolesnik","email":"misha@kolesnik.io"},"license":{"name":"MIT","identifier":"MIT"},"version":"0.1.2"},"paths":{"/images/custom/{text}":{"get":{"tags":[],"operationId":"render_custom","parameters":[{"name":"text","in":"path","description":"Caption lines and extension","required":true,"schema":{"type":"string"}},{"name":"background","in":"query","description":"Source image URL","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Rendered meme on a custom background","content":{"image/*":{}}}}}},"/images/{filename}":{"get":{"tags":[],"operationId":"render_blank","parameters":[{"name":"filename","in":"path","description":"Template ID and extension, e.g. fry.png","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Blank template","content":{"image/*":{}}}}}},"/images/{id}/{text}":{"get":{"tags":[],"operationId":"render_text","parameters":[{"name":"id","in":"path","description":"Template ID","required":true,"schema":{"type":"string"}},{"name":"text","in":"path","description":"Caption lines and extension, e.g. top/bottom.png","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Rendered meme","content":{"image/*":{}}}}}},"/templates":{"get":{"tags":[],"operationId":"list_templates","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TemplateDto"}}}}}}}},"/templates/{id}":{"get":{"tags":[],"operationId":"get_template","parameters":[{"name":"id","in":"path","description":"Template ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateDto"}}}},"404":{"description":""}}}}},"components":{"schemas":{"ExampleDto":{"type":"object","required":["text","url"],"properties":{"text":{"type":"array","items":{"type":"string"}},"url":{"type":"string"}}},"TemplateDto":{"type":"object","required":["id","name","lines","styles","keywords","blank","example"],"properties":{"aliases":{"type":"array","items":{"type":"string"}},"blank":{"type":"string"},"example":{"$ref":"#/components/schemas/ExampleDto"},"id":{"type":"string"},"keywords":{"type":"array","items":{"type":"string"}},"lines":{"type":"integer","minimum":0},"name":{"type":"string"},"rank":{"type":["integer","null"],"format":"int32","minimum":0},"source":{"type":["string","null"]},"styles":{"type":"array","items":{"type":"string"}}}}}}}