{
  "name": "image.resize",
  "description": "Resizes an image to the specified width and height; useful for generating thumbnails or fitting screen sizes",
  "signature": {
    "input": {
      "kind": "image-file",
      "description": "Source image filename or stream to resize",
      "required": true,
      "mode": "ValueOrExpression"
    },
    "children": {
      "type": {
        "type": "string",
        "kind": "image-format",
        "description": "Output image format: png, jpeg, bmp, gif, tga, pbm, tiff, or webp",
        "required": false,
        "mode": "ValueOrExpression",
        "cardinality": "ZeroOrOne",
        "default": "png",
        "role": "Option",
        "projection": "Value"
      },
      "dest": {
        "type": "string",
        "kind": "image-file",
        "description": "Optional destination filename; when supplied, the image is saved to disk instead of returned as a stream",
        "required": false,
        "mode": "ValueOrExpression",
        "cardinality": "ZeroOrOne",
        "role": "Option",
        "projection": "Value"
      },
      "width": {
        "type": "int",
        "kind": "image-dimensions",
        "description": "Target width in pixels",
        "required": false,
        "mode": "ValueOrExpression",
        "cardinality": "ZeroOrOne",
        "role": "Option",
        "projection": "Value"
      },
      "height": {
        "type": "int",
        "kind": "image-dimensions",
        "description": "Target height in pixels",
        "required": false,
        "mode": "ValueOrExpression",
        "cardinality": "ZeroOrOne",
        "role": "Option",
        "projection": "Value"
      }
    },
    "output": {
      "mode": "Both",
      "kind": "image",
      "description": "Resolves to the resized image stream unless [dest] is supplied, in which case the resized image is saved to disk and nothing is returned"
    }
  }
}
