- Home
- Reference
- Configuration and API
- Configuration reference
Configuration reference
DXPR Builder stores its configuration in Drupal's
configuration system. This page lists every key
declared in config/schema/dxpr_builder.schema.yml
with its type, allowed values and default. It also
lists the status key of each configuration entity
and the settings keys that code reads without a
schema entry. Bold names are the form labels.
The module ships no config/install/dxpr_builder.settings.yml.
Defaults are set by hook_install() and update
hooks in dxpr_builder.install, or applied in code
when a key is missing; the Default column
states which.
General settings
Configuration object: dxpr_builder.settings
Admin path:
/admin/dxpr_studio/dxpr_builder/settings
(src/Form/DxprBuilderSettingsForm.php)
| Key | Type | Allowed values | Default | Description |
|---|---|---|---|---|
json_web_token |
string | A DXPR product key (JWT) | empty | Product key, only when api_key_storage is config. Cleared when the key is stored in the Key module; update 9026 clears a value left behind there. |
api_key_storage |
string | config (Configuration storage), key (Key module) |
not set (treated as config); key after dxpr_builder_update_9020() moves an existing key |
Storage method for the product key. |
key_provider |
string | A Key entity id | empty; update 9020 sets dxpr_builder_jwt when it moves an existing key |
Key entity holding the product key when api_key_storage is key. |
bootstrap |
string | 0, bs5 |
not set (no Bootstrap files loaded) | Sideload Bootstrap files: 0 = None (theme provides Bootstrap), bs5 = Bootstrap 5. Update 8040 rewrites the removed 1 and bs4 values to bs5. |
cke_stylesset |
string | One [label]=[element].[class] entry per line |
empty (the editor then uses the styles shipped with DXPR Builder) | Custom styles for the text editor, for example Sassy Title=h1.sassy-title. |
editor_assets_source |
integer | 0, 1, 2 |
not set (0) |
Asset source: 0 = Cloud, 1 = Local (minified), 2 = Local (unminified). The field only appears when a local build exists in the module's dxpr_builder/ folder. With 0 stored, such a build is still used, the unminified one first. |
format_filters |
boolean | true, false |
not set (off) | Apply text format filters to frontend content. |
media_browser |
string | '' (Basic file upload), media_library (Media Library), media_library_acquia_dam (Media Library (Acquia DAM)), or an Entity Browser id |
media_library when the Media Library module is installed, else dxpr_builder_media_modal when dxpr_builder_media is installed, else '' (set by hook_install()) |
Browser type used by image fields. |
offset_selector |
string | A CSS selector | .dxpr-theme-header--sticky, .dxpr-theme-header--fixed (applied when empty) |
Scroll offset selector for fixed headers. |
controls_layout |
string | element (On each element), breadcrumb (One row) |
element (applied when empty) |
Control bars in edit mode: a bar on each element, or one row above the element you point at. A profile and a user's own setting override it. The user's setting is not configuration: it is stored with the user account (user.data, module dxpr_builder, name controls_layout). |
AI settings
Stored in the same dxpr_builder.settings object.
Admin path:
/admin/dxpr_studio/dxpr_builder/ai_settings
(src/Form/DxprBuilderAiSettingsForm.php)
| Key | Type | Allowed values | Default | Description |
|---|---|---|---|---|
ai_enabled |
boolean | true, false |
true when missing; set by update 9008 |
Enable text editing assistant. |
ai_page_enabled |
boolean | true, false |
true when missing; set by update 9012 |
Enable page creation assistant. |
ai_image_enabled |
boolean | true, false |
true when missing; set by update 9015 |
Enable image generation. |
ai_user_model_selection |
boolean | true, false |
true when missing; set by update 9016 |
Allow users to choose model. Only shown when ai_provider_dxpr is not installed. |
ai_model |
string | dxai_kavya_m1, dxai_kavya_m1_eu, dxai_kavya_m1_fast |
dxai_kavya_m1 (AiModelConstants::getDefaultModel()) |
Default model. The API names are kavya-m1, kavya-m1-eu and kavya-m1-fast. Only shown and saved when ai_provider_dxpr is not installed. |
ai_provider_selection_mode |
string | automatic (Automatic), manual (Manual priority) |
automatic |
Service providers mode. manual uses the order in ai_providers. Only saved when ai_provider_dxpr is not installed. |
ai_providers |
sequence of mappings keyed by provider id | Keys: anthropic, gemini, mistral, openai, xai. Each has enabled (boolean), weight (integer) and region (enabled or disabled) |
empty (the form then lists all five as enabled) | Provider priority table for the manual mode. region is the table section the row sits in, not a geographic region. |
tone_of_voice_vocabulary |
string | A taxonomy vocabulary id | ai_tone_of_voice (vocabulary created by hook_install() when Taxonomy is enabled, and by update 9007) |
Tone of voice vocabulary. Update 9025 points the value back to ai_tone_of_voice when the stored vocabulary no longer exists. |
enable_taxonomy_tones |
boolean | true, false |
true once a tone vocabulary is set |
Set to true with the vocabulary, by hook_install(), the updates or the form. No form field, and no code reads it. |
commands_vocabulary |
string | A taxonomy vocabulary id | ai_agent_commands (created by hook_install() when Taxonomy is enabled, and by update 9007, only when the key is empty) |
Commands vocabulary. |
enable_taxonomy_commands |
boolean | true, false |
true once a commands vocabulary is set |
Set to true with the vocabulary, by hook_install(), update 9007 or the form. No form field, and no code reads it. |
ai_output_allowed_domains |
text | Domains one per line (wildcards such as *.wikipedia.org allowed); * allows all; empty blocks all external URLs |
unsplash.com, images.unsplash.com, pexels.com, images.pexels.com, pixabay.com, promptahuman.com (set by hook_install() and update 9013) |
Allowed domains. Unchecking Filter AI output on the form stores *. |
ai_output_allowed_tags |
text | HTML tag names one per line | A list of common text, list, table, inline, media and form tags (div to rp) applied in the form when the key is missing |
Allowed HTML tags; unlisted tags lose their markup but keep their text. |
ai_output_stripped_tags |
text | HTML tag names one per line | script, style |
Blocked tags, removed with their contents. Unchecking Filter AI output stores the default script and style. |
Keys read by code without a form field
These keys are not in the schema but the module
reads them from dxpr_builder.settings. Set them
with drush config:set or a configuration
override in settings.php.
| Key | Type | Default when missing | Description |
|---|---|---|---|
record_analytics |
boolean | true |
Sends editor usage analytics to tuur.dxpr.com when true. |
notifications |
boolean | true |
Shows DXPR notifications in the editor when true. |
cloud_url |
string | https://cdn2.dxpr.com/VERSION/ |
CDN base URL for editor assets; VERSION is replaced with the module version. |
license_endpoint |
string | https://dxpr.com/api/central-user-storage/ |
Endpoint for licensed user synchronisation. |
Page templates
Configuration objects: dxpr_builder.page_template.*
(entity type dxpr_builder_page_template)
Admin path:
/admin/dxpr_studio/dxpr_builder/page_template
| Key | Type | Allowed values | Default | Description |
|---|---|---|---|---|
id |
string | Machine name | required | Identifier. |
label |
label | Any text | required | Label: name shown in the template chooser. |
status |
boolean | true, false |
true |
Enabled. The editor only offers and loads enabled templates. |
category |
text | Any text | empty (the form requires it) | Category the template is grouped under. |
template |
string | DXPR Builder HTML | empty (the form requires it) | Template markup. |
weight |
integer | Any integer | empty (the editor reads it as 0) |
Weight: sort order. |
date |
integer | Unix timestamp | set by the edit form on every save | Last modified time. |
image |
string | Base64-encoded image contents | empty | Image: thumbnail. |
uuid |
string | UUID | generated | Universally unique id. |
The module ships five page templates in
config/install: about_me, about_us,
homepage_basic, split_content_and_buttons and
text_columns.
User profiles
Configuration objects: dxpr_builder.dxpr_builder_profile.*
(entity type dxpr_builder_profile)
Admin path:
/admin/dxpr_studio/dxpr_builder/profile
On a new profile the form ticks every element, block, view display, enabled page template, enabled global user template and icon set, plus a default set of text editor buttons. The defaults below are the entity's own values.
| Key | Type | Allowed values | Default | Description |
|---|---|---|---|---|
id |
string | Machine name | required | Identifier. |
label |
label | Any text | required | Label: profile name. |
uuid |
string | UUID | generated | Universally unique id. |
status |
boolean | true, false |
true |
User profile enabled. Disabled profiles are skipped when a user's roles are matched. |
sidebar |
boolean | true, false |
not stored | Legacy key: declared in the schema but not exported by the entity, so it is never saved. |
dxpr_editor |
boolean | true, false |
true; update 8008 set it on existing profiles |
Start editor when page loads. When false, the controls only appear after the user clicks the eye icon on the main container controls. |
controls_layout |
string | default (Same as the site), element (On each element), breadcrumb (One row) |
default |
Control bars in edit mode for this profile. A user's own setting overrides it. |
weight |
integer | -10 to 10 in the form |
0 |
Weight: when a user's roles match several enabled profiles, the lowest weight wins. |
roles |
sequence of strings | Role machine names (the form leaves out anonymous and authenticated) |
empty | Roles the profile applies to. |
elements |
sequence of strings | Element machine names (az_text, az_image, ...) |
empty | Allowed Elements. |
all_elements |
boolean | true, false |
false |
Check/Uncheck all Elements. When true, every element is allowed and elements is ignored. |
blocks |
sequence of strings | az_block-<block plugin id> values |
empty | Allowed Blocks. |
all_blocks |
boolean | true, false |
false |
Check/Uncheck all Blocks. When true, every block is allowed, including ones added later. |
views |
sequence of strings | az_view-<view id>-<display id> values |
empty | Allowed Views displays. |
all_views |
boolean | true, false |
false |
Check/Uncheck all Views. When true, every views display is allowed, including ones added later. |
page_templates |
sequence of strings | Page template UUIDs | empty | Allowed Page templates. |
all_page_templates |
boolean | true, false |
false |
Check/Uncheck all Page templates. When true, every page template is allowed. |
user_templates |
sequence of strings | Global user template UUIDs | empty | Allowed Global user templates. |
all_user_templates |
boolean | true, false |
false |
Check/Uncheck all Global user templates. When true, every global user template is allowed. |
icon_sets |
sequence of strings | Icon set ids from *.dxpr_icon_sets.yml files |
empty | Allowed Icon sets. |
all_icon_sets |
boolean | true, false |
not set (counts as true) |
Check/Uncheck all Icon sets. When true or missing, every icon set is allowed. |
inline_buttons |
sequence of strings | CKEditor 5 button names | empty | Text editor buttons (inline editing). Update 8036 migrated CKEditor 4 names in this list and in modal_buttons. |
modal_buttons |
sequence of strings | CKEditor 5 button names | empty | Text editor buttons (modal editing). |
User templates
Configuration objects: dxpr_builder.user_template.*
(entity type dxpr_builder_user_template)
Admin path:
/admin/dxpr_studio/dxpr_builder/user_templates
| Key | Type | Allowed values | Default | Description |
|---|---|---|---|---|
id |
string | Machine name | required | Identifier. |
label |
label | Any text | required | Label: template name. |
status |
boolean | true, false |
true |
No form field. Only enabled templates can be loaded in the editor or copied into a page template. |
type |
string | The data-azb element type the template was saved from, for example section, row, az_block, az_view, or custom |
custom |
Type. Update 9021 backfills it from the markup; az_block_* and az_view_* values collapse to az_block and az_view. |
template |
string | DXPR Builder HTML | empty | Template markup. Update 8013 moved user templates from a database table into configuration. |
uid |
integer | User id | required in the form | UID: the owner. |
global |
boolean | true, false |
true (the editor's save request sends its own value) |
Global: true makes the template available to all users (subject to profiles); false keeps it private to the owner. |
image |
string | Base64-encoded image contents | empty | Image: thumbnail. |
uuid |
string | UUID | generated | Universally unique id. |
Exporting configuration
Export all DXPR Builder configuration:
drush config:export
This exports settings, profiles, page templates,
and user templates as YAML files in the config
sync directory. When api_key_storage is key,
the product key is not part of dxpr_builder.settings.
It lives in the selected Key entity and follows that
key's own provider, such as configuration, a file or
an environment variable.
What's next?
- General settings: the settings form
- Firewall and data residency: the keys that control outbound connections
- API endpoints: routes that read this configuration