Fundamentals

Models and references

Model reusable documents with JSON Schema, Markdown, media, and explicit content relationships.

PeopleTide Content · HTTP integration guides

A small, explicit document contract.

Every content document has type, slug, title, and fields. The type’s JSON Schema validates fields. Register the type before saving documents of that type.

JSON
{
  "type": "article", "slug": "welcome", "title": "Welcome to our journal",
  "fields": { "body": "Useful information for your readers." }
}

Describe the fields editors need.

Site administrators manage content types. The x-cms-field hints select specialised editors; JSON Schema supplies validation.

JSON
{
  "type": "object",
  "properties": {
    "body": { "type": "string", "title": "Body", "x-cms-field": "markdown" }
  },
  "required": ["body"], "additionalProperties": false
}

Choose the relationship deliberately.

A composition reference is a dependency that must be published with the document. A derived reference tracks a source while retaining independent copy and creates review tasks when the source changes. Missing dependencies and composition cycles block publication.

JSON
{
  "product": { "$content": "CONTENT_UUID", "relationship": "composition" },
  "source": { "$content": "SOURCE_UUID", "relationship": "derived" },
  "image": { "$media": "MEDIA_UUID" }
}

Render according to the field type.

Treat plain text as text. Use a Markdown renderer with HTML disabled or sanitised for Markdown fields. The framework examples deliberately render body text safely rather than injecting arbitrary HTML.