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
datatype is an optional display value. Copy the term the surrounding file already uses for that kind of value. Do not invent a new term.
Write description for the person who sets the value. Lead with what the setting does. Then say how to set it.
Do:
- Say what changes when the value changes.
- For a boolean, say what
trueandfalsedo. - For a limit or duration, include the unit.
Do not:
- Restate the key as the whole description.
- Repeat
datatypeor the currentdefaultin the description. Those render as their own fields. - Put a version number in the description next to a badge.
default is the current product value. Include it when the source defines it. Do not omit default to encode an earlier value.
If an earlier version used a different default, keep default as the current value. Put the previous value in a gated note. The :applies_to: range carries the version. Do not write the version in the note body. The sample YAML on this page shows that pattern.
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+. A new setting includes a version. 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. |
A new setting includes a version on stack, for example ga 9.4+ or preview 9.5+. Omit the version only if the setting was added before 9.0.
If that minor is not released yet, still write the version. Docs show Planned until it ships. That rendering is documented in Badge rendering reference. Do not omit the version to hide Planned.
Tag stack at the minor: ga 9.4+, not ga 9.4.2. Version syntax is in Applies to.
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.
stack accepts more than one lifecycle. Separate them with a comma. Append the new state. Do not overwrite the previous one.
Preview, then GA:
applies_to:
stack: preview 9.0-9.2, ga 9.3+
ech: ga
ece: ga
eck: ga
self: ga
serverless: ga
GA, then deprecated:
applies_to:
stack: ga 9.0-9.3, deprecated 9.4+
ech: ga
ece: ga
eck: ga
self: ga
serverless: ga
When you remove a setting that existed on Elastic Stack, keep the YAML entry. Users on earlier versions still need to find the key. Append removed and the version on stack. Keep the same ga or unavailable values on the deployment keys. Do not write removed on ech, ece, eck, or self.
If the setting leaves serverless and it still exists on Elastic Stack, write serverless: unavailable. Serverless has no version history on these keys.
If the setting existed only on serverless and is removed, delete the YAML entry.
Usual removal from Stack and serverless:
applies_to:
stack: ga 9.0-9.3, removed 9.4+
ech: ga
ece: ga
eck: ga
self: ga
serverless: unavailable
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.
Lifecycle history maps, including deprecated and removed stack values, are in Lifecycle history.
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).