Automated settings reference
Elastic Docs V3 can build a Markdown settings reference from a YAML source file.
The {settings} directive is generic. Although the largest current examples come from Kibana, the directive can be used by any documentation repository that wants to render structured settings from YAML.
::::{settings} /syntax/settings-with-applies-example.yml
::::
:deployment: <value>-
Filters the rendered settings to only those available for the specified deployment type. When omitted, all settings are shown regardless of deployment.
Valid values:
ech(Elastic Cloud Hosted),ece(Elastic Cloud Enterprise),eck(Elastic Cloud on Kubernetes),self(self-managed).A setting is considered available for a deployment type if its
applies_tometadata lists that deployment with a lifecycle other thanremovedorunavailable. Flat keys such asech: gaand a nesteddeployment:map both work. If a setting hasapplies_tometadata but no entry for the requested deployment, it is treated as unavailable and hidden.Settings with no
applies_tometadata at all are always shown, regardless of the filter.::::{settings} /syntax/settings-with-applies-example.yml :deployment: ech ::::
The schema below reflects the structure currently supported by docs-builder. For the original settings-gen schema that inspired this format, see the Kibana schema reference.
product: REQUIRED
collection: REQUIRED
# id: OPTIONAL
# page_description: OPTIONAL multiline Markdown
# note: OPTIONAL multiline Markdown or string
groups:
- group: REQUIRED
# id: OPTIONAL
# description: OPTIONAL multiline Markdown
# note: OPTIONAL multiline Markdown or string
# example: OPTIONAL multiline Markdown
settings:
- setting: REQUIRED
description: |
REQUIRED
Multiline Markdown.
# id: OPTIONAL
# applies_to: OPTIONAL docs-builder applicability metadata
#
# Same keys as applies.md. The authoring contract is different.
# See "applies_to in settings YAML" on this page.
#
# applies_to:
# stack: ga 9.2
# ech: ga
# ece: ga
# eck: ga
# self: ga
# serverless: ga
#
# note: OPTIONAL
# tip: OPTIONAL
# warning: OPTIONAL
# important: OPTIONAL
# deprecation_details: OPTIONAL
# datatype: OPTIONAL
# default: OPTIONAL
# options:
# - option: OPTIONAL
# description: OPTIONAL
# example: OPTIONAL multiline Markdown
# settings: OPTIONAL nested settings list
# Child settings inherit applies_to when they omit the field.
# A child applies_to map replaces the parent. It does not merge keys.
# - setting: "[n].url"
# description: |
# REQUIRED
The keys are the same as Applies to. The authoring contract is different, because each setting renders a Supported on line.
In settings YAML, list every deployment key so that line is complete and the :deployment: filter is explicit.
| Key | What it means here | Write |
|---|---|---|
stack |
The setting's lifecycle and versions it's available in | ga, preview 9.2, or a history such as preview 9.0-9.2, ga 9.3+. Omit the version if the setting was added before 9.0. |
ech, ece, eck, self |
Supported on that deployment, or not | Always list all four. ga if supported. unavailable if not. Never a version. Never preview, experimental, deprecated, or removed. |
serverless |
Supported on serverless, or not | Always list it. ga if every serverless project supports it. unavailable if none do. Never a version. Never preview, experimental, deprecated, or removed. If only some projects support it, nest those project keys. |
ga on a deployment key is a support flag. It does not mean the setting is generally available. If stack is preview and the setting exists on Elastic Cloud Hosted, write ech: ga.
Some settings exist on only some serverless projects. This is common for Advanced Settings. When that is the case, nest those project keys under serverless. The keys are elasticsearch, observability, security, and vectordb. Write ga on the projects that include the setting. Those keys are support flags. Never write a version. Never write preview, experimental, deprecated, or removed. Do not nest workplace_ai. That project type never shipped, and docs-builder has no workplace_ai key.
Do not mix a scalar serverless: with project keys.
Existing settings YAML sometimes lists those project keys as siblings of stack. That form still parses. Prefer the nested serverless: map for new entries.
unavailable is not rendered as a badge. It hides the setting from :deployment:. Omitting a deployment key also hides it from that filter. Still write unavailable so the Supported on line is complete.
Child settings inherit the parent's applies_to when they omit the field. If a child sets applies_to, that map replaces the parent. It does not merge keys.
To scope a note, tip, warning, or important to a version or deployment, put :applies_to: on the first line of that field. docs-builder wraps the field in an admonition. Do not add a :::{note} wrapper.
Preferred map (supported everywhere):
applies_to:
stack: ga 9.2
ech: ga
ece: ga
eck: ga
self: ga
serverless: ga
Technical preview that is still supported on every deployment:
applies_to:
stack: preview 9.2
ech: ga
ece: ga
eck: ga
self: ga
serverless: ga
Self-managed only:
applies_to:
stack: ga 9.2
ech: unavailable
ece: unavailable
eck: unavailable
self: ga
serverless: unavailable
Observability serverless only:
applies_to:
stack: ga 9.2
ech: ga
ece: ga
eck: ga
self: ga
serverless:
observability: ga
The same nested shape works for elasticsearch, security, and vectordb.
See /syntax/settings-with-applies-example.yml for a full, schema-compliant sample.
It demonstrates:
- Group
description,note, andexample. - Setting
id,datatype,default, andoptions. note,tip,warning,important, anddeprecation_details.- Nested
settings. - A complete
applies_tomap, includingunavailablekeys andstack: previewwithech: ga. applies_toinheritance when a child omits the field, and replacement when it sets its own map.- Inline
{applies_to}badges inside a settingdescriptionfor version-scoped behavior that is not thedefaultfield. - A gated
notefor a previous default, and a gatedwarningwith:applies_to:on the first line. - Top-level
page_description.
Everything below this line is auto-generated.
This page demonstrates schema-compliant settings output, including applies_to badges, nested settings, metadata lines, options, admonitions, and examples.
General settings
These settings show top-level schema fields, metadata, and applies_to usage.
xpack.example.enabled: true
xpack.example.mode: strict
- xpack.example.enabled
-
Supported on:
Enables the example feature.
Datatype:
boolDefault:
trueOptions:
-
true- Turns the feature on. -
false- Turns the feature off.
NoteDisable this only for troubleshooting.
TipKeep this enabled in production.
-
- xpack.example.mode
-
Supported on:
Controls runtime mode.
Datatype:
enumDefault:
strictOptions:
-
strict- Full validation. -
lenient- Reduced validation.
WarningLenient mode may hide configuration mistakes.
ImportantStrict mode is recommended for production.
Deprecation detailsThe
lenientoption will be deprecated in a future release.xpack.example.mode: strict -
- xpack.example.defaultModel
-
Supported on:
Default model used by the feature.
The model picker is also available in Discover. Datatype:
stringDefault:
model-v2NoteIn this version, this setting defaults to
model-v1.
Advanced settings
These settings demonstrate nested entries and applies_to inheritance.
- xpack.example.hosts
-
Supported on:
List of custom host settings.
Datatype:
objectDefault:
[]- xpack.example.hosts[n].url
-
Supported on:
Child setting inherits applies_to from the parent.
Datatype:
string - xpack.example.hosts[n].mode
-
Supported on:
Child setting replaces the parent applies_to map.
Datatype:
enumDefault:
strictOptions:
-
strict- Requires strict checks. -
lenient- Allows lenient checks.
TipKeep all host modes aligned to simplify troubleshooting and reduce drift.
xpack.example.hosts: - url: https://example.org mode: strict -
- xpack.example.hosts[n].url
For large Kibana-exported YAML samples used in local stress tests, see kibana-settings-yaml-samples.md in the docs-tests/ docset at the repository root (outside the main docs/ folder).