OPF
SpecAuthoring schema referenceView source

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.

Schema $id
https://openpresentation.org/schema/opf-color-scheme/v1
Type
object
Source
spec/schemas/color-scheme.schema.json
Fields
19 · 3 required

Field index

FieldTypeReq.DefaultDescription
$schemaconstyes—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"
idstringyes—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.
namestringyes—Human-readable scheme name shown in pickers.
summarystring——One-sentence positioning of the palette — what mood it evokes and where to use it.
descriptionstring——Longer prose describing the palette and its intended use.
accent1ref:HexColor——Accent 1 color (hex). Mirrors the OOXML accent1 slot.
accent2ref:HexColor——Accent 2 color (hex). Mirrors the OOXML accent2 slot.
accent3ref:HexColor——Accent 3 color (hex). Mirrors the OOXML accent3 slot.
accent4ref:HexColor——Accent 4 color (hex). Mirrors the OOXML accent4 slot.
accent5ref:HexColor——Accent 5 color (hex). Mirrors the OOXML accent5 slot.
accent6ref:HexColor——Accent 6 color (hex). Mirrors the OOXML accent6 slot.
dark1ref:HexColor——Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.
dark2ref:HexColor——Dark 2 color (hex). Secondary dark; OOXML dark2.
light1ref:HexColor——Light 1 color (hex). Typically the slide canvas; OOXML lt1.
light2ref:HexColor——Light 2 color (hex). Secondary light surface; OOXML lt2.
hyperlinkref:HexColor——Hyperlink color (hex). OOXML hlink.
followedHyperlinkref:HexColor——Followed-hyperlink color (hex). OOXML folHlink.
tagsarray<string>——Free-form labels for filtering and search.
previewobject——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.json
{
  "$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.json
{
  "id": "cool-horizon"
}

name

typestringrequiredyesdefault—

Human-readable scheme name shown in pickers.

name.json
{
  "name": "Cool Horizon"
}

summary

typestringrequirednodefault—

One-sentence positioning of the palette — what mood it evokes and where to use it.

summary.json
{
  "summary": "Cool blue-green palette tuned for B2B SaaS and finance decks."
}

description

typestringrequirednodefault—

Longer prose describing the palette and its intended use.

description.json
{
  "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.json
{
  "accent1": "#2874A6"
}

accent2

typeref:HexColorrequirednodefault—

Accent 2 color (hex). Mirrors the OOXML accent2 slot.

accent2.json
{
  "accent2": "#1B4F72"
}

accent3

typeref:HexColorrequirednodefault—

Accent 3 color (hex). Mirrors the OOXML accent3 slot.

accent3.json
{
  "accent3": "#5499C7"
}

accent4

typeref:HexColorrequirednodefault—

Accent 4 color (hex). Mirrors the OOXML accent4 slot.

accent4.json
{
  "accent4": "#7BDBB2"
}

accent5

typeref:HexColorrequirednodefault—

Accent 5 color (hex). Mirrors the OOXML accent5 slot.

accent5.json
{
  "accent5": "#3AC67A"
}

accent6

typeref:HexColorrequirednodefault—

Accent 6 color (hex). Mirrors the OOXML accent6 slot.

accent6.json
{
  "accent6": "#24A89E"
}

dark1

typeref:HexColorrequirednodefault—

Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.

dark1.json
{
  "dark1": "#000000"
}

dark2

typeref:HexColorrequirednodefault—

Dark 2 color (hex). Secondary dark; OOXML dark2.

dark2.json
{
  "dark2": "#011842"
}

light1

typeref:HexColorrequirednodefault—

Light 1 color (hex). Typically the slide canvas; OOXML lt1.

light1.json
{
  "light1": "#FFFFFF"
}

light2

typeref:HexColorrequirednodefault—

Light 2 color (hex). Secondary light surface; OOXML lt2.

light2.json
{
  "light2": "#F0F0F0"
}

tags

typearray<string>requirednodefault—

Free-form labels for filtering and search.

tags.json
{
  "tags": [
    "corporate",
    "blue",
    "calm"
  ]
}

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 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"
          ]
        }
      }
    }
  }
}