{}OPF
DocsSchema referenceView source

Chart Type

Schema for chart-type records in the pptx.gallery catalog. Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, a…

Schema $id
https://openpresentation.org/schema/opf-chart-type/v1
Type
object
Source
spec/schemas/chart-type.schema.json
Fields
22 · 4 required

Field index

FieldTypeReq.DefaultDescription
$schemaconstyesIdentifies this record as a chart type in the open presentation catalog.
idstringyesStable slug used by OPF documents to reference this chart type. Lowercase kebab-case. Chart type ids may start with a digit (e.g., '100pct-stacked-column', '3d-column') to mirror conventional chart naming.
namestringyesStable display/programmatic name for this chart type.
labelstringHuman-readable label shown in chart pickers.
summarystringOne-sentence positioning: when to reach for this chart variant.
descriptionstringLonger prose describing the chart and ideal use cases.
mappingsref:ChartTypeMappingsyesCanonical and optional renderer-specific mappings used by engines to render this chart type.
groupstringTop-level grouping in the chart picker (column, bar, line, area, pie, radar, etc.).
groupSortintegerDisplay ordering hint within the chart group.
complexityenumShape of the underlying data: a flat series ('simple'), one with engine-side calculation ('calculated'), parent-child rows ('hierarchical'), or pre-normalized rows ('normalized').
seriesintegerNumber of data series this chart type expects.
categoriesintegerNumber of category labels this chart type expects on the primary axis.
seriesGroupsintegerNumber of series groups (axis bands) this chart type uses; >1 for combo or banded charts.
useSecondaryCategoriesbooleanWhether the chart type uses a secondary category axis.
workbookRangestringA1 reference to the source range in the embedded workbook.
columnsarray<string>Column header names of the embedded workbook, in left-to-right order.
dataColumnsarray<ref:ChartDataColumn>Per-column metadata describing the role and position of each column in the workbook source.
helperColumnsarray<string>Optional auxiliary column names used by calculated or banded charts (e.g., 'Excellent', 'Good', 'Fair', 'Poor' for a bullet chart).
sampleDataref:ChartSampleDataInline sample dataset for previews and pickers.
slideNumberintegerSource slide number in the original chart-gallery deck. Carried for traceability.
tagsarray<string>Free-form labels for filtering and search.
previewobjectVisual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.

$schema

typeconstrequiredyesdefault

Identifies this record as a chart type in the open presentation catalog.

$schema.json
{
  "$schema": "https://openpresentation.org/schema/opf-chart-type/v1"
}

id

typestringrequiredyesdefaultpattern^[a-z0-9][a-z0-9-]*$

Stable slug used by OPF documents to reference this chart type. Lowercase kebab-case. Chart type ids may start with a digit (e.g., '100pct-stacked-column', '3d-column') to mirror conventional chart naming.

id.json
{
  "id": "column"
}

name

typestringrequiredyesdefault

Stable display/programmatic name for this chart type.

name.json
{
  "name": "COLUMN"
}

label

typestringrequirednodefault

Human-readable label shown in chart pickers.

label.json
{
  "label": "Column"
}

summary

typestringrequirednodefault

One-sentence positioning: when to reach for this chart variant.

summary.json
{
  "summary": "Single-series vertical column chart for comparing values across categories."
}

description

typestringrequirednodefault

Longer prose describing the chart and ideal use cases.

description.json
{
  "description": "Use a clustered column when you want to compare a small number of series across the same categories — e.g., revenue by quarter for two product lines. Best with 2–4 series and ≤12 categories."
}

mappings

typeref:ChartTypeMappingsrequiredyesdefault

Canonical and optional renderer-specific mappings used by engines to render this chart type.

mappings.json
{
  "mappings": "mappings-value"
}

group

typestringrequirednodefault

Top-level grouping in the chart picker (column, bar, line, area, pie, radar, etc.).

group.json
{
  "group": "Column"
}

groupSort

typeintegerrequirednodefault

Display ordering hint within the chart group.

groupSort.json
{
  "groupSort": 1
}

complexity

typeenumrequirednodefault

Shape of the underlying data: a flat series ('simple'), one with engine-side calculation ('calculated'), parent-child rows ('hierarchical'), or pre-normalized rows ('normalized').

complexity.json
{
  "complexity": "simple"
}

series

typeintegerrequirednodefault

Number of data series this chart type expects.

series.json
{
  "series": 1
}

categories

typeintegerrequirednodefault

Number of category labels this chart type expects on the primary axis.

categories.json
{
  "categories": 4
}

seriesGroups

typeintegerrequirednodefault

Number of series groups (axis bands) this chart type uses; >1 for combo or banded charts.

seriesGroups.json
{
  "seriesGroups": 1
}

useSecondaryCategories

typebooleanrequirednodefault

Whether the chart type uses a secondary category axis.

useSecondaryCategories.json
{
  "useSecondaryCategories": false
}

workbookRange

typestringrequirednodefault

A1 reference to the source range in the embedded workbook.

workbookRange.json
{
  "workbookRange": "Sheet1!$A$1:$I$2"
}

columns

typearray<string>requirednodefault

Column header names of the embedded workbook, in left-to-right order.

columns.json
{
  "columns": [
    "Series 1",
    "Value"
  ]
}

dataColumns

typearray<ref:ChartDataColumn>requirednodefault

Per-column metadata describing the role and position of each column in the workbook source.

dataColumns.json
{
  "dataColumns": [
    {
      "name": "Series 1",
      "role": "categoryLabel",
      "type": "string",
      "position": "row0_col0"
    },
    {
      "name": "Value 1",
      "role": "series",
      "type": "number",
      "position": "row1_col0"
    },
    {
      "name": "Value 2",
      "role": "series",
      "type": "number",
      "position": "row2_col0"
    }
  ]
}

helperColumns

typearray<string>requirednodefault

Optional auxiliary column names used by calculated or banded charts (e.g., 'Excellent', 'Good', 'Fair', 'Poor' for a bullet chart).

helperColumns.json
{
  "helperColumns": [
    "Excellent",
    "Good",
    "Fair",
    "Poor"
  ]
}

sampleData

typeref:ChartSampleDatarequirednodefault

Inline sample dataset for previews and pickers.

sampleData.json
{
  "sampleData": {
    "headers": [
      "Series 1",
      "Q1 2024",
      "Q2 2024",
      "Q3 2024",
      "Q4 2024"
    ],
    "rows": [
      [
        "Value",
        93810,
        24592,
        13278,
        46048
      ]
    ]
  }
}

slideNumber

typeintegerrequirednodefault

Source slide number in the original chart-gallery deck. Carried for traceability.

slideNumber.json
{
  "slideNumber": 1
}

tags

typearray<string>requirednodefault

Free-form labels for filtering and search.

tags.json
{
  "tags": [
    "column",
    "comparison"
  ]
}

preview

typeobjectrequirednodefault

Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.

preview.json
{
  "preview": {}
}