Content
incubatingStatus of this Document
This report was published by the User Journal Graph Community Group . It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Contributor License Agreement (CLA) there is a limited opt-out and other conditions apply. Learn more about W3C Community and Business Groups .
Title: org.openuji.specs.ujg.content.v1
Status: incubating implementation extension for editorial and structured-content binding beyond L10n.
1. Namespace
Canonical namespace string:
org.openuji.specs.ujg.content.v1Payload location:
extensions["org.openuji.specs.ujg.content.v1"]Published JSON Schema:
https://ujg.specs.openuji.org/ed/ns/content.schema.json
2. Purpose
This extension describes editorial and structured-content relationships that localization alone does not cover.
It exists to tell generators:
which content types are bound to a node,
which regions are editable,
who owns the content lifecycle,
which publication mode applies,
which structured content entities are bound to the node.
L10n already covers translated copy through copyRef and MessageBundle. This extension covers the
editorial and structured-content relationship beyond localization.
3. Scope
This extension covers:
content types,
editable regions,
ownership mode,
publication mode,
structured content entity bindings.
The extension is self-contained. It may refer to scaffold region names when the host also uses Templates or surface-like realization semantics, but it does not require private IDs from other extensions for correctness.
4. Non-goals
This extension does not standardize:
CMS internals,
rich-text storage formats,
workflow engines,
vendor entity APIs,
localization bundles,
WYSIWYG configuration.
5. Primary Attachment Targets
TemplateStateCompositeState
Template is the preferred reusable host for content-capable shells. State is the preferred host
for effective content binding. CompositeState is the preferred host for subflow-wide content
defaults.
6. Secondary Attachment Targets
Journeyfor broad ownership or publication defaultsMessageBundleonly for very narrow editorial metadata on the bundle itself
7. Discouraged Or Disallowed Attachment Targets
Transitionis discouraged except for sparse publish or save hints attached to a specific action.OutgoingTransitionGroupis discouraged because it is not a content host.Routeis discouraged because addressability belongs in Routing.UJGDocumentis disallowed because Core extensions are node-scoped.
8. Inheritance Model
For state-level content binding, generators should apply inheritance in this order:
Journeyeach enclosing
CompositeState, from outermost to innermostresolved
Template, iftemplateRefis presentthe local
State
Narrow bundle-level metadata on MessageBundle does not override state or template content binding.
It only supplements the bundle resource itself.
9. Precedence And Override Rules
Use this precedence order:
StateTemplateinnermost
CompositeStateouter
CompositeStateJourney
Merge and replacement rules:
ownershipModeandpublicationModeare singular values. The more specific value replaces the inherited one.contentTypescombines across inheritance with duplicate removal.editableRegionsmerges byname.entityBindingsmerges byrole.a more specific region or binding may suppress an inherited one by repeating the same identity and setting
disabled: true.
10. Property Vocabulary
contentTypes: content types associated with the host. Expected shape: array of strings. Allowed categories: published content-type IDs, model IDs, or opaque external identifiers. Implementation intent: tells generators what type of structured content is involved.editableRegions: editable regions on the host. Expected shape: array of region objects withnameand optionalkind,repeatable, anddisabled. Implementation intent: tells generators which parts of a node are editorially managed.ownershipMode: who owns the content lifecycle. Expected shape: string. Allowed categories:editorial,application,mixed,external. Implementation intent: distinguishes CMS-owned, app-owned, and externally owned content.publicationMode: editorial publication posture. Expected shape: string. Allowed categories:runtime-only,draft,review,publish,scheduled. Implementation intent: tells generators whether the content participates in publication workflows.entityBindings: structured content bindings. Expected shape: array of objects withrole,entityRef, and optionalcardinality,region, anddisabled. Allowed categories forcardinality:one,many. Implementation intent: binds content entities to semantic roles or regions without vendor-specific content APIs.
11. Recommended Controlled Values
Recommended ownershipMode values:
editorialapplicationmixedexternal
Recommended publicationMode values:
runtime-onlydraftreviewpublishscheduled
Recommended editable region kind values:
rich-textmediasummarypromolegal
12. Processing Model
A generator implementing this extension should:
Resolve the effective content payload using the inheritance and precedence rules above.
Normalize content types, editable regions, ownership mode, publication mode, and entity bindings.
Combine the result with Templates for shared shells, with Routing for addressable entry where relevant, and with L10n for localized copy carried separately through
copyRef.Materialize target-specific editorial or content bindings without standardizing vendor internals.
This extension should be sufficient for generators to distinguish editorial regions from ordinary localized copy, even when no CMS-specific adapter is chosen yet.
13. Cross-Stack Interpretation Notes
Web: map to editable campaign regions, structured content pages, and preview-aware shells.
Native: map to synced content sections, read-mostly editorial surfaces, or limited inline editing.
CMS: map to content types, editable regions, previews, and publish-state-aware page shells.
Commerce: map to merchandising slots, promo regions, legal content regions, and catalog-support content.
CLI or headless or background: map to managed help text, report templates, message templates, or structured generated notices.
14. Published JSON Schema
The published schema for this extension is defined below and is published at
https://ujg.specs.openuji.org/ed/ns/content.schema.json.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://ujg.specs.openuji.org/ed/ns/content.schema.json",
"title": "UJG Content Extension Payload",
"type": "object",
"additionalProperties": false,
"properties": {
"contentTypes": {
"type": "array",
"items": { "type": "string" }
},
"editableRegions": {
"type": "array",
"items": { "$ref": "#/$defs/region" }
},
"ownershipMode": {
"type": "string",
"enum": ["editorial", "application", "mixed", "external"]
},
"publicationMode": {
"type": "string",
"enum": ["runtime-only", "draft", "review", "publish", "scheduled"]
},
"entityBindings": {
"type": "array",
"items": { "$ref": "#/$defs/entityBinding" }
}
},
"$defs": {
"region": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": { "type": "string" },
"kind": {
"type": "string",
"enum": ["rich-text", "media", "summary", "promo", "legal"]
},
"repeatable": { "type": "boolean" },
"disabled": { "type": "boolean" }
},
"required": ["name"]
},
"entityBinding": {
"type": "object",
"additionalProperties": false,
"properties": {
"role": { "type": "string" },
"entityRef": { "type": "string" },
"cardinality": {
"type": "string",
"enum": ["one", "many"]
},
"region": { "type": "string" },
"disabled": { "type": "boolean" }
},
"required": ["role", "entityRef"]
}
}
} {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://ujg.specs.openuji.org/ed/ns/content.schema.json",
"title": "UJG Content Extension Payload",
"type": "object",
"additionalProperties": false,
"properties": {
"contentTypes": {
"type": "array",
"items": { "type": "string" }
},
"editableRegions": {
"type": "array",
"items": { "$ref": "#/$defs/region" }
},
"ownershipMode": {
"type": "string",
"enum": ["editorial", "application", "mixed", "external"]
},
"publicationMode": {
"type": "string",
"enum": ["runtime-only", "draft", "review", "publish", "scheduled"]
},
"entityBindings": {
"type": "array",
"items": { "$ref": "#/$defs/entityBinding" }
}
},
"$defs": {
"region": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": { "type": "string" },
"kind": {
"type": "string",
"enum": ["rich-text", "media", "summary", "promo", "legal"]
},
"repeatable": { "type": "boolean" },
"disabled": { "type": "boolean" }
},
"required": ["name"]
},
"entityBinding": {
"type": "object",
"additionalProperties": false,
"properties": {
"role": { "type": "string" },
"entityRef": { "type": "string" },
"cardinality": {
"type": "string",
"enum": ["one", "many"]
},
"region": { "type": "string" },
"disabled": { "type": "boolean" }
},
"required": ["role", "entityRef"]
}
}
} 15. Minimal Example Payload
{
"@id": "urn:template:checkout-shell",
"@type": "Template",
"extensions": {
"org.openuji.specs.ujg.content.v1": {
"contentTypes": ["urn:content-type:checkout-page"],
"editableRegions": [
{ "name": "aside", "kind": "promo" },
{ "name": "footer", "kind": "legal" }
],
"ownershipMode": "mixed",
"publicationMode": "publish",
"entityBindings": [
{ "role": "campaign", "entityRef": "urn:entity:promo-card", "cardinality": "many", "region": "aside" },
{ "role": "legal", "entityRef": "urn:entity:legal-copy", "cardinality": "one", "region": "footer" }
]
}
}
} {
"@id": "urn:template:checkout-shell",
"@type": "Template",
"extensions": {
"org.openuji.specs.ujg.content.v1": {
"contentTypes": ["urn:content-type:checkout-page"],
"editableRegions": [
{ "name": "aside", "kind": "promo" },
{ "name": "footer", "kind": "legal" }
],
"ownershipMode": "mixed",
"publicationMode": "publish",
"entityBindings": [
{ "role": "campaign", "entityRef": "urn:entity:promo-card", "cardinality": "many", "region": "aside" },
{ "role": "legal", "entityRef": "urn:entity:legal-copy", "cardinality": "one", "region": "footer" }
]
}
}
} 16. Graduation Guidance
Thin parts that may later graduate into optional modules or shared references include:
a content-type reference,
an editable-region reference,
an entity-binding reference.
The following should remain extension-only:
ownership and publication overlays,
combined region and entity binding detail,
editor-facing content realization hints.