Document Object
A document publication returned by the Publications endpoints has this top-level shape:
{
"systemdata": {},
"metadata": {},
"content": [],
"references": []
}
The systemdata field has a fixed schema. The metadata and content fields depend on your project's content type configuration and design. The references array is computed from metadata and content. See References for the full reference object documentation.
Systemdata
The systemdata object contains internal Livingdocs identifiers and publication timestamps.
| Property | Type | Description |
projectId | integer | The project this document belongs to. |
channelId | integer | Legacy. The channel this document belongs to. Always identical to the project id. |
documentId | integer | Unique identifier for the document. |
contentType | string | The content type handle as configured in the project (e.g. |
documentType | string | Always one of |
publicationId | integer | Identifier of this publication version. Increments with each publish. |
firstPublicationDate | string (ISO 8601) | Timestamp of the first publication. |
significantPublicationDate | string (ISO 8601) | Equals |
visiblePublicationDate | string (ISO 8601) | Equals |
updatedAt | string (ISO 8601) | Timestamp of the last publication update. |
layout | string | Legacy. Do not use. |
design.name | string | Name of the Livingdocs design. This is a computed value that can differ between environments. |
design.version | string | Version of the design (semver). This value changes when there are project config changes in |
Metadata
Metadata fields are project-configurable. The shape of the metadata object depends on the metadata plugins configured for the document's content type.
An example setup might include fields like title, description, slug, and teaserImage (using li-image):
{
"metadata": {
"title": "Climate Summit Opens in Geneva",
"description": "World leaders gather to discuss emission targets.",
"slug": "climate-summit-opens-in-geneva",
"teaserImage": {
"originalUrl": "https://storage.example.com/images/summit.jpg",
"url": "https://images.example.com/summit.jpg",
"mediaId": "lk3j4h5g",
"width": 1600,
"height": 900,
"mimeType": "image/jpeg",
"imageService": "imgix",
"crops": [
{
"name": "desktop",
"x": 0,
"y": 50,
"width": 1200,
"height": 675
}
]
}
}
}
Content
The content array contains the document's component tree. Each entry represents a design component with its content and optional nested containers.
| Property | Type | Description |
id | string | Unique component instance identifier (e.g. |
component | string | The component name as defined in the design (e.g. |
identifier | string | Legacy. Fully qualified identifier in the format |
content | object | Key-value map of directive values. Keys are directive names, values depend on the directive type (text, image reference, etc.). |
styles | object | Style properties applied to this component instance. |
containers | object | Named container slots that hold nested component arrays. Keys are container names, values are arrays of child components. |
The available components, their directives, and container structure depend on the designSettings and components configured in your project config as well as which components can be used for a content type.
Include Directives
When a component has a doc-include directive, the directive value in content contains the include service name, its parameters, and optionally content overrides. Overrides are present when the include service returns editableContent: true and editors have modified the rendered content (see Editable Content).
{
"id": "doc-2c95a77x14",
"component": "article-teaser",
"content": {
"teaser": {
"service": "article-teaser-service",
"params": {
"article": {
"$ref": "document",
"reference": {"id": "42"}
}
},
"overrides": [
{
"id": "teaser-42",
"content": {
"title": "Custom teaser title for this page"
},
"originalSnapshot": {
"title": "Original article title"
},
"contentProperties": ["title"]
}
]
}
}
}
The overrides array is only present when editors have made local edits. Each entry targets a specific rendered component (matched by id) and contains:
content— the overridden directive valuesoriginalSnapshot— the source values at the time of the editcontentProperties— which directive names were edited
When no overrides exist, the directive value contains only service and params (no overrides key).
Example with nested containers
{
"content": [
{
"id": "doc-abc123",
"component": "head",
"content": {
"title": "Climate Summit Opens in Geneva",
"text": "World leaders gather to discuss emission targets."
}
},
{
"id": "doc-def456",
"component": "container",
"containers": {
"main": [
{
"id": "doc-ghi789",
"component": "paragraph",
"content": {
"text": "The first day focused on renewable energy commitments."
}
}
]
}
}
]
}
References
The references array lists all resources referenced by this document. Livingdocs extracts these automatically from metadata and content. They are used by the Incoming Publication References, Incoming Media References.
See References for the full reference object documentation including all types, locations, and fields.
Complete Example
{
"systemdata": {
"projectId": 1,
"channelId": 1,
"documentId": 1,
"contentType": "article",
"documentType": "article",
"publicationId": 1,
"firstPublicationDate": "2022-03-16T14:08:11.000Z",
"significantPublicationDate": "2022-10-26T07:25:00.000Z",
"visiblePublicationDate": "2022-10-27T06:00:00.000Z",
"updatedAt": "2023-03-18T16:32:04.170Z",
"design": {
"name": "timeline",
"version": "1.1.0"
}
},
"metadata": {
"title": "a title",
"description": "some lead",
"teaserImage": {
"originalUrl": "https://storage.example.com/images/teaser.jpg",
"url": "https://images.example.com/teaser.jpg",
"mediaId": "lk3j4h5g",
"width": 1600,
"height": 900,
"mimeType": "image/jpeg",
"imageService": "imgix"
}
},
"content": [
{
"id": "doc-1b8i1ksh10",
"component": "head",
"content": {
"title": "a title",
"text": "some lead"
}
},
{
"id": "doc-2c95a77x14",
"component": "teaser",
"content": {
"embed-teaser": {
"service": "embed-teaser",
"params": {
"document": {
"$ref": "document",
"reference": {"id": "7"}
}
}
}
}
}
],
"references": [
{
"id": "lk3j4h5g",
"type": "image",
"location": "metadata",
"propertyName": "teaserImage"
},
{
"id": "7",
"type": "document",
"location": "include-directive",
"componentId": "doc-2c95a77x14",
"componentName": "teaser",
"directiveName": "embed-teaser",
"serviceName": "embed-teaser",
"propertyName": "document"
}
]
}