Skip to content

Workflow Structure

A workflow is the top-level JSON document that FlowDrop reads and writes. It contains an array of nodes, an array of edges connecting them, and optional metadata.

interface Workflow {
id: string;
name: string;
description?: string;
nodes: WorkflowNode[];
edges: WorkflowEdge[];
metadata?: WorkflowMetadata;
}
FieldTypeRequiredDescription
idstringYesUnique identifier for the workflow (typically a UUID).
namestringYesHuman-readable name displayed in the editor navbar.
descriptionstringNoBrief summary of the workflow’s purpose.
nodesWorkflowNode[]YesArray of node instances placed on the canvas. See Node Structure.
edgesWorkflowEdge[]YesArray of connections between nodes. See Edge Structure.
metadataobjectNoVersion tracking and authoring information.
interface WorkflowMetadata {
version: string;
createdAt: string; // ISO 8601 timestamp
updatedAt: string; // ISO 8601 timestamp
author?: string;
tags?: string[];
versionId?: string; // UUID for this specific version
updateNumber?: number; // Incrementing revision counter
format?: WorkflowFormat; // "flowdrop" | "agentspec" | custom string
}

The format field determines which nodes appear in the sidebar and how the workflow is exported. The default is "flowdrop". Set it to "agentspec" for workflows compatible with the Oracle Open Agent Spec.

The smallest valid workflow — an empty canvas ready for editing:

{
"id": "my-workflow",
"name": "My Workflow",
"nodes": [],
"edges": []
}

A workflow with two connected nodes and complete metadata:

{
"id": "content-pipeline",
"name": "Content Processing Pipeline",
"description": "Load articles and analyze them with AI",
"nodes": [
{
"id": "content_loader.1",
"type": "universalNode",
"position": { "x": 0, "y": 100 },
"data": {
"label": "Content Loader",
"config": {
"contentType": "article",
"limit": 50
},
"metadata": {
"id": "content_loader",
"name": "Content Loader",
"type": "tool",
"description": "Load content for batch processing",
"category": "content",
"icon": "mdi:database-import",
"version": "1.0.0",
"inputs": [],
"outputs": [
{
"id": "items",
"name": "Items",
"type": "output",
"dataType": "array"
}
]
}
}
},
{
"id": "analyzer.1",
"type": "universalNode",
"position": { "x": 400, "y": 100 },
"data": {
"label": "AI Analyzer",
"config": {
"confidenceThreshold": 0.8
},
"metadata": {
"id": "ai_analyzer",
"name": "AI Analyzer",
"type": "tool",
"description": "AI-powered content analysis",
"category": "ai",
"icon": "mdi:brain",
"version": "1.0.0",
"inputs": [
{
"id": "content",
"name": "Content",
"type": "input",
"dataType": "array"
}
],
"outputs": [
{
"id": "results",
"name": "Results",
"type": "output",
"dataType": "json"
}
]
}
}
}
],
"edges": [
{
"id": "e-loader-analyzer",
"source": "content_loader.1",
"target": "analyzer.1",
"sourceHandle": "content_loader.1-output-items",
"targetHandle": "analyzer.1-input-content"
}
],
"metadata": {
"version": "1.0.0",
"createdAt": "2025-11-12T21:29:32.473Z",
"updatedAt": "2025-11-12T21:29:32.473Z",
"author": "demo",
"tags": ["ai", "content"],
"format": "flowdrop"
}
}

For programmatic access to workflows, see Creating Workflows — Import and Export.