Elastic Stack · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Elk Stack Cluster API
41 actions
41 updates
phrasing
extends
openapi/elk-stack-cluster-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Elastic Stack's API. It is a proposal applied on top of the contract, not a document Elastic Stack publishes.
What the actions change
x-apievangelist-phrasing
Targets 41 · first 16 shown; the file carries all of them
$.info
$.paths['/_cluster/allocation/explain'].get
$.paths['/_cluster/allocation/explain'].post
$.paths['/_cluster/voting_config_exclusions'].post
$.paths['/_cluster/voting_config_exclusions'].delete
$.paths['/_cluster/settings'].get
$.paths['/_cluster/settings'].put
$.paths['/_cluster/health'].get
$.paths['/_cluster/health/{index}'].get
$.paths['/_info/{target}'].get
$.paths['/_cluster/pending_tasks'].get
$.paths['/_remote/info'].get
$.paths['/_cluster/reroute'].post
$.paths['/_cluster/state'].get
$.paths['/_cluster/state/{metric}'].get
$.paths['/_cluster/state/{metric}/{index}'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Elk Stack Cluster API
version: 1.0.0
extends: openapi/elk-stack-cluster-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 40
- target: $.paths['/_cluster/allocation/explain'].get
update:
x-apievangelist-phrasing:
intent: Explain why a shard is unassigned or placed
effect: read
questions:
- Why is one of my Elasticsearch shards stuck unassigned?
- Can I ask the cluster to explain the allocation decision for a specific shard using query-string parameters?
- How do I see disk usage info alongside a shard allocation explanation?
instructions:
- text: Explain why shard {shard} of index {index} is not allocated, passing the details as query parameters.
slots:
shard: query.shard
index: query.index
- text: Using a GET request, tell me why the first unassigned shard in the cluster can't be placed.
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/allocation/explain'].post
update:
x-apievangelist-phrasing:
intent: Explain a shard allocation with a request body
effect: read
questions:
- How do I send the index and shard number in a JSON body to get an allocation explanation?
- Can I find out why a replica shard is sitting on node X instead of moving elsewhere?
instructions:
- text: POST an allocation explain for index {index}, shard {shard}, primary {primary}, with the values in the body.
slots:
index: requestBody.index
shard: requestBody.shard
primary: requestBody.primary
- text: Explain why the shard currently on node {current_node} is staying there, sending it in the request body.
slots:
current_node: requestBody.current_node
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/voting_config_exclusions'].post
update:
x-apievangelist-phrasing:
intent: Exclude master nodes from voting
effect: write
questions:
- How do I safely remove master-eligible nodes from the voting configuration before shutting them down?
- Can I exclude a master node from voting by its node name rather than its ID?
instructions:
- text: Add nodes {node_names} to the voting configuration exclusions.
slots:
node_names: query.node_names
- text: Exclude master-eligible node ID {node_ids} from cluster voting before I decommission it.
slots:
node_ids: query.node_ids
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/voting_config_exclusions'].delete
update:
x-apievangelist-phrasing:
intent: Clear the voting configuration exclusion list
effect: destructive
questions:
- How do I clear the voting exclusions after I've finished removing master nodes?
- Can I clear voting exclusions without waiting for the excluded nodes to leave the cluster?
instructions:
- text: Clear all voting configuration exclusions on the cluster.
- text: Remove the voting exclusions with wait_for_removal set to {wait_for_removal}.
slots:
wait_for_removal: query.wait_for_removal
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/settings'].get
update:
x-apievangelist-phrasing:
intent: Get cluster-wide settings
effect: read
questions:
- What persistent and transient settings have been set on my cluster?
- Can I see the default values of cluster settings too, not just the ones I changed?
instructions:
- text: Show me the cluster settings that have been explicitly set.
- text: Get cluster settings including defaults, in flat format {flat_settings}.
slots:
flat_settings: query.flat_settings
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/settings'].put
update:
x-apievangelist-phrasing:
intent: Update dynamic cluster settings
effect: write
questions:
- How do I change a dynamic cluster setting without restarting nodes?
- What's the difference between persistent and transient cluster setting updates?
instructions:
- text: Apply persistent cluster settings {persistent}.
slots:
persistent: requestBody.persistent
- text: Set transient cluster settings {transient} on the running cluster.
slots:
transient: requestBody.transient
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/health'].get
update:
x-apievangelist-phrasing:
intent: Check overall cluster health
effect: read
questions:
- Is my Elasticsearch cluster green, yellow or red right now?
- Can I wait until the whole cluster reaches yellow status before continuing a script?
instructions:
- text: Check the health status of the whole cluster.
- text: Wait until the cluster reaches {wait_for_status} health, timing out after {timeout}.
slots:
wait_for_status: query.wait_for_status
timeout: query.timeout
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/health/{index}'].get
update:
x-apievangelist-phrasing:
intent: Check health of specific indices or data streams
effect: read
questions:
- What's the health status of just one index or data stream rather than the whole cluster?
- Can I get shard-level health for a particular index?
instructions:
- text: Check the health of index {index}.
slots:
index: path.index
- text: Show shard-level health for data stream {index} with level {level}.
slots:
index: path.index
level: query.level
method: generated
generated: '2026-09-26'
- target: $.paths['/_info/{target}'].get
update:
x-apievangelist-phrasing:
intent: Get cluster info for a chosen target
effect: read
questions:
- How do I pull cluster info such as HTTP, ingest or script stats for a named target?
- Which info targets can I request from the _info endpoint?
instructions:
- text: Get the cluster info for target {target}.
slots:
target: path.target
- text: Fetch _info for the {target} section of the cluster.
slots:
target: path.target
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/pending_tasks'].get
update:
x-apievangelist-phrasing:
intent: List pending cluster-level tasks
effect: read
questions:
- Are there cluster state changes like index creation or mapping updates waiting to be applied?
- Why do my mapping updates seem queued up on the master node?
instructions:
- text: List the pending cluster tasks queued on the master.
- text: Show pending cluster tasks from the local node only, local={local}.
slots:
local: query.local
method: generated
generated: '2026-09-26'
- target: $.paths['/_remote/info'].get
update:
x-apievangelist-phrasing:
intent: Get remote cluster connection info
effect: read
questions:
- Which remote clusters are configured for cross-cluster search and are they connected?
- Can I see the seed endpoints for each remote cluster alias?
instructions:
- text: Show me connection details for every configured remote cluster.
- text: List remote cluster aliases and whether each is connected.
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/reroute'].post
update:
x-apievangelist-phrasing:
intent: Manually move or allocate shards
effect: write
questions:
- How do I move a shard from one node to another by hand?
- Can I retry shards that failed allocation too many times?
- Is there a dry run to preview a shard reroute before applying it?
instructions:
- text: Reroute shards using commands {commands}.
slots:
commands: requestBody.commands
- text: Retry allocation of shards that previously failed, retry_failed={retry_failed}.
slots:
retry_failed: query.retry_failed
- text: Do a dry run of reroute commands {commands} and explain the outcome.
slots:
commands: requestBody.commands
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/state'].get
update:
x-apievangelist-phrasing:
intent: Get the full cluster state
effect: read
questions:
- How do I dump the entire internal cluster state for debugging?
- Can I wait for a particular cluster state metadata version before reading it?
instructions:
- text: Get the complete cluster state.
- text: Fetch the full cluster state once metadata version {wait_for_metadata_version} is reached.
slots:
wait_for_metadata_version: query.wait_for_metadata_version
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/state/{metric}'].get
update:
x-apievangelist-phrasing:
intent: Get selected metrics of the cluster state
effect: read
questions:
- Can I pull only the routing table or metadata part of the cluster state?
- How do I limit the cluster state response to certain metrics to keep it small?
instructions:
- text: Get only the {metric} section of the cluster state.
slots:
metric: path.metric
- text: Show cluster state metric {metric} across all indices.
slots:
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/state/{metric}/{index}'].get
update:
x-apievangelist-phrasing:
intent: Get cluster state metrics for specific indices
effect: read
questions:
- What does the cluster state say about the routing of one particular index?
- Can I filter cluster state metrics down to a list of indices?
instructions:
- text: Get cluster state metric {metric} for index {index}.
slots:
metric: path.metric
index: path.index
- text: Show the {metric} part of the cluster state limited to indices {index}.
slots:
metric: path.metric
index: path.index
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/stats'].get
update:
x-apievangelist-phrasing:
intent: Get cluster-wide statistics
effect: read
questions:
- How much storage and memory is my whole cluster using, and how many shards does it have?
- Can cluster stats include figures from remote clusters too?
instructions:
- text: 'Give me the cluster-wide stats: shards, store size, JVM and node counts.'
- text: Get cluster stats including remote clusters, include_remotes={include_remotes}.
slots:
include_remotes: query.include_remotes
method: generated
generated: '2026-09-26'
- target: $.paths['/_cluster/stats/nodes/{node_id}'].get
update:
x-apievangelist-phrasing:
intent: Get cluster statistics for selected nodes
effect: read
questions:
- Can I compute cluster stats using only a subset of nodes, like the data nodes?
- What are the cluster statistics restricted to one node filter?
instructions:
- text: Get cluster stats computed only from nodes {node_id}.
slots:
node_id: path.node_id
- text: Show store size and JVM usage in cluster stats filtered to node filter {node_id}.
slots:
node_id: path.node_id
method: generated
generated: '2026-09-26'
- target: $.paths['/'].get
update:
x-apievangelist-phrasing:
intent: Get basic cluster info from the root endpoint
effect: read
questions:
- What does hitting the root URL of my cluster return?
- How can I confirm the cluster name from the root endpoint?
instructions:
- text: Call the root endpoint and show me the cluster's basic info.
- text: Get the cluster name and version details from the root path.
method: generated
generated: '2026-09-26'
- target: $.paths['/'].head
update:
x-apievangelist-phrasing:
intent: Ping the cluster to see if it is up
effect: read
questions:
- Is my Elasticsearch cluster up and responding?
- Can I do a lightweight liveness check without fetching a response body?
instructions:
- text: Ping the cluster to confirm it's running.
- text: Send a HEAD request to check the cluster is reachable.
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/_repositories_metering/{max_archive_version}'].delete
update:
x-apievangelist-phrasing:
intent: Clear archived repository metering data
effect: destructive
questions:
- How do I clear old archived snapshot repository metering data from a node?
- Can I delete repository metering archives up to a certain archive version?
instructions:
- text: Clear repositories metering archive on nodes {node_id} up to version {max_archive_version}.
slots:
node_id: path.node_id
max_archive_version: path.max_archive_version
- text: Purge archived metering for node {node_id} through archive version {max_archive_version}.
slots:
node_id: path.node_id
max_archive_version: path.max_archive_version
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/_repositories_metering'].get
update:
x-apievangelist-phrasing:
intent: Get snapshot repository metering counters
effect: read
questions:
- How many requests has each node made against my snapshot repositories?
- Where can I get the repository metering counters to compute storage request costs?
instructions:
- text: Get repositories metering info for nodes {node_id}.
slots:
node_id: path.node_id
- text: Show the snapshot repository request counters on node {node_id}.
slots:
node_id: path.node_id
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/hot_threads'].get
update:
x-apievangelist-phrasing:
intent: Get hot threads across all nodes
effect: read
questions:
- Which threads are burning CPU across my cluster right now?
- Can I sample hot threads by wait or block time instead of CPU?
instructions:
- text: Show the top hot threads on every node.
- text: Get the top {threads} hot threads of type {type} across the cluster.
slots:
threads: query.threads
type: query.type
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/hot_threads'].get
update:
x-apievangelist-phrasing:
intent: Get hot threads for specific nodes
effect: read
questions:
- What's making one particular node's CPU spike?
- Can I get hot threads for a single node and skip idle threads?
instructions:
- text: Show hot threads on node {node_id}.
slots:
node_id: path.node_id
- text: Sample hot threads on node {node_id} over interval {interval}.
slots:
node_id: path.node_id
interval: query.interval
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes'].get
update:
x-apievangelist-phrasing:
intent: Get info about every node in the cluster
effect: read
questions:
- What roles, versions and settings do all my cluster nodes have?
- Which plugins are installed on the nodes in my cluster?
instructions:
- text: List information for all nodes in the cluster.
- text: Get every node's attributes and core settings in flat format.
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}'].get
update:
x-apievangelist-phrasing:
intent: Get info about specific nodes
effect: read
questions:
- What version and roles does a particular node report?
- How do I look up node information for one node by its ID or name?
instructions:
- text: Get node information for node {node_id}.
slots:
node_id: path.node_id
- text: Show the settings and attributes of nodes {node_id}.
slots:
node_id: path.node_id
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{metric}'].get
update:
x-apievangelist-phrasing:
intent: Get one category of info for all nodes
effect: read
questions:
- Can I get just the JVM or OS section of node info for every node?
- How do I limit node info to certain metrics like plugins or http?
instructions:
- text: Get the {metric} node info for all nodes.
slots:
metric: path.metric
- text: Show only the {metric} section of node information across the cluster.
slots:
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/{metric}'].get
update:
x-apievangelist-phrasing:
intent: Get one category of info for specific nodes
effect: read
questions:
- What JVM details does one specific node report in its node info?
- Can I combine a node filter and a metric filter in one node info call?
instructions:
- text: Get the {metric} node info for node {node_id}.
slots:
metric: path.metric
node_id: path.node_id
- text: Show node {node_id}'s {metric} information only.
slots:
node_id: path.node_id
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/reload_secure_settings'].post
update:
x-apievangelist-phrasing:
intent: Reload keystore secure settings on all nodes
effect: write
questions:
- How do I apply changed keystore settings on every node without a restart?
- Can I reload a password-protected keystore across the cluster?
instructions:
- text: Reload the secure settings keystore on all nodes.
- text: Reload secure settings cluster-wide using keystore password {secure_settings_password}.
slots:
secure_settings_password: requestBody.secure_settings_password
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/reload_secure_settings'].post
update:
x-apievangelist-phrasing:
intent: Reload keystore secure settings on chosen nodes
effect: write
questions:
- Can I reload the keystore on just one node after editing it?
- How do I refresh reloadable secure settings on a subset of nodes?
instructions:
- text: Reload secure settings on node {node_id}.
slots:
node_id: path.node_id
- text: Reload the keystore on nodes {node_id} with password {secure_settings_password}.
slots:
node_id: path.node_id
secure_settings_password: requestBody.secure_settings_password
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/stats'].get
update:
x-apievangelist-phrasing:
intent: Get statistics for all nodes
effect: read
questions:
- How much heap, disk and CPU is each node in the cluster using?
- Can I include segment file sizes in the node statistics?
instructions:
- text: Get the full statistics for every node in the cluster.
- text: Show node stats for all nodes including fielddata for fields {fielddata_fields}.
slots:
fielddata_fields: query.fielddata_fields
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/stats'].get
update:
x-apievangelist-phrasing:
intent: Get statistics for specific nodes
effect: read
questions:
- What are the resource statistics for a single node?
- How do I get all stats for one node by name?
instructions:
- text: Get all node stats for node {node_id}.
slots:
node_id: path.node_id
- text: Show heap and disk statistics for nodes {node_id}.
slots:
node_id: path.node_id
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/stats/{metric}'].get
update:
x-apievangelist-phrasing:
intent: Get one stats metric for all nodes
effect: read
questions:
- Can I pull only JVM or indices stats for every node?
- How do I limit node statistics to one metric like os or fs?
instructions:
- text: Get the {metric} node stats for all nodes.
slots:
metric: path.metric
- text: Show only {metric} statistics across every node.
slots:
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/stats/{metric}'].get
update:
x-apievangelist-phrasing:
intent: Get one stats metric for specific nodes
effect: read
questions:
- What are the JVM stats for one particular node?
- Can I filter node stats by both node and metric in the same call?
instructions:
- text: Get {metric} stats for node {node_id}.
slots:
metric: path.metric
node_id: path.node_id
- text: Show node {node_id}'s {metric} statistics only.
slots:
node_id: path.node_id
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/stats/{metric}/{index_metric}'].get
update:
x-apievangelist-phrasing:
intent: Get index-level node stats for all nodes
effect: read
questions:
- How much memory are segments or the query cache using on each node?
- Can I break down the indices metric of node stats into sub-metrics like fielddata?
instructions:
- text: Get {metric} node stats narrowed to index metric {index_metric} for all nodes.
slots:
metric: path.metric
index_metric: path.index_metric
- text: Show the {index_metric} index statistics from every node's {metric} stats.
slots:
index_metric: path.index_metric
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/stats/{metric}/{index_metric}'].get
update:
x-apievangelist-phrasing:
intent: Get index-level stats for specific nodes
effect: read
questions:
- How big is the query cache on one specific node?
- Can I get a single index sub-metric for one node only?
instructions:
- text: Get {metric} stats with index metric {index_metric} for node {node_id}.
slots:
metric: path.metric
index_metric: path.index_metric
node_id: path.node_id
- text: On node {node_id}, show the {index_metric} figures within its {metric} stats.
slots:
node_id: path.node_id
index_metric: path.index_metric
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/usage'].get
update:
x-apievangelist-phrasing:
intent: Get feature usage for all nodes
effect: read
questions:
- Which REST actions have my nodes been serving and how often?
- Can I see feature usage counts across the whole cluster?
instructions:
- text: Get feature usage information for every node.
- text: Show REST action usage counts cluster-wide.
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/usage'].get
update:
x-apievangelist-phrasing:
intent: Get feature usage for specific nodes
effect: read
questions:
- Which REST endpoints has a single node been handling?
- How do I check feature usage on one node by ID?
instructions:
- text: Get feature usage for node {node_id}.
slots:
node_id: path.node_id
- text: Show how often REST actions were used on nodes {node_id}.
slots:
node_id: path.node_id
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/usage/{metric}'].get
update:
x-apievangelist-phrasing:
intent: Get one usage metric for all nodes
effect: read
questions:
- Can I limit node usage output to only the rest_actions or aggregations metric?
- What aggregation usage do my nodes report?
instructions:
- text: Get the {metric} usage metric for all nodes.
slots:
metric: path.metric
- text: Show node usage restricted to {metric} across the cluster.
slots:
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_nodes/{node_id}/usage/{metric}'].get
update:
x-apievangelist-phrasing:
intent: Get one usage metric for specific nodes
effect: read
questions:
- What aggregation usage does one specific node report?
- Can I filter usage by both a node and a metric at once?
instructions:
- text: Get the {metric} usage for node {node_id}.
slots:
metric: path.metric
node_id: path.node_id
- text: Show node {node_id}'s feature usage limited to {metric}.
slots:
node_id: path.node_id
metric: path.metric
method: generated
generated: '2026-09-26'
- target: $.paths['/_info'].get
update:
x-apievangelist-phrasing:
intent: Get general cluster information
effect: read
questions:
- What does the bare _info endpoint return about my cluster?
- Can I get all cluster info sections without naming a target?
instructions:
- text: Call _info with no target and show everything it returns.
- text: Get the untargeted cluster information summary.
method: generated
generated: '2026-09-26'