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": "2.0",
"app": "bionodulo",
"name": "Germline variant calling (chr20)",
"description": "Align paired-end reads to a reference and call germline variants.",
"nodes": [
{
"id": "reads_001",
"type": "input_fastq",
"position": [80, 120],
"params": {
"sample_name": "sample1",
"reads": ["reads_1.fastq.gz", "reads_2.fastq.gz"]
}
},
{
"id": "bwa_001",
"type": "bwa_mem",
"position": [400, 120],
"params": { "threads": 8, "read_group": "@RG\\tID:sample1\\tSM:sample1" }
}
],
"edges": [
{
"id": "e1",
"from": { "node": "reads_001", "output": "reads" },
"to": { "node": "bwa_001", "input": "reads" }
}
]
}Fields
| Field | Description |
|---|---|
version | Schema version of the workflow document (currently "2.0"). |
app | Producer of the document ("bionodulo"). |
name | Human-readable workflow name. |
description | Optional longer description of the workflow. |
nodes[] | Each node’s id, type, canvas position ([x, y]), params, and optional ui metadata (e.g. a custom display title). |
nodes[].type | Registry key of the node (e.g. input_fastq, bwa_mem, gatk_haplotype_caller). |
nodes[].params | Parameter values keyed by parameter name. |
edges[] | Connections: from/to objects naming the node id and port. |
groups, outputs | Optional canvas groups and declared workflow outputs. |
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.
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.