UI JSON specifications
RAFT uses four related JSON contracts. They serve different purposes and should not be treated as interchangeable.
Machine-readable schema files are packaged with RAFT under
src/raft/ui/static/schemas/:
manifest-ui.schema.jsonreport-ui.schema.jsonworkflow-definition.schema.jsonworkflow-config.schema.json
RAFT also performs lightweight runtime validation before serving remote manifest/report templates or workflow definitions to the browser. Invalid remote templates are ignored and RAFT falls back to packaged defaults where possible.
Workflow configuration JSON
Files named <workflow>.<species>.<input>.json are execution contracts used
by RAFT project generation. They live next to the workflow .config file in a
workflow configuration repository.
Observed public examples include lens.human.fastqs.json,
gene-fusions.human.fastqs.json, somatic_vars.human.fastqs.json,
germline_vars.human.bams.json, pmhcs.human.fastas.json, and
clens.human.demo.json.
Required fields:
modulesArray of module names to load into the RAFT project.
stepsObject mapping workflow step names to the module that provides the step.
Optional fields:
referencesArray of reference filenames or URLs that RAFT should stage.
references_postprocObject mapping staged reference helper filenames to post-processing commands.
find_and_replaceObject mapping literal workflow text to replacement text.
fastqsDemo-only array of FASTQ URLs to stage.
Config-generator workflow definition JSON
The config generator consumes a workflow definition index. RAFT ships a local
static/workflows/index.json and can synthesize equivalent definitions from
workflow config repositories.
Required top-level field:
workflowsArray of workflow objects.
Workflow object fields:
idStable workflow identifier, such as
lensorgene-fusions.labelHuman-readable name.
default_versionVersion selected by default in the UI.
versionsNon-empty array of version objects.
Version object fields:
idVersion or branch identifier, such as
lens-v1.9-dev.speciesNon-empty array of supported species values.
starting_dataNon-empty array of supported input modes, such as
fastqs,bams,fastas, orjunctions.configRelative path to the workflow
.configtemplate.uiOptional config-generator hints. Currently supported hints include
workflow_param_names,sections,labels, andtooltips. These hints shape display behavior; the underlying.configremains the source of parameter truth.
Manifest UI template
Files named manifest-ui.json or
<workflow>.<species>.<input>.manifest-ui.json customize the manifest
generator.
Required field:
columnsNon-empty array of column definitions. Each column requires
name.
Column fields:
nameManifest column name written to the TSV.
labelHuman-readable label.
requiredBoolean used by the UI validator.
typeOptional UI type:
text,string,select,boolean,number, orinteger.allowed_valuesOptional list used for select-like validation.
Optional top-level fields:
sample_typesArray of sample type definitions. Each sample type requires
idand may specifylabel,prefix,normal,sequencing_method, anddefaults.requirementsArray of workflow-level requirements. Each requirement requires
idand may specifysample_type,min,max, andrequired.
Report UI template
Files named report-ui.json or
<workflow>.<species>.<input>.report-ui.json customize the report viewer and
portable report bundle contents.
Required field:
sectionsNon-empty array of report section definitions. Each section requires
idandlabel.
Section fields:
rendererSupported values are
table,lens_antigen_report,qc_summary, andfile_index.sourceSupported values are
reports,report,lens,qc, andfiles. New workflow templates should usereportsfor primary workflow report sections.lensis retained for older templates.preload.reportsOptional array of report directories relative to the project directory.
raft generate-reportschecks these directories, in order, to decide which workflow reports to preload into the viewer. Entries may be strings or objects withpathand optionallabel. For example, LENS fastqs usesoutputs/samplesbecause patient report TSVs are written below that tree.preload.qcOptional array of QC directories relative to the project directory. Entries follow the same format as
preload.reports.patternsFile glob patterns for report/table sections. These patterns are important for headless report bundles: RAFT uses them to decide which files under the configured report directory should be included. LENS templates should include
["*.report.tsv", "*report*.tsv"]unless the workflow uses a different final report naming convention.defaultBoolean indicating the initially selected section.
controlsOptional renderer controls. LENS supports
show_filters,show_visualizations,show_table, andshow_cards.table.columnsOptional array of table columns. Each column requires
keyand may specifylabelandformat.
Workflow status config
Files named status.json or
<workflow>.<species>.<input>.status.json customize
raft project-status checks for a workflow. These files should live beside
the workflow .config, workflow metadata JSON, manifest UI template, and
report UI template.
Required fields are intentionally minimal. A status config may define expected paths, table summaries, or both.
expected_pathsOptional array of paths to check relative to the project directory. Each item requires
pathand may specifylabel,type(any,file, ordir),required, andmin_count. Paths may contain glob patterns such asoutputs/samples/**/*.json.tablesOptional array of delimited table checks. Each item requires
idandpatterns.rootis relative to the project directory and defaults tooutputs.patternsare glob patterns underroot.
Table fields:
count_byOptional array of columns to summarize as value counts.
required_columnsOptional array of columns that should be present. Missing columns become
project-statuswarnings.all_blank_warning_columnsOptional array of columns that should warn when present but blank in every row.
Example:
{
"schema_version": "1.0",
"name": "LENS",
"expected_paths": [
{"path": "outputs/lens", "label": "LENS outputs", "type": "dir", "required": true}
],
"tables": [
{
"id": "final_report",
"label": "Final report",
"root": "outputs/lens",
"patterns": ["**/*.report.tsv"],
"count_by": ["antigen_source"],
"required_columns": ["candidate_id", "antigen_source", "final_tier"]
}
]
}
Stability notes
The workflow configuration JSON is the strongest contract because RAFT uses it to create executable projects. The config-generator workflow definition is also structural and validated.
Manifest, report, and status templates are display/status contracts. They are validated for required structure, but unknown optional fields are allowed so workflow maintainers can add future UI hints without breaking older RAFT releases.
For new workflows, use the narrowest useful report patterns. Avoid broad
patterns like *.tsv unless every matching file is safe to upload to the
hosted viewer and small enough for a browser bundle.