Core ConceptsWorkflow JSON Format

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

FieldDescription
versionSchema version of the workflow document (currently "2.0").
appProducer of the document ("bionodulo").
nameHuman-readable workflow name.
descriptionOptional 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[].typeRegistry key of the node (e.g. input_fastq, bwa_mem, gatk_haplotype_caller).
nodes[].paramsParameter values keyed by parameter name.
edges[]Connections: from/to objects naming the node id and port.
groups, outputsOptional 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 .json file onto the canvas or via New → Import.
  • Use the REST API to create and run workflows programmatically from the same JSON.