OPF
SpecDefinition referenceView source

Organization

An organization associated with the presentation, typically the presenting company, but also hosts, partners, clients, or sponsors. The primary organization (role 'primary', else the first one) supplies the cover and section logo (unless design.logo overrides it) and the 'socials' header/footer field (its socials). Every field is also a built-in variable ('{{organization.name}}', 'organization.<id>.<field>'), and every logo a slide-scoped image ('var:organization.logo.icon', 'var:organization.<id>.logo'). Nothing else about an organization is drawn automatically. See docs/templates-and-variables.md.

Metadata

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

Field index

FieldTypeReq.Description
idstringyesStable identifier for the organization, used to reference it from Speaker.organizationId and to address it in built-in variables as 'organization.<id>.<field>'. Must be unique among organizations (a duplicate is a validation error).
namestringyesDisplay name. The built-in variable 'organization.name' (primary organization) or 'organization.<id>.name' carries it into any string, such as a header or footer text of '{{organization.name}}'.
legalNamestring—Optional legal entity name when it differs from the display name. Never drawn automatically; available as the built-in variable 'organization.legalName'.
logoref:Asset | ref:OrganizationLogo—The organization's logo. A path, URL or Asset is one logo for every shape; an object gives up to four shapes (full, stacked, icon, wordmark), each a path or Asset, or { onLight, onDark } for the two backgrounds. A path is resolved against the OPF file location; an HTTPS URL, data URI or 'asset:<id>' reference works too. SVG (preferred for vector logos) or PNG with transparency are typical. The primary organization's full logo (role 'primary', else the first organization) is drawn on cover and section slides unless design.logo names another or is false. Every logo is also a slide-scoped built-in image, placed with a whole-field reference in any image field: 'var:organization.logo' (the full logo), 'var:organization.logo.icon' (likewise stacked, wordmark, full), and 'var:organization.<id>.logo' or 'var:organization.<id>.logo.<shape>' for another organization. A missing shape falls back to full, and full to the first defined of wordmark, stacked and icon. The onLight or onDark value is chosen for each slide's background; a missing one uses the other. See docs/templates-and-variables.md and docs/design-resolution.md.
domainstring—Bare internet domain for the organization. Never drawn automatically and not used to look up assets; available as the built-in variable 'organization.domain'.
emailstring—General contact email for the organization. Never drawn automatically; available as the built-in variable 'organization.email'.
phonestring—Main contact phone number for the organization. E.164 format is recommended. Never drawn automatically; available as the built-in variable 'organization.phone'.
taglinestring—Short tagline. Never drawn automatically (cover slides do not show it); available as the built-in variable 'organization.tagline', for example in a footer 'text' of '{{organization.tagline}}'.
roleenum—Role of the organization relative to the presentation. Only 'primary' has behavior: it selects the primary organization (cover and section logo, the 'socials' header/footer field, and the 'organization.<field>' built-ins). When no organization has role 'primary', the first one is primary. 'partner', 'client', 'sponsor' and 'host' are descriptive labels that change nothing.
role · Allowed values
"primary""partner""client""sponsor""host"
socialsref:Socials—Optional social media handles or URLs for the organization. The primary organization's socials render in header/footer zones that set socials: true; otherwise they are authoring metadata.

id

typestringrequiredyesdefault—pattern^[a-zA-Z0-9_-]+$

Stable identifier for the organization, used to reference it from Speaker.organizationId and to address it in built-in variables as 'organization.<id>.<field>'. Must be unique among organizations (a duplicate is a validation error).

id.json
{
  "id": "acme"
}

name

typestringrequiredyesdefault—

Display name. The built-in variable 'organization.name' (primary organization) or 'organization.<id>.name' carries it into any string, such as a header or footer text of '{{organization.name}}'.

name.json
{
  "name": "Acme Corp"
}

legalName

typestringrequirednodefault—

Optional legal entity name when it differs from the display name. Never drawn automatically; available as the built-in variable 'organization.legalName'.

legalName.json
{
  "legalName": "Acme Corporation, Inc."
}

domain

typestringrequirednodefault—

Bare internet domain for the organization. Never drawn automatically and not used to look up assets; available as the built-in variable 'organization.domain'.

domain.json
{
  "domain": "acme.com"
}

email

typestringrequirednodefault—

General contact email for the organization. Never drawn automatically; available as the built-in variable 'organization.email'.

email.json
{
  "email": "hello@acme.com"
}

phone

typestringrequirednodefault—

Main contact phone number for the organization. E.164 format is recommended. Never drawn automatically; available as the built-in variable 'organization.phone'.

phone.json
{
  "phone": "+14155551234"
}

tagline

typestringrequirednodefault—

Short tagline. Never drawn automatically (cover slides do not show it); available as the built-in variable 'organization.tagline', for example in a footer 'text' of '{{organization.tagline}}'.

tagline.json
{
  "tagline": "Build the future of work"
}

role

typeenumrequirednodefault—

Role of the organization relative to the presentation. Only 'primary' has behavior: it selects the primary organization (cover and section logo, the 'socials' header/footer field, and the 'organization.<field>' built-ins). When no organization has role 'primary', the first one is primary. 'partner', 'client', 'sponsor' and 'host' are descriptive labels that change nothing.

role · Allowed values
"primary""partner""client""sponsor""host"
role.json
{
  "role": "primary"
}

socials

typeref:Socialsrequirednodefault—

Optional social media handles or URLs for the organization. The primary organization's socials render in header/footer zones that set socials: true; otherwise they are authoring metadata.

socials (property names) · Allowed values
"linkedin""x""github""youtube""instagram""facebook""tiktok""threads""mastodon""bluesky"
Complete definition constraints
Schema constraints
{
  "type": "object",
  "description": "An organization associated with the presentation, typically the presenting company, but also hosts, partners, clients, or sponsors. The primary organization (role 'primary', else the first one) supplies the cover and section logo (unless design.logo overrides it) and the 'socials' header/footer field (its socials). Every field is also a built-in variable ('{{organization.name}}', 'organization.<id>.<field>'), and every logo a slide-scoped image ('var:organization.logo.icon', 'var:organization.<id>.logo'). Nothing else about an organization is drawn automatically. See docs/templates-and-variables.md.",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9_-]+$",
      "description": "Stable identifier for the organization, used to reference it from Speaker.organizationId and to address it in built-in variables as 'organization.<id>.<field>'. Must be unique among organizations (a duplicate is a validation error).",
      "examples": [
        "acme",
        "acme-corp",
        "devconf-2026"
      ]
    },
    "name": {
      "type": "string",
      "description": "Display name. The built-in variable 'organization.name' (primary organization) or 'organization.<id>.name' carries it into any string, such as a header or footer text of '{{organization.name}}'.",
      "examples": [
        "Acme Corp",
        "DevConf 2026",
        "Beta Industries"
      ]
    },
    "legalName": {
      "type": "string",
      "description": "Optional legal entity name when it differs from the display name. Never drawn automatically; available as the built-in variable 'organization.legalName'.",
      "examples": [
        "Acme Corporation, Inc.",
        "Beta Industries, LLC"
      ]
    },
    "logo": {
      "oneOf": [
        {
          "$ref": "#/$defs/Asset"
        },
        {
          "$ref": "#/$defs/OrganizationLogo"
        }
      ],
      "description": "The organization's logo. A path, URL or Asset is one logo for every shape; an object gives up to four shapes (full, stacked, icon, wordmark), each a path or Asset, or { onLight, onDark } for the two backgrounds. A path is resolved against the OPF file location; an HTTPS URL, data URI or 'asset:<id>' reference works too. SVG (preferred for vector logos) or PNG with transparency are typical. The primary organization's full logo (role 'primary', else the first organization) is drawn on cover and section slides unless design.logo names another or is false. Every logo is also a slide-scoped built-in image, placed with a whole-field reference in any image field: 'var:organization.logo' (the full logo), 'var:organization.logo.icon' (likewise stacked, wordmark, full), and 'var:organization.<id>.logo' or 'var:organization.<id>.logo.<shape>' for another organization. A missing shape falls back to full, and full to the first defined of wordmark, stacked and icon. The onLight or onDark value is chosen for each slide's background; a missing one uses the other. See docs/templates-and-variables.md and docs/design-resolution.md.",
      "examples": [
        "./assets/acme-logo.svg",
        {
          "full": "./assets/acme-logo.svg",
          "icon": "./assets/acme-mark.svg"
        },
        {
          "full": {
            "onLight": "./assets/acme-logo.svg",
            "onDark": "./assets/acme-logo-white.svg"
          },
          "icon": "./assets/acme-mark.svg"
        },
        "https://cdn.acme.com/logo.svg",
        "asset:acme-logo"
      ]
    },
    "domain": {
      "type": "string",
      "description": "Bare internet domain for the organization. Never drawn automatically and not used to look up assets; available as the built-in variable 'organization.domain'.",
      "examples": [
        "acme.com",
        "beta-industries.io",
        "devconf.org"
      ]
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "General contact email for the organization. Never drawn automatically; available as the built-in variable 'organization.email'.",
      "examples": [
        "hello@acme.com",
        "sales@acme.com",
        "info@beta-industries.io"
      ]
    },
    "phone": {
      "type": "string",
      "description": "Main contact phone number for the organization. E.164 format is recommended. Never drawn automatically; available as the built-in variable 'organization.phone'.",
      "examples": [
        "+14155551234",
        "+442071838750"
      ]
    },
    "tagline": {
      "type": "string",
      "description": "Short tagline. Never drawn automatically (cover slides do not show it); available as the built-in variable 'organization.tagline', for example in a footer 'text' of '{{organization.tagline}}'.",
      "examples": [
        "Build the future of work",
        "Infrastructure for AI agents",
        "Where teams ship faster"
      ]
    },
    "role": {
      "type": "string",
      "enum": [
        "primary",
        "partner",
        "client",
        "sponsor",
        "host"
      ],
      "description": "Role of the organization relative to the presentation. Only 'primary' has behavior: it selects the primary organization (cover and section logo, the 'socials' header/footer field, and the 'organization.<field>' built-ins). When no organization has role 'primary', the first one is primary. 'partner', 'client', 'sponsor' and 'host' are descriptive labels that change nothing."
    },
    "socials": {
      "$ref": "#/$defs/Socials",
      "description": "Optional social media handles or URLs for the organization. The primary organization's socials render in header/footer zones that set socials: true; otherwise they are authoring metadata."
    }
  }
}