Color Scheme
Schema for color-scheme records. Each scheme is a named palette with the twelve PowerPoint color slots (six accents, two darks, two lights, plus hyperlink and followed-hyperlink), suitable for being mapped directly into OOXML theme XML. Documents reference a scheme from design.colorScheme (or design.colorScheme.id) and from a theme's colorScheme; slot overrides on design.colorScheme take precedence over the resolved scheme. The slot fields here mirror the inline-override fields on the in-document ColorScheme type (in opf.schema.json), so records and inline OPF overrides are interchangeable. A document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.
Field index
| Field | Type | Req. | Default | Description |
|---|---|---|---|---|
| $schema | const | yes | — | Identifies a published record file as a colour scheme record. Required in a published file; an embedded copy omits it.
|
| id | string | yes | — | The colour scheme's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field. |
| name | string | yes | — | Human-readable scheme name shown in pickers. |
| summary | string | — | — | One-sentence positioning of the palette — what mood it evokes and where to use it. |
| description | string | — | — | Longer prose describing the palette and its intended use. |
| accent1 | ref:HexColor | — | — | Accent 1 color (hex). Mirrors the OOXML accent1 slot. |
| accent2 | ref:HexColor | — | — | Accent 2 color (hex). Mirrors the OOXML accent2 slot. |
| accent3 | ref:HexColor | — | — | Accent 3 color (hex). Mirrors the OOXML accent3 slot. |
| accent4 | ref:HexColor | — | — | Accent 4 color (hex). Mirrors the OOXML accent4 slot. |
| accent5 | ref:HexColor | — | — | Accent 5 color (hex). Mirrors the OOXML accent5 slot. |
| accent6 | ref:HexColor | — | — | Accent 6 color (hex). Mirrors the OOXML accent6 slot. |
| dark1 | ref:HexColor | — | — | Dark 1 color (hex). Typically the deepest neutral; OOXML dark1. |
| dark2 | ref:HexColor | — | — | Dark 2 color (hex). Secondary dark; OOXML dark2. |
| light1 | ref:HexColor | — | — | Light 1 color (hex). Typically the slide canvas; OOXML lt1. |
| light2 | ref:HexColor | — | — | Light 2 color (hex). Secondary light surface; OOXML lt2. |
| hyperlink | ref:HexColor | — | — | Hyperlink color (hex). OOXML hlink. |
| followedHyperlink | ref:HexColor | — | — | Followed-hyperlink color (hex). OOXML folHlink. |
| 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
typeconstrequiredyesdefault—
Identifies a published record file as a colour scheme record. Required in a published file; an embedded copy omits it.
$schema· Allowed values"https://openpresentation.org/schema/opf-color-scheme/v1"
{
"$schema": "https://openpresentation.org/schema/opf-color-scheme/v1"
}id
typestringrequiredyesdefault—pattern^[a-z][a-z0-9-]*$
The colour scheme's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.
{
"id": "cool-horizon"
}name
typestringrequiredyesdefault—
Human-readable scheme name shown in pickers.
{
"name": "Cool Horizon"
}summary
typestringrequirednodefault—
One-sentence positioning of the palette — what mood it evokes and where to use it.
{
"summary": "Cool blue-green palette tuned for B2B SaaS and finance decks."
}description
typestringrequirednodefault—
Longer prose describing the palette and its intended use.
{
"description": "A balanced cool-toned scheme: a deep navy dark slot pairs with mid-saturation blues and a teal accent for charts and callouts. Works well on both light and dark backgrounds."
}accent1
typeref:HexColorrequirednodefault—
Accent 1 color (hex). Mirrors the OOXML accent1 slot.
{
"accent1": "#2874A6"
}accent2
typeref:HexColorrequirednodefault—
Accent 2 color (hex). Mirrors the OOXML accent2 slot.
{
"accent2": "#1B4F72"
}accent3
typeref:HexColorrequirednodefault—
Accent 3 color (hex). Mirrors the OOXML accent3 slot.
{
"accent3": "#5499C7"
}accent4
typeref:HexColorrequirednodefault—
Accent 4 color (hex). Mirrors the OOXML accent4 slot.
{
"accent4": "#7BDBB2"
}accent5
typeref:HexColorrequirednodefault—
Accent 5 color (hex). Mirrors the OOXML accent5 slot.
{
"accent5": "#3AC67A"
}accent6
typeref:HexColorrequirednodefault—
Accent 6 color (hex). Mirrors the OOXML accent6 slot.
{
"accent6": "#24A89E"
}dark1
typeref:HexColorrequirednodefault—
Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.
{
"dark1": "#000000"
}dark2
typeref:HexColorrequirednodefault—
Dark 2 color (hex). Secondary dark; OOXML dark2.
{
"dark2": "#011842"
}light1
typeref:HexColorrequirednodefault—
Light 1 color (hex). Typically the slide canvas; OOXML lt1.
{
"light1": "#FFFFFF"
}light2
typeref:HexColorrequirednodefault—
Light 2 color (hex). Secondary light surface; OOXML lt2.
{
"light2": "#F0F0F0"
}hyperlink
typeref:HexColorrequirednodefault—
Hyperlink color (hex). OOXML hlink.
{
"hyperlink": "#0563C1"
}followedHyperlink
typeref:HexColorrequirednodefault—
Followed-hyperlink color (hex). OOXML folHlink.
{
"followedHyperlink": "#954F72"
}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.
Complete definition constraints
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openpresentation.org/schema/opf-color-scheme/v1",
"$comment": "The v1 in the $id is the pre-1.0 line, not a frozen contract: this schema may change in any 0.x minor release. The release that produced this copy is the version of the @openpresentation/opf package it came from (opf --version; opf schemas lists it next to each id). See docs/schema-versioning.md.",
"title": "Color Scheme",
"description": "Schema for color-scheme records. Each scheme is a named palette with the twelve PowerPoint color slots (six accents, two darks, two lights, plus hyperlink and followed-hyperlink), suitable for being mapped directly into OOXML theme XML. Documents reference a scheme from design.colorScheme (or design.colorScheme.id) and from a theme's colorScheme; slot overrides on design.colorScheme take precedence over the resolved scheme.\n\nThe slot fields here mirror the inline-override fields on the in-document ColorScheme type (in opf.schema.json), so records and inline OPF overrides are interchangeable.\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
"type": "object",
"required": [
"$schema",
"id",
"name"
],
"$defs": {
"HexColor": {
"type": "string",
"pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
"description": "Hex color: '#RGB', '#RRGGBB' or '#RRGGBBAA'. The same definition as HexColor in opf.schema.json.",
"examples": [
"#fff",
"#2874A6",
"#0F172AFF"
]
}
},
"properties": {
"$schema": {
"type": "string",
"const": "https://openpresentation.org/schema/opf-color-scheme/v1",
"description": "Identifies a published record file as a colour scheme record. Required in a published file; an embedded copy omits it."
},
"id": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]*$",
"description": "The colour scheme's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.",
"examples": [
"cool-horizon",
"boost",
"burnt-orange",
"forest-green"
]
},
"name": {
"type": "string",
"description": "Human-readable scheme name shown in pickers.",
"examples": [
"Cool Horizon",
"Boost",
"Burnt Orange",
"Forest Green"
]
},
"summary": {
"type": "string",
"description": "One-sentence positioning of the palette — what mood it evokes and where to use it.",
"examples": [
"Cool blue-green palette tuned for B2B SaaS and finance decks.",
"High-energy warm palette built around burnt-orange accents."
]
},
"description": {
"type": "string",
"description": "Longer prose describing the palette and its intended use.",
"examples": [
"A balanced cool-toned scheme: a deep navy dark slot pairs with mid-saturation blues and a teal accent for charts and callouts. Works well on both light and dark backgrounds."
]
},
"accent1": {
"$ref": "#/$defs/HexColor",
"description": "Accent 1 color (hex). Mirrors the OOXML accent1 slot.",
"examples": [
"#2874A6",
"#FD3223",
"#F77F00"
]
},
"accent2": {
"$ref": "#/$defs/HexColor",
"description": "Accent 2 color (hex). Mirrors the OOXML accent2 slot.",
"examples": [
"#1B4F72",
"#0308DB",
"#D62828"
]
},
"accent3": {
"$ref": "#/$defs/HexColor",
"description": "Accent 3 color (hex). Mirrors the OOXML accent3 slot.",
"examples": [
"#5499C7",
"#4F4955",
"#003049"
]
},
"accent4": {
"$ref": "#/$defs/HexColor",
"description": "Accent 4 color (hex). Mirrors the OOXML accent4 slot.",
"examples": [
"#7BDBB2",
"#A1DB30",
"#FCBF49"
]
},
"accent5": {
"$ref": "#/$defs/HexColor",
"description": "Accent 5 color (hex). Mirrors the OOXML accent5 slot.",
"examples": [
"#3AC67A",
"#0682FE",
"#EAE2B7"
]
},
"accent6": {
"$ref": "#/$defs/HexColor",
"description": "Accent 6 color (hex). Mirrors the OOXML accent6 slot.",
"examples": [
"#24A89E",
"#FC03BE",
"#BFBFBF"
]
},
"dark1": {
"$ref": "#/$defs/HexColor",
"description": "Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.",
"examples": [
"#000000"
]
},
"dark2": {
"$ref": "#/$defs/HexColor",
"description": "Dark 2 color (hex). Secondary dark; OOXML dark2.",
"examples": [
"#011842"
]
},
"light1": {
"$ref": "#/$defs/HexColor",
"description": "Light 1 color (hex). Typically the slide canvas; OOXML lt1.",
"examples": [
"#FFFFFF"
]
},
"light2": {
"$ref": "#/$defs/HexColor",
"description": "Light 2 color (hex). Secondary light surface; OOXML lt2.",
"examples": [
"#F0F0F0"
]
},
"hyperlink": {
"$ref": "#/$defs/HexColor",
"description": "Hyperlink color (hex). OOXML hlink.",
"examples": [
"#0563C1"
]
},
"followedHyperlink": {
"$ref": "#/$defs/HexColor",
"description": "Followed-hyperlink color (hex). OOXML folHlink.",
"examples": [
"#954F72"
]
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Free-form labels for filtering and search.",
"examples": [
[
"corporate",
"blue",
"calm"
],
[
"bold",
"warm",
"high-energy"
]
]
},
"preview": {
"type": "object",
"description": "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.",
"properties": {
"src": {
"type": "string",
"format": "uri",
"description": "Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.",
"examples": [
"https://www.pptx.gallery/color-schemes/cool-horizon.png"
]
},
"thumbnailSrc": {
"type": "string",
"format": "uri",
"description": "Smaller thumbnail preview suited to dense grid views.",
"examples": [
"https://www.pptx.gallery/color-schemes/cool-horizon.thumbnail.png"
]
},
"vectorSrc": {
"type": "string",
"format": "uri",
"description": "SVG / vector preview for crisp scaling at any size.",
"examples": [
"https://www.pptx.gallery/color-schemes/cool-horizon.svg"
]
}
}
}
}
}