OPF
SpecDefinition referenceView source

Quote

Quote content with optional attribution metadata. Use 'text' for the quoted text, 'attribution' for the credited person or organization, 'role' for that person's title and organization, 'photo' for their headshot and 'source' for a citation or URL. A string value in a quote field is shorthand for { "text": value }.

Metadata

Definition
#/$defs/Quote
Form
object
Source
spec/schemas/opf.schema.json

Field index

FieldTypeReq.Description
textstring | array<ref:TextRun>yesQuoted text: a string, or TextRun[] for inline rich text (a colored phrase, bold, a link, or a citation or footnote marker). The engine draws the surrounding quotation marks.
attributionstring—Person or organization credited for the quote. Drawn after the quote text, in the muted text color.
rolestring—Title and organization of the attributed person. Drawn on its own line under the attribution; without an attribution it stands alone. It does not replace the attribution, so the person's name belongs in 'attribution'.
photoref:Asset—Headshot of the attributed person, drawn as a circle beside the attribution and role lines (on the logical start side: left in a left-to-right deck, right in a right-to-left deck). Give it alt text (validate's opf/missing-alt-text rule checks it). A raster photograph works best; an SVG exports as its PNG raster because the circular mask is not confirmed on SVG pictures in PowerPoint. An unresolved source draws the ordinary image placeholder.
sourcestring—Optional quote source, citation, or URL. Follows the attribution and role after ' - '.

text

typestring | array<ref:TextRun>requiredyesdefault—

Quoted text: a string, or TextRun[] for inline rich text (a colored phrase, bold, a link, or a citation or footnote marker). The engine draws the surrounding quotation marks.

text.json
{
  "text": "This changed how our team handles reviews."
}

attribution

typestringrequirednodefault—

Person or organization credited for the quote. Drawn after the quote text, in the muted text color.

attribution.json
{
  "attribution": "Priya Raman"
}

role

typestringrequirednodefault—

Title and organization of the attributed person. Drawn on its own line under the attribution; without an attribution it stands alone. It does not replace the attribution, so the person's name belongs in 'attribution'.

role.json
{
  "role": "VP Operations, Acme"
}

photo

typeref:Assetrequirednodefault—

Headshot of the attributed person, drawn as a circle beside the attribution and role lines (on the logical start side: left in a left-to-right deck, right in a right-to-left deck). Give it alt text (validate's opf/missing-alt-text rule checks it). A raster photograph works best; an SVG exports as its PNG raster because the circular mask is not confirmed on SVG pictures in PowerPoint. An unresolved source draws the ordinary image placeholder.

photo.json
{
  "photo": "./assets/priya-raman.jpg"
}

source

typestringrequirednodefault—

Optional quote source, citation, or URL. Follows the attribution and role after ' - '.

source.json
{
  "source": "Customer interview, March 2026"
}
Complete definition constraints
Schema constraints
{
  "type": "object",
  "description": "Quote content with optional attribution metadata. Use 'text' for the quoted text, 'attribution' for the credited person or organization, 'role' for that person's title and organization, 'photo' for their headshot and 'source' for a citation or URL. A string value in a quote field is shorthand for { \"text\": value }.",
  "additionalProperties": false,
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TextRun"
          }
        }
      ],
      "description": "Quoted text: a string, or TextRun[] for inline rich text (a colored phrase, bold, a link, or a citation or footnote marker). The engine draws the surrounding quotation marks.",
      "examples": [
        "This changed how our team handles reviews.",
        [
          "Cut review time by ",
          {
            "text": "40%",
            "bold": true
          },
          {
            "text": " in a quarter",
            "cite": "acme-case-study"
          }
        ]
      ]
    },
    "attribution": {
      "type": "string",
      "description": "Person or organization credited for the quote. Drawn after the quote text, in the muted text color.",
      "examples": [
        "Priya Raman",
        "Acme Corp"
      ]
    },
    "role": {
      "type": "string",
      "description": "Title and organization of the attributed person. Drawn on its own line under the attribution; without an attribution it stands alone. It does not replace the attribution, so the person's name belongs in 'attribution'.",
      "examples": [
        "VP Operations, Acme",
        "Head of Platform"
      ]
    },
    "photo": {
      "$ref": "#/$defs/Asset",
      "description": "Headshot of the attributed person, drawn as a circle beside the attribution and role lines (on the logical start side: left in a left-to-right deck, right in a right-to-left deck). Give it alt text (validate's opf/missing-alt-text rule checks it). A raster photograph works best; an SVG exports as its PNG raster because the circular mask is not confirmed on SVG pictures in PowerPoint. An unresolved source draws the ordinary image placeholder.",
      "examples": [
        "./assets/priya-raman.jpg",
        {
          "src": "asset:priya-raman",
          "alt": "Priya Raman"
        }
      ]
    },
    "source": {
      "type": "string",
      "description": "Optional quote source, citation, or URL. Follows the attribution and role after ' - '.",
      "examples": [
        "Customer interview, March 2026",
        "https://acme.com/case-study"
      ]
    }
  }
}