Table Data

The table block contains the actual table data, split into thead and tbody.

Structure

{
  "table": {
    "thead": { "rows": [...] },
    "tbody": [RowGroup, ...]
  }
}

thead

{
  "thead": {
    "rows": [{
      "role": "column_label",
      "style_id": null,
      "cells": [{
        "content": [{ "type": "text", "value": "Name" }],
        "colspan": 1, "rowspan": 1,
        "style_id": null,
        "is_stub": false, "is_placeholder": false,
        "scope": "col"
      }]
    }]
  }
}

tbody (Row Groups)

The body is an array of row groups. Each group has a label, data rows, and optional summary rows.

{
  "tbody": [{
    "group_id": "grp_1",
    "label": {
      "content": [{ "type": "text", "value": "North America" }],
      "style_id": null,
      "colspan": null
    },
    "rows": [{ "role": null, "cells": [...] }],
    "summary_rows": []
  }]
}

Row Fields

Field Type Required Description
cells array Yes Exactly config.table_cols cells
role string? No "column_label" or "spanner_label" in thead; "summary_row" or "grand_summary_row" in a group’s summary_rows
style_id string? No Style applied to the whole row

Cell Fields

Field Type Required Description
content array Yes Array of ContentNode
typed_value object? No Typed data value
colspan integer Yes Column span (≥ 1)
rowspan integer Yes Row span (≥ 1)
style_id string? No Style reference
is_stub boolean Yes Whether cell is a row label
is_placeholder boolean Yes Whether cell is a span placeholder
scope string? No "col", "row", "colgroup", "rowgroup"
sort_key any? No Sort value
data_type string? No Value type: "string", "number", "integer", "boolean", "date", "datetime", "time", "duration"

Spans and Placeholders

Cells with colspan or rowspan > 1 span multiple positions. Spanned-over positions must contain placeholder cells:

[
  { "content": [{"type": "text", "value": "Wide"}], "colspan": 2, "is_placeholder": false, ... },
  { "content": [], "colspan": 1, "is_placeholder": true, "is_stub": false, ... }
]
Warning

Placeholder cells must have empty content. The validator rejects non-empty placeholders.