{}OPF
DocsSchema referenceEdit on GitHub

Social Platform

Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records a…

Schema $id

https://openpresentation.org/schema/opf-social-platform/v1

Source

spec/schemas/social-platform.schema.json

Field index

FieldTypeReqDefaultDescription
$schemaconstyesIdentifies this record as a social-platform entry in the openpresentation.org catalog.
idstringyesStable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.
namestringyesHuman-readable platform name shown in pickers and footers.
summarystringOne-sentence positioning of the platform — what it's used for and who's on it.
descriptionstringLonger prose describing the platform and any rendering conventions (e.g., handle prefixes, distributed instances).
baseUrlstringCanonical base URL of the platform — used as the prefix when normalizing handles to full URLs.
profileUrlPatternstringURL pattern for individual member profiles. Use '{handle}' as the placeholder for the handle (with the prefix already stripped).
companyUrlPatternstringOptional URL pattern for organization / company pages, when the platform distinguishes them from member profiles. Use '{handle}' as the placeholder.
handlePrefixstringConventional prefix character displayed before the handle (e.g. '@' for X / Mastodon / Threads / TikTok). Empty string when no prefix is used. Renderers strip it before substituting into URL patterns.
handleExamplestringExample handle in its conventional rendered form, used by picker UIs and validation hints.
brandColorstringBrand color (hex) used for branded icon chips, link styling, or section accents.
iconstringDefault icon source. Accepts an HTTPS URL, data URI, relative path, or asset reference. Used as the fallback when a themed (Light/Dark) variant isn't set.
iconLightstringLight-colored icon variant intended for rendering on dark backgrounds.
iconDarkstringDark-colored icon variant intended for rendering on light backgrounds.
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 social-platform entry in the openpresentation.org catalog.

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

id

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

Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.

id.json
{
  "id": "linkedin"
}

name

Type: string · Required · Default:

Human-readable platform name shown in pickers and footers.

name.json
{
  "name": "LinkedIn"
}

summary

Type: string · Optional · Default:

One-sentence positioning of the platform — what it's used for and who's on it.

summary.json
{
  "summary": "Professional social network for individuals and companies."
}

description

Type: string · Optional · Default:

Longer prose describing the platform and any rendering conventions (e.g., handle prefixes, distributed instances).

description.json
{
  "description": "LinkedIn distinguishes between member profiles ('/in/<handle>') and company pages ('/company/<handle>'). Renderers should pick the appropriate URL pattern based on whether the parent is an Organization or a Speaker."
}

baseUrl

Type: string · Optional · Default:

Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.

baseUrl.json
{
  "baseUrl": "https://linkedin.com"
}

profileUrlPattern

Type: string · Optional · Default:

URL pattern for individual member profiles. Use '{handle}' as the placeholder for the handle (with the prefix already stripped).

profileUrlPattern.json
{
  "profileUrlPattern": "https://linkedin.com/in/{handle}"
}

companyUrlPattern

Type: string · Optional · Default:

Optional URL pattern for organization / company pages, when the platform distinguishes them from member profiles. Use '{handle}' as the placeholder.

companyUrlPattern.json
{
  "companyUrlPattern": "https://linkedin.com/company/{handle}"
}

handlePrefix

Type: string · Optional · Default:

Conventional prefix character displayed before the handle (e.g. '@' for X / Mastodon / Threads / TikTok). Empty string when no prefix is used. Renderers strip it before substituting into URL patterns.

handlePrefix.json
{
  "handlePrefix": "@"
}

handleExample

Type: string · Optional · Default:

Example handle in its conventional rendered form, used by picker UIs and validation hints.

handleExample.json
{
  "handleExample": "alice-chen"
}

brandColor

Type: string · Optional · Default:

Brand color (hex) used for branded icon chips, link styling, or section accents.

brandColor.json
{
  "brandColor": "#0A66C2"
}

icon

Type: string · Optional · Default:

Default icon source. Accepts an HTTPS URL, data URI, relative path, or asset reference. Used as the fallback when a themed (Light/Dark) variant isn't set.

icon.json
{
  "icon": "https://www.pptx.gallery/social-platforms/linkedin.svg"
}

iconLight

Type: string · Optional · Default:

Light-colored icon variant intended for rendering on dark backgrounds.

iconLight.json
{
  "iconLight": "https://www.pptx.gallery/social-platforms/linkedin-light.svg"
}

iconDark

Type: string · Optional · Default:

Dark-colored icon variant intended for rendering on light backgrounds.

iconDark.json
{
  "iconDark": "https://www.pptx.gallery/social-platforms/linkedin-dark.svg"
}

tags

Type: array<string> · Optional · Default:

Free-form labels for filtering and search.

tags.json
{
  "tags": [
    "professional",
    "default"
  ]
}

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