{ "kind": "open-flow-workflow", "version": 1, "name": "Capture a Public Page with Latchshot", "content": { "modelVersion": 14, "document": { "bindings": {}, "graph": { "nodes": { "n_2772866660db22c6": { "name": "Capture a public page", "kind": "start", "inputDefs": [] }, "n_706218b316e4744d": { "inputs": { "url": { "kind": "value", "value": "https://example.com" }, "kind": { "kind": "value", "value": "screenshot" }, "format": { "kind": "value", "value": "png" }, "width": { "kind": "value", "value": 1440 }, "height": { "kind": "value", "value": 900 }, "fullPage": { "kind": "value", "value": false }, "delay": { "kind": "value", "value": 250 } }, "name": "Render the page as PNG", "kind": "task", "task": { "inputs": [ { "description": "The public HTTP or HTTPS page URL. Latchshot rejects private, special-use, credential-bearing, and non-web-port targets.", "jsonSchema": { "type": "string", "maxLength": 2048, "format": "uri", "description": "The public HTTP or HTTPS page URL. Latchshot rejects private, special-use, credential-bearing, and non-web-port targets." }, "nullable": false, "handle": "url" }, { "description": "The artifact family to render. Defaults to screenshot.", "jsonSchema": { "type": "string", "enum": [ "screenshot", "pdf" ], "description": "The artifact family to render. Defaults to screenshot." }, "nullable": true, "handle": "kind", "value": null }, { "description": "The screenshot image format. PDF renders always return PDF.", "jsonSchema": { "type": "string", "enum": [ "png", "jpeg" ], "description": "The screenshot image format. PDF renders always return PDF." }, "nullable": true, "handle": "format", "value": null }, { "description": "The browser viewport width in CSS pixels. Defaults to 1440.", "jsonSchema": { "type": "integer", "minimum": 320, "maximum": 2560, "description": "The browser viewport width in CSS pixels. Defaults to 1440." }, "nullable": true, "handle": "width", "value": null }, { "description": "The browser viewport height in CSS pixels. Defaults to 900.", "jsonSchema": { "type": "integer", "minimum": 240, "maximum": 1440, "description": "The browser viewport height in CSS pixels. Defaults to 900." }, "nullable": true, "handle": "height", "value": null }, { "description": "The device scale factor for screenshot output. Defaults to 1.", "jsonSchema": { "type": "integer", "minimum": 1, "maximum": 2, "description": "The device scale factor for screenshot output. Defaults to 1." }, "nullable": true, "handle": "scale", "value": null }, { "description": "Whether to capture the bounded full document height. Defaults to false.", "jsonSchema": { "type": "boolean", "description": "Whether to capture the bounded full document height. Defaults to false." }, "nullable": true, "handle": "fullPage", "value": null }, { "description": "The browser lifecycle event awaited before the optional delay. Defaults to domcontentloaded.", "jsonSchema": { "type": "string", "enum": [ "load", "domcontentloaded", "networkidle" ], "description": "The browser lifecycle event awaited before the optional delay. Defaults to domcontentloaded." }, "nullable": true, "handle": "waitUntil", "value": null }, { "description": "Additional wait in milliseconds after the lifecycle event. Defaults to 0.", "jsonSchema": { "type": "integer", "minimum": 0, "maximum": 3000, "description": "Additional wait in milliseconds after the lifecycle event. Defaults to 0." }, "nullable": true, "handle": "delay", "value": null }, { "description": "The browser navigation timeout in milliseconds. Defaults to 15000.", "jsonSchema": { "type": "integer", "minimum": 3000, "maximum": 30000, "description": "The browser navigation timeout in milliseconds. Defaults to 15000." }, "nullable": true, "handle": "timeout", "value": null }, { "description": "Whether to emulate a dark color-scheme preference. Defaults to false.", "jsonSchema": { "type": "boolean", "description": "Whether to emulate a dark color-scheme preference. Defaults to false." }, "nullable": true, "handle": "darkMode", "value": null }, { "description": "Whether to emulate reduced motion for a stable capture. Defaults to true.", "jsonSchema": { "type": "boolean", "description": "Whether to emulate reduced motion for a stable capture. Defaults to true." }, "nullable": true, "handle": "reducedMotion", "value": null }, { "description": "The paper size for PDF rendering. Defaults to A4.", "jsonSchema": { "type": "string", "enum": [ "A4", "Letter", "Legal" ], "description": "The paper size for PDF rendering. Defaults to A4." }, "nullable": true, "handle": "paper", "value": null }, { "description": "Whether PDF output should use landscape orientation. Defaults to false.", "jsonSchema": { "type": "boolean", "description": "Whether PDF output should use landscape orientation. Defaults to false." }, "nullable": true, "handle": "landscape", "value": null } ], "outputs": [ { "description": "A rendered artifact uploaded to connector transit storage.", "jsonSchema": { "type": "object", "properties": { "name": { "type": "string", "description": "The generated artifact filename." }, "mimetype": { "type": "string", "enum": [ "image/png", "image/jpeg", "application/pdf" ], "description": "The artifact MIME type." }, "s3url": { "type": "string", "format": "uri", "description": "The transit URL for downloading the rendered artifact." }, "sizeBytes": { "type": "integer", "minimum": 0, "description": "The artifact size in bytes." } }, "required": [ "name", "mimetype", "s3url", "sizeBytes" ], "additionalProperties": false, "description": "A rendered artifact uploaded to connector transit storage." }, "nullable": false, "handle": "file" }, { "description": "Bounded render diagnostics returned by Latchshot response headers.", "jsonSchema": { "type": "object", "properties": { "renderMs": { "type": "integer", "minimum": 0, "description": "The server-side render duration in milliseconds." }, "navigation": { "type": "string", "enum": [ "complete", "timed-out" ], "description": "Whether browser navigation completed before capture." }, "fonts": { "type": "string", "enum": [ "original", "fallback" ], "description": "Whether the page used its original fonts or a fallback state." }, "scripts": { "type": "string", "enum": [ "active", "paused" ], "description": "Whether page scripts stayed active or were paused." } }, "additionalProperties": false, "description": "Bounded render diagnostics returned by Latchshot response headers." }, "nullable": true, "handle": "diagnostics" }, { "description": "The successful-render quota snapshot returned with the artifact.", "jsonSchema": { "type": "object", "properties": { "limit": { "type": "integer", "minimum": 0, "description": "The successful-render allowance for the current UTC month." }, "remaining": { "type": "integer", "minimum": 0, "description": "The successful renders remaining in the current month." }, "resetAt": { "type": "string", "format": "date-time", "description": "The start of the next UTC calendar month." } }, "additionalProperties": false, "description": "The successful-render quota snapshot returned with the artifact." }, "nullable": true, "handle": "quota" } ], "name": "Render the page as PNG", "executor": { "kind": "connector", "action": "latchshot.capture_page" } } }, "n_2116243661d86473": { "name": "Rendered PNG", "kind": "outputs", "outputDefs": [ { "jsonSchema": { "type": "object", "properties": { "name": { "type": "string", "description": "The generated artifact filename." }, "mimetype": { "type": "string", "enum": [ "image/png", "image/jpeg", "application/pdf" ], "description": "The artifact MIME type." }, "s3url": { "type": "string", "format": "uri", "description": "The transit URL for downloading the rendered artifact." }, "sizeBytes": { "type": "integer", "minimum": 0, "description": "The artifact size in bytes." } }, "required": [ "name", "mimetype", "s3url", "sizeBytes" ], "additionalProperties": false, "description": "A rendered artifact uploaded to connector transit storage." }, "nullable": false, "handle": "file" }, { "jsonSchema": { "type": "object", "properties": { "renderMs": { "type": "integer", "minimum": 0, "description": "The server-side render duration in milliseconds." }, "navigation": { "type": "string", "enum": [ "complete", "timed-out" ], "description": "Whether browser navigation completed before capture." }, "fonts": { "type": "string", "enum": [ "original", "fallback" ], "description": "Whether the page used its original fonts or a fallback state." }, "scripts": { "type": "string", "enum": [ "active", "paused" ], "description": "Whether page scripts stayed active or were paused." } }, "additionalProperties": false, "description": "Bounded render diagnostics returned by Latchshot response headers." }, "nullable": true, "handle": "diagnostics" } ], "outputMappings": { "file": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_706218b316e4744d", "output": "file" } ] }, "diagnostics": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_706218b316e4744d", "output": "diagnostics" } ] } } } }, "edges": [ { "source": "n_2772866660db22c6", "target": "n_706218b316e4744d" }, { "source": "n_706218b316e4744d", "target": "n_2116243661d86473" } ] } }, "modules": {} }, "presentation": { "designer": { "version": 1, "flow": { "direction": "vertical" } } } }