Workflow JSON Format
A BioNodulo workflow is just data — a JSON document describing nodes, their parameters, and the edges between them. Because the format is plain JSON, you can version it in git, diff it in code review, generate it programmatically, and re-run it months later with identical results.
Top-level shape
{
"version": "1",
"name": "Germline variant calling (chr20)",
"nodes": [
{
"id": "fastq_in",
"type": "io.fastq_input",
"params": { "r1": "reads_1.fastq.gz", "r2": "reads_2.fastq.gz" },
"position": { "x": 80, "y": 120 }
},
{
"id": "bwa",
"type": "align.bwa_mem",
"params": { "threads": 8, "readGroup": "@RG\\tID:s1\\tSM:sample1" },
"position": { "x": 360, "y": 120 }
}
],
"edges": [
{
"id": "e1",
"source": "fastq_in",
"sourcePort": "reads",
"target": "bwa",
"targetPort": "reads"
}
],
"meta": {
"createdAt": "2026-01-01T00:00:00Z",
"engine": ">=1.0.0"
}
}Fields
| Field | Description |
|---|---|
version | Schema version of the workflow document. |
name | Human-readable workflow name. |
nodes[] | Each node’s id, type, params, and canvas position. |
nodes[].type | Fully-qualified node type (category.tool). |
nodes[].params | Parameter values keyed by parameter name. |
edges[] | Connections: source/target node ids and their ports. |
meta | Provenance, engine constraints, and other metadata. |
Reproducibility notes
- Pin node versions. When you reference registry nodes, the resolved version is recorded so the same code runs every time.
- Inputs are referenced, not embedded. Large datasets are referenced by handle/path; the document stays small and diffable.
- Engine constraints.
meta.enginerecords the minimum engine version a workflow needs, so an old graph won’t silently run on an incompatible engine.
Importing & exporting
- Export from the editor’s menu to download the JSON.
- Import by dragging a
.jsonfile onto the canvas or via New → Import. - Use the REST API to create and run workflows programmatically from the same JSON.