The blocksJson on a CustomReport is the blueprint for the generated PDF. Each element in the JSON array describes one content block: its type (text narrative, concentration time series, water level table, etc.), the data it pulls, and any display options. You typically edit the layout through Piper's block editor UI, which writes valid JSON for you — but advanced users can inspect or copy blocksJson directly to reuse layouts across reports. When Piper generates the PDF, it processes blocksJson top-to-bottom to produce the final document.
Technical section
Data model, API, and internals — visible to developers.
