Skip to content
Format reference1.1.0 · Archived

CMMF 1.1.0 specification

CMMF 1.1.0 specification for CMMF 1.1.0. Authoritative specification text.

The Content Model Master Format (CMMF) is a CMS-agnostic schema definition language designed to:

  • define content models in a portable, human-readable format
  • capture modelling intent, not just implementation structure
  • support translation into multiple CMS platforms
  • enable tooling such as generators, validators, and diagram builders

The format describes what the model means, not how a specific CMS stores or renders it.

References and composition must be described directly, including relationship intent where relevant.

The core schema defines structure and intent. CMS-specific choices belong in a translation layer.

The same CMMF input should produce the same structural interpretation every time.

/examples
manifest.yaml
/models
page.yaml
article.yaml
person.yaml

Example:

specVersion: "1.1.0"
namespace: example.project
modelsPath: ./models
defaults:
required: false
localisation: false
Field Type Required Description
specVersion string yes Semver spec version. In CMMF 1.1.0 this must be "1.1.0".
namespace string yes Unique namespace for the model set.
modelsPath string no Relative path to model files.
defaults object no Default values applied by tooling when omitted in model files.

Legacy compatibility note:

  • pre-semver manifests may use specVersion: 1 to indicate the original v1 release
  • semver-based manifests should use a quoted string such as "1.1.0"
Field Type Description
required boolean Default field requiredness.
localisation boolean Default field localisation behaviour.

Example:

id: page
name: Page
kind: entry
fields: []
Field Description
id Unique identifier for the model.
name Human-readable model name.
kind Model kind.
fields Array of field definitions.
  • description
  • tags
  • localisation
  • singleton
  • editorial
  • governance
  • translationHints
Kind Meaning
entry Standalone content.
component Reusable composable block.
object Embedded structure.
taxonomy Classification model.
settings Singleton or global configuration.

Example:

- id: title
type: string
required: true
  • id
  • type
  • name
  • description
  • required
  • localisation
  • default
  • list
  • validations
  • editorial
  • relation
  • objectType
  • targets
  • values
  • richTextConfig
  • translationHints
  • string
  • text
  • number
  • boolean
  • date
  • datetime
  • slug
  • enum
  • richText
  • asset
  • json
  • object
  • reference

Object fields represent embedded structures.

type: object
objectType: seo-metadata

Requirements:

  • type must be object
  • objectType must be present

Reference fields represent links to one or more target models.

type: reference
targets: [article]
relation:
cardinality: many

Requirements:

  • type must be reference
  • targets must be present
  • relation.cardinality is recommended

Enum fields constrain values to a fixed set of allowed strings.

type: enum
values: [draft, review, published]

Requirements:

  • type must be enum
  • values must be present

Rich text fields represent formatted editorial content with optional capability constraints.

type: richText
richTextConfig:
marks: [bold, italic]
blocks: [paragraph, heading-1, quote]
embeds:
- kind: asset
- kind: reference
targets: [callout]

Requirements:

  • richTextConfig is only valid when type is richText
  • omitted richTextConfig means translator-defined default rich text capabilities
  • marks and blocks are optional allowlists of translator-recognised capability tokens
  • embeds is an optional allowlist of supported embed definitions
  • embed kind must be asset or reference
  • reference embeds must include targets

Example:

relation:
cardinality: many
ordered: true
uniqueItems: true
ownership: contained
Field Type Description
cardinality enum one or many.
ordered boolean Whether item order matters.
uniqueItems boolean Whether duplicates are allowed.
minItems number Minimum allowed items.
maxItems number Maximum allowed items.
ownership enum linked or contained.
Scenario Approach
Primitive lists list: true
Object lists list: true
Reference lists relation.cardinality: many

Example:

validations:
minLength: 5
maxLength: 100
  • minLength
  • maxLength
  • regex
  • min
  • max
  • integerOnly
  • minItems
  • maxItems
  • uniqueItems
  • mimeTypes
  • dimensions
  • fileSize

Validation semantics are intentionally lightweight in 1.1.0. CMS translators may need to map these into platform-specific constraints. See the deeper discussion in docs/validations.md.

Model-level example:

editorial:
labelField: title
preview:
title: title
description: summary
image: heroImage

Field-level example:

editorial:
helpText: Used in URLs

Editorial metadata is non-structural and supports authoring and presentation concerns.

Example:

governance:
owner: platform-team
status: active
maturity: stable

Governance metadata is optional and is intended for operational ownership and lifecycle signalling.

Example:

translationHints:
preferredRepresentation: embedded

Translation hints are non-authoritative. They inform downstream translators without changing the core meaning of the schema.

Model and field IDs:

  • must be unique within their scope
  • must be lowercase
  • must use only alphanumeric characters, _, or -
  • must include objectType
  • must include targets
  • should include relation.cardinality
  • must include values
  • richTextConfig must only appear on richText fields
  • richTextConfig.embeds[*].targets must be present when embed kind is reference

The following are explicitly out of scope in 1.1.0:

  • permissions
  • workflows
  • environments
  • CMS UI configuration
  • custom logic
  • computed fields

Translation is intentionally separate from the core specification because it is not fully deterministic across CMS platforms.

At minimum, a translation contract should define:

  • the CMMF input shape
  • the target platform schema output
  • a decisions log describing translator choices
  • which translation decisions are fixed versus configurable

Examples of translator variation include:

  • translating contained references into embedded objects
  • translating contained references into separate content types
  • applying strict versus optimised output strategies