Pipeline Specification

Define reusable, deterministic data transformation workflows.

Manifest Format

Pipelines are defined as JSON manifests with the following structure:

{
  "name": "pipeline-name",
  "version": "1.0.0",
  "description": "What this pipeline does",
  "steps": [
    {
      "operator": "namespace.operation",
      "params": { ... }
    }
  ]
}

Required Fields

FieldTypeDescription
namestringPipeline identifier (kebab-case)
versionstringSemantic version (x.y.z)
stepsarrayOrdered list of operations

Step Structure

FieldTypeRequiredDescription
operatorstringYesOperator name (e.g., json.parse)
paramsobjectNoOperator parameters
idstringNoStep identifier for debugging
commentstringNoDocumentation comment

Execution Model

Running Pipelines

CLI

# From file
json-toolbox run pipeline.json < input.json

# From stdin (use - for manifest)
echo '{"steps":[{"operator":"json.format"}]}' | json-toolbox run -

Browser

Use the Pipeline tab in the web app to build and run pipelines visually.

Example: Multi-step Pipeline

{
  "name": "api-response-transform",
  "version": "1.0.0",
  "description": "Extract and flatten nested API response",
  "steps": [
    {
      "id": "parse",
      "operator": "json.parse",
      "comment": "Parse JSON input"
    },
    {
      "id": "extract",
      "operator": "query.jsonpath",
      "params": { "path": "$.data.items[*]" },
      "comment": "Extract items array"
    },
    {
      "id": "filter",
      "operator": "transform.filter",
      "params": { "key": "active", "operator": "eq", "value": true },
      "comment": "Keep only active items"
    },
    {
      "id": "format",
      "operator": "json.stringify",
      "params": { "indent": 2 },
      "comment": "Pretty print output"
    }
  ]
}

Presets

Built-in presets are available in cli/presets/:

json-toolbox run presets/csv-to-json.json < data.csv

Validation

Manifests can be validated against the JSON Schema:

json-toolbox validate-manifest pipeline.json

Schema location: cli/dist/manifest-schema.json