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…
https://openpresentation.org/schema/opf-chart-type/v1
spec/schemas/chart-type.schema.json
Field index
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
| $schema | const | yes | — | Identifies this record as a chart type in the open presentation catalog. |
| id | string | yes | — | 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. |
| name | string | yes | — | Stable display/programmatic name for this chart type. |
| label | string | — | — | Human-readable label shown in chart pickers. |
| summary | string | — | — | One-sentence positioning: when to reach for this chart variant. |
| description | string | — | — | Longer prose describing the chart and ideal use cases. |
| mappings | ref:ChartTypeMappings | yes | — | Canonical and optional renderer-specific mappings used by engines to render this chart type. |
| group | string | — | — | Top-level grouping in the chart picker (column, bar, line, area, pie, radar, etc.). |
| groupSort | integer | — | — | Display ordering hint within the chart group. |
| complexity | enum | — | — | Shape of the underlying data: a flat series ('simple'), one with engine-side calculation ('calculated'), parent-child rows ('hierarchical'), or pre-normalized rows ('normalized'). |
| series | integer | — | — | Number of data series this chart type expects. |
| categories | integer | — | — | Number of category labels this chart type expects on the primary axis. |
| seriesGroups | integer | — | — | Number of series groups (axis bands) this chart type uses; >1 for combo or banded charts. |
| useSecondaryCategories | boolean | — | — | Whether the chart type uses a secondary category axis. |
| workbookRange | string | — | — | A1 reference to the source range in the embedded workbook. |
| columns | array<string> | — | — | Column header names of the embedded workbook, in left-to-right order. |
| dataColumns | array<ref:ChartDataColumn> | — | — | Per-column metadata describing the role and position of each column in the workbook source. |
| helperColumns | array<string> | — | — | Optional auxiliary column names used by calculated or banded charts (e.g., 'Excellent', 'Good', 'Fair', 'Poor' for a bullet chart). |
| sampleData | ref:ChartSampleData | — | — | Inline sample dataset for previews and pickers. |
| slideNumber | integer | — | — | Source slide number in the original chart-gallery deck. Carried for traceability. |
| tags | array<string> | — | — | Free-form labels for filtering and search. |
| preview | object | — | — | 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. |
$schema
Type: const · Required · Default: —
Identifies this record as a chart type in the open presentation catalog.
{
"$schema": "https://openpresentation.org/schema/opf-chart-type/v1"
}id
Type: string · Required · Default: — · Pattern: ^[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": "column"
}name
Type: string · Required · Default: —
Stable display/programmatic name for this chart type.
{
"name": "COLUMN"
}label
Type: string · Optional · Default: —
Human-readable label shown in chart pickers.
{
"label": "Column"
}summary
Type: string · Optional · Default: —
One-sentence positioning: when to reach for this chart variant.
{
"summary": "Single-series vertical column chart for comparing values across categories."
}description
Type: string · Optional · Default: —
Longer prose describing the chart and ideal use cases.
{
"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
Type: ref:ChartTypeMappings · Required · Default: —
Canonical and optional renderer-specific mappings used by engines to render this chart type.
{
"mappings": "mappings-value"
}group
Type: string · Optional · Default: —
Top-level grouping in the chart picker (column, bar, line, area, pie, radar, etc.).
{
"group": "Column"
}groupSort
Type: integer · Optional · Default: —
Display ordering hint within the chart group.
{
"groupSort": 1
}complexity
Type: enum · Optional · Default: —
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": "simple"
}series
Type: integer · Optional · Default: —
Number of data series this chart type expects.
{
"series": 1
}categories
Type: integer · Optional · Default: —
Number of category labels this chart type expects on the primary axis.
{
"categories": 4
}seriesGroups
Type: integer · Optional · Default: —
Number of series groups (axis bands) this chart type uses; >1 for combo or banded charts.
{
"seriesGroups": 1
}useSecondaryCategories
Type: boolean · Optional · Default: —
Whether the chart type uses a secondary category axis.
{
"useSecondaryCategories": false
}workbookRange
Type: string · Optional · Default: —
A1 reference to the source range in the embedded workbook.
{
"workbookRange": "Sheet1!$A$1:$I$2"
}columns
Type: array<string> · Optional · Default: —
Column header names of the embedded workbook, in left-to-right order.
{
"columns": [
"Series 1",
"Value"
]
}dataColumns
Type: array<ref:ChartDataColumn> · Optional · Default: —
Per-column metadata describing the role and position of each column in the workbook source.
{
"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
Type: array<string> · Optional · Default: —
Optional auxiliary column names used by calculated or banded charts (e.g., 'Excellent', 'Good', 'Fair', 'Poor' for a bullet chart).
{
"helperColumns": [
"Excellent",
"Good",
"Fair",
"Poor"
]
}sampleData
Type: ref:ChartSampleData · Optional · Default: —
Inline sample dataset for previews and pickers.
{
"sampleData": {
"headers": [
"Series 1",
"Q1 2024",
"Q2 2024",
"Q3 2024",
"Q4 2024"
],
"rows": [
[
"Value",
93810,
24592,
13278,
46048
]
]
}
}slideNumber
Type: integer · Optional · Default: —
Source slide number in the original chart-gallery deck. Carried for traceability.
{
"slideNumber": 1
}preview
Type: object · Optional · Default: —
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": {}
}