{
  "version": 1,
  "availability": "Requires an installed plugin offering the requested action; choose from its Quick Actions list",
  "docsUrl": "https://docs.hypermatic.com/bannerify/automation/parameters",
  "inputLimits": {
    "quickActionsPasteMaxCharacters": 149,
    "parserOptionsMaxCharacters": 16384,
    "maxTargetIds": 100,
    "rejectedAmbiguousLength": 150
  },
  "optionDefinitionFormat": "Hypermatic parameter fields v1; not JSON Schema",
  "plugin": "bannerify",
  "parameters": [
    "command",
    "parameters"
  ],
  "shortcuts": [
    {
      "command": "open",
      "name": "Open Bannerify",
      "action": "open",
      "advanced": false,
      "parameters": [],
      "target": "none"
    },
    {
      "command": "shortcut-export",
      "name": "Export Selected Banners",
      "action": "export",
      "advanced": false,
      "parameters": [
        {
          "name": "Format",
          "key": "format",
          "allowFreeform": false,
          "optional": true
        },
        {
          "name": "Frames or sections",
          "key": "source",
          "allowFreeform": false,
          "optional": true
        }
      ],
      "target": "current selection"
    },
    {
      "command": "shortcut-create",
      "name": "Create New Banner",
      "action": "create",
      "advanced": false,
      "parameters": [
        {
          "name": "Name",
          "key": "name",
          "allowFreeform": true,
          "optional": false
        },
        {
          "name": "Width (px)",
          "key": "width",
          "allowFreeform": true,
          "optional": false
        },
        {
          "name": "Height (px)",
          "key": "height",
          "allowFreeform": true,
          "optional": false
        }
      ],
      "mapping": "name, width and height form one sizes item",
      "target": "none"
    },
    {
      "command": "shortcut-layouts",
      "name": "Resize Selected Banners",
      "action": "layouts",
      "advanced": false,
      "parameters": [
        {
          "name": "Name",
          "key": "name",
          "allowFreeform": true,
          "optional": false
        },
        {
          "name": "Width (px)",
          "key": "width",
          "allowFreeform": true,
          "optional": false
        },
        {
          "name": "Height (px)",
          "key": "height",
          "allowFreeform": true,
          "optional": false
        }
      ],
      "mapping": "name, width and height form one sizes item",
      "target": "current selection"
    },
    {
      "command": "advanced-export",
      "name": "Advanced: Export Selected Banners",
      "action": "export",
      "advanced": true,
      "parameters": [
        {
          "name": "Target (optional node IDs)",
          "key": "target",
          "allowFreeform": true,
          "optional": true
        },
        {
          "name": "Advanced options (JSON)",
          "key": "options",
          "allowFreeform": true,
          "optional": true
        }
      ],
      "target": "optional node IDs or current selection"
    },
    {
      "command": "advanced-create",
      "name": "Advanced: Create New Banner",
      "action": "create",
      "advanced": true,
      "parameters": [
        {
          "name": "Advanced options (JSON)",
          "key": "options",
          "allowFreeform": true,
          "optional": false
        }
      ],
      "target": "none"
    },
    {
      "command": "advanced-layouts",
      "name": "Advanced: Resize Selected Banners",
      "action": "layouts",
      "advanced": true,
      "parameters": [
        {
          "name": "Advanced options (JSON)",
          "key": "options",
          "allowFreeform": true,
          "optional": false
        },
        {
          "name": "Target (optional node IDs)",
          "key": "target",
          "allowFreeform": true,
          "optional": true
        }
      ],
      "target": "optional node IDs or current selection"
    },
    {
      "command": "advanced-variants",
      "name": "Advanced: variants",
      "action": "variants",
      "advanced": true,
      "parameters": [
        {
          "name": "Advanced options (JSON)",
          "key": "options",
          "allowFreeform": true,
          "optional": false
        },
        {
          "name": "Target (optional node IDs)",
          "key": "target",
          "allowFreeform": true,
          "optional": true
        }
      ],
      "target": "optional node IDs or current selection"
    }
  ],
  "actions": {
    "open": {
      "description": "Open the normal interactive plugin",
      "fields": {},
      "target": "none",
      "execution": "builtin"
    },
    "export": {
      "description": "Export selected banners using saved animation settings without publishing",
      "fields": {
        "format": {
          "type": "string",
          "values": [
            "html",
            "googleads",
            "mp4",
            "webm",
            "gif",
            "webp",
            "apng",
            "png",
            "jpg",
            "pdf"
          ],
          "default": "html",
          "description": "HTML platform, animated format, or static PNG/JPG/PDF"
        },
        "source": {
          "type": "string",
          "values": [
            "frames",
            "sections"
          ],
          "default": "frames",
          "description": "Frame or Section/scene mode"
        }
      },
      "target": "many",
      "execution": "worker"
    },
    "create": {
      "description": "Create banner frames at explicit sizes",
      "fields": {
        "sizes": {
          "type": "array",
          "min": 1,
          "max": 20,
          "required": true,
          "item": {
            "type": "object",
            "description": "Named size",
            "fields": {
              "name": {
                "type": "string",
                "min": 1,
                "max": 120,
                "required": true,
                "description": "Name of the new item"
              },
              "width": {
                "type": "number",
                "min": 1,
                "max": 8192,
                "required": true,
                "description": "Width in pixels"
              },
              "height": {
                "type": "number",
                "min": 1,
                "max": 8192,
                "required": true,
                "description": "Height in pixels"
              }
            }
          },
          "description": "Named output dimensions"
        }
      },
      "target": "none",
      "execution": "worker"
    },
    "layouts": {
      "description": "Generate resized or smart-layout copies from explicit banner frames (maximum 200 outputs)",
      "fields": {
        "sizes": {
          "type": "array",
          "min": 1,
          "max": 20,
          "required": true,
          "item": {
            "type": "object",
            "description": "Named size",
            "fields": {
              "name": {
                "type": "string",
                "min": 1,
                "max": 120,
                "required": true,
                "description": "Name of the new item"
              },
              "width": {
                "type": "number",
                "min": 1,
                "max": 8192,
                "required": true,
                "description": "Width in pixels"
              },
              "height": {
                "type": "number",
                "min": 1,
                "max": 8192,
                "required": true,
                "description": "Height in pixels"
              }
            }
          },
          "description": "Named output dimensions"
        },
        "relayoutLayers": {
          "type": "boolean",
          "default": false,
          "description": "Use the existing smart layout generator"
        }
      },
      "target": "many",
      "execution": "worker"
    },
    "variants": {
      "description": "Create spreadsheet variants from explicit headers and text rows (maximum 200 outputs)",
      "fields": {
        "headers": {
          "type": "array",
          "required": true,
          "min": 1,
          "max": 50,
          "description": "Unique layer-name headers",
          "item": {
            "type": "string",
            "min": 1,
            "max": 200,
            "description": "Existing spreadsheet column name"
          }
        },
        "rows": {
          "type": "array",
          "required": true,
          "min": 1,
          "max": 100,
          "description": "Ordered rows; each row must match the header count",
          "item": {
            "type": "array",
            "min": 1,
            "max": 50,
            "description": "Cell values",
            "item": {
              "type": "string",
              "max": 12000,
              "description": "Cell text"
            }
          }
        },
        "source": {
          "type": "string",
          "values": [
            "frames",
            "sections"
          ],
          "default": "frames",
          "description": "Existing spreadsheet source mode"
        }
      },
      "target": "many",
      "execution": "worker"
    }
  },
  "examples": {
    "export": {
      "format": "mp4"
    },
    "create": {
      "sizes": [
        {
          "name": "Square",
          "width": 300,
          "height": 300
        }
      ]
    },
    "layouts": {
      "sizes": [
        {
          "name": "Square",
          "width": 300,
          "height": 300
        }
      ],
      "relayoutLayers": false
    },
    "variants": {
      "headers": [
        "Headline"
      ],
      "rows": [
        [
          "Summer sale"
        ],
        [
          "Winter sale"
        ]
      ],
      "source": "frames"
    }
  },
  "limitsAndBehavior": "MP4/WebM/GIF/WebP/APNG and static PNG/JPG/PDF reuse the existing canvas renderer and saved page export settings. Existing layer animations, custom keyframes, frame rate, repeat and quality are retained; only format and target mode are overridden. HTML also loads saved page settings. Export never uploads previews or saves one-shot overrides. Explicit targets must be included banners. Canvas runs accept at most 20 banners, dimensions up to 4096 pixels and a saved timeline up to 120 seconds. A failed banner fails the command instead of returning a partial ZIP. Native save dialogs may still appear. Canvas parameter exports require an active trial or Pro license, including WebP; the existing interactive WebP trial exception is unchanged. Other advertising platforms, timeline editing and publishing remain interactive. Layouts and variants create copies, with at most 200 outputs per command. Variants uses the existing spreadsheet column conventions: supply unique headers and equally sized rows, and inspect partial output before retrying a failure. Layouts uses frame mode; variants also supports Sections.",
  "completion": {
    "deadlineMs": 300000,
    "visibleNotifications": true,
    "nativeSaveDialog": true,
    "verifySavedArtifact": true
  },
  "invocation": "Figma Quick Actions or a verified host launcher; no REST/MCP launcher is provided",
  "results": "Normal Figma success/error notifications, document changes, native file downloads and published pages"
}
