Last updated: 22 Apr 2026
content-block-manager: Configuration
Configuration for content blocks is stored in the schema definition files under app/models/schema/definitions/*.json.
Where configuration lives
Each block type has a JSON schema file, for example:
app/models/schema/definitions/contact.jsonapp/models/schema/definitions/pension.jsonapp/models/schema/definitions/tax.jsonapp/models/schema/definitions/time_period.json
These files define both:
- the JSON schema shape (
type,properties,required,patternProperties, etc) - Content Block Manager UI metadata using
x-*extension keys
Supported schema metadata (x-* keys)
Block/subschema-level keys
-
x-embeddable-as-block: whether an object/subschema can be embedded as a standalone block -
x-block-display-fields: fields omitted from metadata summary and displayed in the block body -
x-field-order: field ordering for forms and summary metadata -
x-group: logical group name for grouped subschemas (for example, contact methods) -
x-group-order: ordering within a group
Field-level keys
-
x-component-name: override the component used to render a field -
x-character-limit: soft character limit shown in the UI (used with textarea-like components) -
x-govspeak-enabled: enables Govspeak support for a field -
x-show-field-name: nested toggle field used for conditional reveal of object fields -
x-hidden-field: marks a field as hidden in the form
Examples
Component, character limit and Govspeak
"description": {
"type": "string",
"x-component-name": "textarea",
"x-character-limit": 165,
"x-govspeak-enabled": true
}
Conditional reveal (x-show-field-name) and hidden toggle field (x-hidden-field)
"opening_hours": {
"type": "object",
"x-show-field-name": "show_opening_hours",
"properties": {
"show_opening_hours": {
"type": "boolean",
"x-hidden-field": true,
"default": false
},
"opening_hours": {
"type": "string",
"x-component-name": "textarea"
}
}
}
Field ordering
"x-field-order": ["title", "description", "telephone_numbers", "video_relay_service"]
Notes
- Prefer adding or changing schema metadata in
app/models/schema/definitions/*.json. - If a metadata key is missing, rendering falls back to default behavior in the model layer.