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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'