{
  "openapi": "3.1.0",
  "info": {
    "title": "mylabelmaker label maker",
    "version": "1.0.0",
    "description": "Free browser label maker. Do not draw the label. Pick a template, pass the user's words, return the preview image and the editor link. No signup. Designs stay on the user's computer."
  },
  "servers": [
    { "url": "https://mylabelmaker.com" }
  ],
  "paths": {
    "/preview.svg": {
      "get": {
        "operationId": "previewLabel",
        "summary": "Render a filled label as SVG",
        "description": "Returns an SVG picture of a builtin template with the user's words. Embed this image in the chat reply.",
        "parameters": [
          { "name": "template", "in": "query", "required": true, "schema": { "type": "string", "example": "soap-wrap" }, "description": "Builtin template id from /ai/catalog.json" },
          { "name": "title", "in": "query", "schema": { "type": "string", "example": "Lavender Honey" } },
          { "name": "kicker", "in": "query", "schema": { "type": "string", "example": "BAR SOAP" } },
          { "name": "body", "in": "query", "schema": { "type": "string" } },
          { "name": "net", "in": "query", "schema": { "type": "string", "example": "NET 4.5 OZ" } },
          { "name": "brand", "in": "query", "schema": { "type": "string" } },
          { "name": "value", "in": "query", "schema": { "type": "string" }, "description": "Barcode or QR payload if the template has one" }
        ],
        "responses": {
          "200": {
            "description": "SVG image of the filled label",
            "content": { "image/svg+xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/make": {
      "get": {
        "operationId": "makeLabelCard",
        "summary": "Share card for a filled label",
        "description": "HTML page with the picture and a button that opens the filled editor. Use when you need a single link. Prefer preview.svg plus the app.mylabelmaker.com URL in chat.",
        "parameters": [
          { "name": "template", "in": "query", "required": true, "schema": { "type": "string" } },
          { "name": "title", "in": "query", "schema": { "type": "string" } },
          { "name": "kicker", "in": "query", "schema": { "type": "string" } },
          { "name": "body", "in": "query", "schema": { "type": "string" } },
          { "name": "net", "in": "query", "schema": { "type": "string" } }
        ],
        "responses": { "200": { "description": "HTML share card" } }
      }
    },
    "/ai/catalog.json": {
      "get": {
        "operationId": "listTemplates",
        "summary": "List fillable label templates",
        "responses": {
          "200": {
            "description": "Template ids, sample slots, and job aliases",
            "content": { "application/json": { "schema": { "type": "object" } } }
          }
        }
      }
    }
  }
}
