{}OPF
DocsSchema referenceEdit on GitHub

Slide Layout

Schema for slide-layout records in the pptx.gallery library. Each record describes a semantic slide layout — what regions it exposes and what content kinds those regions are intended to hold. Layouts are refer…

Schema $id

https://openpresentation.org/schema/opf-layout/v1

Source

spec/schemas/layout.schema.json

Field index

FieldTypeReqDefaultDescription
$schemaconstyesIdentifies this record as a slide layout in the openpresentation.org catalog.
idstringyesStable slug used by OPF documents to reference this layout via Slide.layout. Lowercase kebab-case.
namestringyesHuman-readable layout name shown in layout pickers.
summarystringOne-sentence positioning of the layout — when to reach for it.
descriptionstringLonger prose describing the layout structure and ideal use cases.
contentTypeenumPrimary kind of content the layout holds. Drives pickers and AI placement decisions.
contentMultipleenumHow many parallel content blocks the layout exposes ('2x' = two-column, '3x' = three-up, etc.).
contentAlignmentenumDefault horizontal alignment of the content area.
contentBoxbooleanWhether the content area is rendered inside a visible box / card.
contentTypeChartPrimaryenumFor chart layouts, where the primary chart sits relative to the rest of the content.
contentTypeImageFillenumFor image layouts, how the image fills its slot.
contentTypeListBulletenumFor list layouts, how bullets are rendered.
contentTypeListHeadingbooleanFor list layouts, whether each list item carries a heading.
slideTagbooleanWhether the layout includes a small slide-level tag / label region above or near the title.
slideTitlebooleanWhether the layout includes a slide title region.
slideSubtitlebooleanWhether the layout includes a slide-level subtitle or supporting-description region. When placeholders is present, this is true exactly when the layout exposes a placeholder with type 'subtitle'.
slideTitleAlignmentenumHorizontal alignment of the slide title region.
slideImagebooleanWhether the layout includes a dedicated slide-level image region (separate from any content image).
slideImageAlignmentenumWhere the slide-level image sits relative to the content.
slideLayoutDirectionenumAxis along which the layout's primary regions are arranged.
placeholdersarray<ref:Placeholder>Ordered regions the layout exposes. The engine fills 'title', 'subtitle', and 'tag' placeholders from Slide.title, Slide.subtitle, and Slide.tag. Other placeholders are content-kind hints for renderers and pickers. Slide content itself lives either in root payload fields or prom…
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

Type: const · Required · Default:

Identifies this record as a slide layout in the openpresentation.org catalog.

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

id

Type: string · Required · Default: · Pattern: ^[a-z][a-z0-9-]*$

Stable slug used by OPF documents to reference this layout via Slide.layout. Lowercase kebab-case.

id.json
{
  "id": "title"
}

name

Type: string · Required · Default:

Human-readable layout name shown in layout pickers.

name.json
{
  "name": "Title"
}

summary

Type: string · Optional · Default:

One-sentence positioning of the layout — when to reach for it.

summary.json
{
  "summary": "Slide title aligned left over a single content area — flexible workhorse layout."
}

description

Type: string · Optional · Default:

Longer prose describing the layout structure and ideal use cases.

description.json
{
  "description": "Two equal-width columns under a left-aligned slide title. Use when comparing two ideas, before/after pairs, or paired text + image content."
}

contentType

Type: enum · Optional · Default:

Primary kind of content the layout holds. Drives pickers and AI placement decisions.

contentType.json
{
  "contentType": "Title"
}

contentMultiple

Type: enum · Optional · Default:

How many parallel content blocks the layout exposes ('2x' = two-column, '3x' = three-up, etc.).

contentMultiple.json
{
  "contentMultiple": "None"
}

contentAlignment

Type: enum · Optional · Default:

Default horizontal alignment of the content area.

contentAlignment.json
{
  "contentAlignment": "None"
}

contentBox

Type: boolean · Optional · Default:

Whether the content area is rendered inside a visible box / card.

contentBox.json
{
  "contentBox": false
}

contentTypeChartPrimary

Type: enum · Optional · Default:

For chart layouts, where the primary chart sits relative to the rest of the content.

contentTypeChartPrimary.json
{
  "contentTypeChartPrimary": "None"
}

contentTypeImageFill

Type: enum · Optional · Default:

For image layouts, how the image fills its slot.

contentTypeImageFill.json
{
  "contentTypeImageFill": "None"
}

contentTypeListBullet

Type: enum · Optional · Default:

For list layouts, how bullets are rendered.

contentTypeListBullet.json
{
  "contentTypeListBullet": "None"
}

contentTypeListHeading

Type: boolean · Optional · Default:

For list layouts, whether each list item carries a heading.

contentTypeListHeading.json
{
  "contentTypeListHeading": false
}

slideTag

Type: boolean · Optional · Default:

Whether the layout includes a small slide-level tag / label region above or near the title.

slideTag.json
{
  "slideTag": false
}

slideTitle

Type: boolean · Optional · Default:

Whether the layout includes a slide title region.

slideTitle.json
{
  "slideTitle": true
}

slideSubtitle

Type: boolean · Optional · Default:

Whether the layout includes a slide-level subtitle or supporting-description region. When placeholders is present, this is true exactly when the layout exposes a placeholder with type 'subtitle'.

slideSubtitle.json
{
  "slideSubtitle": false
}

slideTitleAlignment

Type: enum · Optional · Default:

Horizontal alignment of the slide title region.

slideTitleAlignment.json
{
  "slideTitleAlignment": "None"
}

slideImage

Type: boolean · Optional · Default:

Whether the layout includes a dedicated slide-level image region (separate from any content image).

slideImage.json
{
  "slideImage": false
}

slideImageAlignment

Type: enum · Optional · Default:

Where the slide-level image sits relative to the content.

slideImageAlignment.json
{
  "slideImageAlignment": "None"
}

slideLayoutDirection

Type: enum · Optional · Default:

Axis along which the layout's primary regions are arranged.

slideLayoutDirection.json
{
  "slideLayoutDirection": "None"
}

placeholders

Type: array<ref:Placeholder> · Optional · Default:

Ordered regions the layout exposes. The engine fills 'title', 'subtitle', and 'tag' placeholders from Slide.title, Slide.subtitle, and Slide.tag. Other placeholders are content-kind hints for renderers and pickers. Slide content itself lives either in root payload fields or prom…

placeholders.json
{
  "placeholders": []
}

tags

Type: array<string> · Optional · Default:

Free-form labels for filtering and search.

tags.json
{
  "tags": [
    "title",
    "minimal"
  ]
}

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.json
{
  "preview": {}
}